环境
系统平台:N/A
版本:4.5
症状
主库含有自定义表空间,手动还原备库后直接启动hac,备库日志号比主库多1。
1.主库创建好自定义表空间
2.备库创好对应路径进行还原
pg_basebackup -h x.x.32.128 -p 5866 -U sysdba -D /opt/HighGo4.5.6-see/data -Fp -P -Xs -R -v -l highgobak -T "/opt/HighGo4.5.6-see/data/tbs1"=/highgo/tbs1
3.启动hac后查询集群状态和流复制状态
4.比较两库的日志号
主库
备库
5.查看备库数据库日志报错
started streaming WAL from primary at 0/14000000 on timeline 5
could not receive data from WAL stream: ERROR: requested starting point 0/14000000 is ahead of the WAL flush position of this server 0/1301C5B0
问题原因
手动还原备库后直接使用hac接管会导致备库日志号多1
解决方案
- 手动还原备库
- 原备库完成后手动启动一次备库
- 查看备库日志 发现正常
- 在主库查询流复制状态正常
- 比较两库日志号一致
主库
备库 - pg_ctl stop 手动关闭备库后 启动hac
- 在主库查询状态 恢复正常
经验证发现,无论主库是否含有自定义表空间,备库手动pg_basebackup还原后直接使用hac服务启动接管数据库,均会出现备库日志号比主库多1的情况。
在手动pg_basebackup还原备库后,均需pg_ctl start手动启动数据库检查状态后,关闭数据库,再使用hac服务接管。