七叶笔记 » 数据库 » postgresql 切换 log、xlog日志的实现

postgresql 切换 log、xlog日志的实现

切换xlog:

补充:postgresql流复制主从切换+resetxlog

主 192.168.3.46

从 192.168.3.47

现象:由于46主库的xlog日志达到7T以上,磁盘空间不足,需要通过pg_resetxlog命令清日志。

解决:

1.修改postgresql参数

2.pg_resetxlog命令清日志

操作过程:

1.停主机

2.从节点提升

以上两步操作完后,发现无法连接pgpool,有以下提示:

第3行是pgpool的健康检查health_check(配置文件没有设置定期检查),发现主库无法连接;

第4行是pgool触发故障转移,将从库提升为主库(配置文件没有配置自动故障转移,需命令pg_ctl premote手动切换);

但是pgpool中配置backend_flag1 = ‘DISALLOW_TO_FAILOVER' ,意思为不允许故障转移,因此通过psql -p 9999 -h 192.168.3.45 -U postgres 无法登录;将命令改为backend_flag0 = ‘ALLOW_TO_FAILOVER' 并reload后,可以登录。

此参数导致pgpool在主库无法连接的情况下,pgpool也无法登录,导致客户端无法连库的现象。

此时通过show pool_nodes命令可以看到主库(node id 为0)的状态为down。

3.清除原主节点xlog

7T空间,清理时间大约30min。

4.重新同步数据

46作为47的slave,重新同步数据

默认会等待主库checkpoint后同步,为避免长时间等待,在主控手动checkpoint。

同步完成后:

此时新的主从即可建立。

5.查看pgpool

此时发现 3.46在pgpool状态仍然为down,需通过pcp命令将失效的节点重新加入集群。

其中0为node_id。

注意:

pcp命令的密码读取的文件为pcp.conf,如果忘密码,可进行如下操作:

而不是通过命令pg_md5 -m -u postgres -p 生成密码,放在pool_passwd文件中,此文件密码为连接postgresql的密码,一定要注意。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持七叶笔记。如有错误或未考虑完全的地方,望不吝赐教。

相关文章