看到问答中的问题,自己使用实验环境试了一下
打开防火墙,搭建同步流复制,备库报错无法连接主库,主库运行createsql 会hang住
关闭防火墙,重启数据库
发现报错:
The primary's identifier is6828124032031761769, the standby's identifier is 6828124031851099478.
经验证,
异步流复制也会出现相同报错,为了解决这个问题,我们先看看这个identifier是什么
关于identifier某度中查到如下定义:
Database system identifier(数据库系统标识符,内部提示为sysid),wal文件的头文件中会保存此项标识,用于唯一识别Database Cluster,启动、备份或者恢复等过程中会校验pg_control中的Database system identifier与wal文件中的sysid是否相同。
可以通过 pg_controldata $database_home确认sysid
经查证,主备库之前的database system identifier不同
由此可见,由于
防火墙原因,数据库流复制并未成功搭建,造成了主备库之间出现了日志分歧,从而导致流复制无法正常启动,出现以上报错信息
解决方案:重新在主备库之间进行备份恢复