联系:手机/微信(+86 17813235971) QQ(107644445)
作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]
-l :设置下一个wal日志名
可以通过 $PGDATA/pg_wal 目录中查找数值最新的WAL段的文件名+1
[postgres@localhost pg_wal]$ ls 00000001000000000000008E archive_status -l 00000001000000000000008F
-m:设置下一个和最旧的事务ID
mxid1:下一个多事务ID的安全值可以通过在 $PGDATA/pg_multixact/offsets目录中查找数值最大的文件名+1,然后乘以65536(0×10000)来确定。
mxid2:最旧的事务ID的安全值可以通过$PGDATA/pg_multixact/offsets目录中数字最小的文件名+1,乘以65536(0×10000)来确定。文件名是十六进制
[postgres@localhost pg_wal]$ cd ../pg_multixact [postgres@localhost pg_multixact]$ ls members offsets [postgres@localhost pg_multixact]$ cd offsets/ [postgres@localhost offsets]$ ls 0000 -m 0x10000,0x10000
-O:设置下一个多事务处理偏移量
安全值可以通过在 $PGDATA/pg_multixact/members 目录中查找数值最大的文件名,+1,然后乘以52352(0xCC80)来确定。文件名为十六进制
[postgres@localhost members]$ ls 0000 -O 0xCC80
-x:设置下一个事务ID
安全值可以通过在$PGDATA/pg_xact目录中查找数值最大的文件名,+1,然后乘以1048576(0×100000)来确定。请注意,文件名是十六进制
[postgres@localhost pg_xact]$ ls -ltr total 504 -rw------- 1 postgres postgres 262144 Mar 8 01:53 0000 -rw------- 1 postgres postgres 253952 Mar 9 10:54 0001 -x 0x200000
删除postmaster.pid文件
如果正常关闭库,该文件会被自动删除,异常关闭的才需要处理
[postgres@localhost pg_wal]$ pg_resetwal -l 00000001000000000000008F -m 0x10000,0x10000 -O 0xCC80 -x 0x200000 -f $PGDATA pg_resetwal: error: lock file "postmaster.pid" exists pg_resetwal: hint: Is a server running? If not, delete the lock file and try again. [postgres@localhost pg_wal]$ cd ../ [postgres@localhost data]$ ls -l postmaster.pid -rw------- 1 postgres postgres 75 Mar 9 11:02 postmaster.pid [postgres@localhost data]$ rm -rf postmaster.pid
touch pg_control文件
[postgres@localhost data]$ pg_resetwal -l 00000001000000000000008F -m 0x10000,0x10000 -O 0xCC80 -x 0x200000 -f $PGDATA pg_resetwal: error: could not open file "global/pg_control" for reading: No such file or directory pg_resetwal: hint: If you are sure the data directory path is correct, execute touch global/pg_control and try again. [postgres@localhost data]$ touch global/pg_control
重建pg_control
[postgres@localhost data]$ pg_resetwal -l 00000001000000000000008F -m 0x10000,0x10000 -O 0xCC80 -x 0x200000 -f $PGDATA pg_resetwal: warning: pg_control exists but is broken or wrong version; ignoring it Write-ahead log reset [postgres@localhost data]$ pg_ctl start waiting for server to start.... done server started