postgres 9.6.5 重建控制文件
新版本的pg_resetlog 的参数发生了变化,在网上之前找了一下德哥的文章看了一下重建控制文件的方法,之后根据实际的变化参数对比让大家更容易解决问题。
postgresql9.2
Options:
-l TLI,FILE,SEG force minimum WAL starting location for new transaction log
-l timelineid,fileid,seg
为新的事务日志指定最小的WAL起始位置,应该比当前存在于pg_xlog中任何一个WAL日志文件名都要大。名字以十六进制表示且分为三个部分,第一部分是时间线,一般保持该部分值不变。第三部分值不能超过255,即0xFF,如果是该值,则将第二部分加1,第三部分变为0
-m XID set next multitransaction ID
安全的设置值应该是由pg_multixact/offsets下最大的文件名,然后加1,再乘以65536得出。文件名和参数都应是十六进制的格式。如果pg_multixact/offsets目录下不存在任何数据,则得出-m 0x10000
pg_resetxlog -l 0x1,0x0,0x4 -x 0x000100000 -m 0x10000 -O 0x10000 -f $PGDATA
Postgresql 9.4 plus
Options:
-l XLOGFILE force minimum WAL starting location for new transaction log
-l XLOGFILE
指定下一个xlog日志的位置
-m MXID,MXID set next and oldest multitransaction ID
最新参数需要同时设置下一个事务和最老的事务ID
pg_resetxlog -l 000000010000000000000006 -x 0x100000 -m 0x10000,0x10000 -O 0x0 $PGDATA -f
参考:
https://yq.aliyun.com/articles/59113