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

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

3.处理过程: 3.1.查看主库状态,保证主库服务处于运行状态; 字符f表示该节点为主库,字符t表示备库,流复制中断后,角色并不会被影响; 3.2.关闭备库PostgreSQL服务,然后删除备库数据目录下所有文件 3.3.同步主库数据到本地数据目录下(流复制用户:repl,数据目录:/data/postgresql),同步时间根据数据量大小而定,我这个地方有200~300GB数据,一个小时就同步完了。 3.4.更改数据目录权限为700,直接启动备库PostgreSQL服务 3.5.登录到主库,查看流复制状态,发现数据同步已重新建立; 3.6.验证,在主库创建一个test_sync库,看是否会同步到备库; 3.7.登录备库后,发现新建的test_sync库已经同步过来,说明数据同步已恢复。