PostgreSQL 12.3流复制断点恢复

1.问题描述:

两PostgreSQL节点采用异步流复制对数据进行同步,由于需要测试一些东西,对主库设备进行了频繁的重启操作,结果导致流复制中断,且无法自行恢复,主、备库开始产生数据差。

2.解决思路:

删除备库数据目录下所有文件,使用PostgreSQL自带的备份工具pg_basebackup,把主库数据库目录下所有文件拉取到备库数据目录下,然后直接启动备库服务即可。

3.处理过程:

3.1.查看主库状态,保证主库服务处于运行状态;

字符f表示该节点为主库,字符t表示备库,流复制中断后,角色并不会被影响;


PostgreSQL 12.3流复制断点恢复_第1张图片

3.2.关闭备库PostgreSQL服务,然后删除备库数据目录下所有文件


PostgreSQL 12.3流复制断点恢复_第2张图片

3.3.同步主库数据到本地数据目录下(流复制用户:repl,数据目录:/data/postgresql),同步时间根据数据量大小而定,我这个地方有200~300GB数据,一个小时就同步完了。


3.4.更改数据目录权限为700,直接启动备库PostgreSQL服务


PostgreSQL 12.3流复制断点恢复_第3张图片

3.5.登录到主库,查看流复制状态,发现数据同步已重新建立;


PostgreSQL 12.3流复制断点恢复_第4张图片

3.6.验证,在主库创建一个test_sync库,看是否会同步到备库;


PostgreSQL 12.3流复制断点恢复_第5张图片

3.7.登录备库后,发现新建的test_sync库已经同步过来,说明数据同步已恢复。


PostgreSQL 12.3流复制断点恢复_第6张图片

你可能感兴趣的:(PostgreSQL 12.3流复制断点恢复)