一.控制文件位置与大小
逻辑位置:pgpobal 表空间中
物理位置:$PGDATA/global/pg_control --pg_global表空间的物理位置就在$PGDATA/global文件夹下
物理大小:8K
二.存放的内容
1.数据库初始化的时候生成的永久化参数,无法更改的参数。
比如:版本号,数据库块的大小。
2.实例初始化参数文件(postgresql.conf)中的配置信息
3.可以更改的信息:比如检查点信息
三.控制文件的维护
1.控制文件的信息随时更新,如果发生检查点,备份,日志切换,则自动更新
2.初始化参数文件(postgres.conf)文件中的相关参数被修改,也会自动更新
3.数据库备份的时候会一起备份
4.该文件是二进制文件
四.控制文件重建
使用pg_resetwal工具。
模拟控制文件丢失:
1.寻找 -l 参数:
在pg_wal 目录下寻找最大的日志文件号,让它+1
如图中就变成:000000010000000000000002
2.寻找 -o 参数:
如图中,(0+1)*65536 再转换成16进制,再在末尾加上四个0 ------->0x1000000000。
3.寻找 -m参数:
直接最大编号+1 ,再加上四个0, 如图变成0x00010000,0x00010000。
4.寻找 -x参数
最大文件号+1,再在后面加五个0.
如图变成 0x00010000
5.touch一个新的控制文件
执行语句
pg_resetwal -l 000000010000000000000002 -O 0x1000000000 -m 0x00010000,0x00010000 -x 0x00010000 -f $PGDATA