文章目录环境症状问题原因解决方案环境系统平台N/A版本4.5.8,4.5.7症状hghac集群的备库因为服务器重启或其他某些原因导致hghac服务停止。在服务恢复后发现备库无法自动重新同步。集群状态如下[rootdyoa ~]# hghactl list Cluster: see-cluster (71457020xxxxxxxxxxxxxxxx) -------------------------------- | Member | Host | Role | State | TL | Lag in MB | Pending restart | ----------------------------------------------------------------------------- | hac1 | 192.168.10.1:5866 | Replica | running | | 3173 | * | | hac2 | 192.168.10.2:5866 | Leader | running | 84 | | * | -----------------------------------------------------------------------------备库上的相关日志2025-04-21 18:33:36.559 CST,,,16751,,68061f00.416f,1,,2025-04-21 18:33:36 CST,,0,日志,00000,在时间点: 5AA/BB000000 (时间安排84)启动日志的流操作,,,,,,,,, 2025-04-21 18:33:36.559 CST,,,16751,,68061f00.416f,2,,2025-04-21 18:33:36 CST,,0,致命错误,XX000,无法从WAL流中获得数据: 错误: 所要求的WAL段00000054000005AA000000BB已经被删除,,,,,,,,,问题原因备库hac服务停止后集群会自动从主库删除该备库节点对应的复制槽。此时假如备库停止过长时间会导致主库清理备库同步所需的WAL日志解决方案一 重做备库1.1 停止备库的hac服务systemctl stop hghac1.2 移除有问题备库的PGDATA找到hghac.yml中的data_dir路径配置此处为/data/highgo/datacd /data/highgo mv data data_bak注意假如数据目录采用软链接方式则务必保证hghac.yml中的data_dir路径可用且为空权限为700。1.3 启动hac服务重新同步systemctl start hghac等待备节点为running或Streaming且Lag in MB为0时表示同步成功。二 考虑调整wal保留参数配置wal_keep_segments和max_wal_size保留备库所需要的WAL文件。流复制或集群环境下wal_keep_segments如何确定根据备用服务器的复制延迟与PGDATA目录所在硬盘的容量综合设置。例如若需要至少能保证延迟 1 小时不清理WAL可以参考最近服务器业务高峰时期统计每小时生成的 WAL 段数。假设每小时产生1000个WAL日志可以按照如下配置1. 配置 wal_keep_segments1000 2. 配置 max_wal_size 1000*16MB16GB 3. min_wal_size: 通常保持max_wal_size*25%或者一半即可。所有数据库节点执行命令如下altersystemsetwal_keep_segments1000;altersystemsetmax_wal_size16GB;altersystemsetmin_wal_size4GB;selectpg_reload_conf();--reload conf 使参数生效
HAC集群切换后断档问题处理
文章目录环境症状问题原因解决方案环境系统平台N/A版本4.5.8,4.5.7症状hghac集群的备库因为服务器重启或其他某些原因导致hghac服务停止。在服务恢复后发现备库无法自动重新同步。集群状态如下[rootdyoa ~]# hghactl list Cluster: see-cluster (71457020xxxxxxxxxxxxxxxx) -------------------------------- | Member | Host | Role | State | TL | Lag in MB | Pending restart | ----------------------------------------------------------------------------- | hac1 | 192.168.10.1:5866 | Replica | running | | 3173 | * | | hac2 | 192.168.10.2:5866 | Leader | running | 84 | | * | -----------------------------------------------------------------------------备库上的相关日志2025-04-21 18:33:36.559 CST,,,16751,,68061f00.416f,1,,2025-04-21 18:33:36 CST,,0,日志,00000,在时间点: 5AA/BB000000 (时间安排84)启动日志的流操作,,,,,,,,, 2025-04-21 18:33:36.559 CST,,,16751,,68061f00.416f,2,,2025-04-21 18:33:36 CST,,0,致命错误,XX000,无法从WAL流中获得数据: 错误: 所要求的WAL段00000054000005AA000000BB已经被删除,,,,,,,,,问题原因备库hac服务停止后集群会自动从主库删除该备库节点对应的复制槽。此时假如备库停止过长时间会导致主库清理备库同步所需的WAL日志解决方案一 重做备库1.1 停止备库的hac服务systemctl stop hghac1.2 移除有问题备库的PGDATA找到hghac.yml中的data_dir路径配置此处为/data/highgo/datacd /data/highgo mv data data_bak注意假如数据目录采用软链接方式则务必保证hghac.yml中的data_dir路径可用且为空权限为700。1.3 启动hac服务重新同步systemctl start hghac等待备节点为running或Streaming且Lag in MB为0时表示同步成功。二 考虑调整wal保留参数配置wal_keep_segments和max_wal_size保留备库所需要的WAL文件。流复制或集群环境下wal_keep_segments如何确定根据备用服务器的复制延迟与PGDATA目录所在硬盘的容量综合设置。例如若需要至少能保证延迟 1 小时不清理WAL可以参考最近服务器业务高峰时期统计每小时生成的 WAL 段数。假设每小时产生1000个WAL日志可以按照如下配置1. 配置 wal_keep_segments1000 2. 配置 max_wal_size 1000*16MB16GB 3. min_wal_size: 通常保持max_wal_size*25%或者一半即可。所有数据库节点执行命令如下altersystemsetwal_keep_segments1000;altersystemsetmax_wal_size16GB;altersystemsetmin_wal_size4GB;selectpg_reload_conf();--reload conf 使参数生效