流复制备库停机维护前检查步骤
文章目录
- 环境
- 文档用途
- 详细信息
环境
系统平台:银河麒麟 (鲲鹏)
版本:4.5.10
文档用途
未安装HAC集群软件,仅配置流复制主备架构。确保在停备库进行硬件更换或系统维护前,所有必要的检查项都已执行,避免因遗漏检查导致主库WAL日志被清理、复制中断无法恢复等问题
详细信息
一、检查授权是否到期(授权到期,会无法启动数据库)
4.5.7及之前版本:check_lic 4.5.8及新版本:hg_lic二、检查流复制状态
在主库执行查询:
SELECT application_name, -- 备库名称 state, -- streaming(正常) sync_state, -- sync(同步)| async(异步) sync_priority, -- 同步优先级 pg_size_pretty(pg_wal_lsn_diff(pg_current_wal_lsn(), replay_lsn)) AS replay_lag_size -- 延迟字节数 FROM pg_stat_replication; 正常状态判断: state = streaming:流复制正常 replay_lag_size 为 0 或较小值:延迟可接受 replay_lag_size 持续增长:备库追不上主库,需排查三、检查是否使用复制槽
(作用:有复制槽时,主库会保留备库需要的所有WAL文件。但需注意,若备库长期未重连或复制槽处于非活跃(active = f)状态,WAL文件将无限堆积,可能撑爆主库数据目录磁盘。建议在停机前评估主库WAL生成速率及可用磁盘空间,确保预留空间充足)
在主库执行查询:
SELECT slot_name, slot_type, active FROM pg_replication_slots; 如果输出无记录,未使用复制槽四、如果没有使用复制槽
主库执行手动创建复制槽: select * from pg_create_physical_replication_slot('node_b_slot'); 查看已创建的复制槽: SELECT slot_name, slot_type, active FROM pg_replication_slots; 注意:创建复制槽后,如果备库长期未重连,WAL会无限堆积,需监控磁盘空间五、检查同步提交模式
在主库执行查询:
SELECT application_name, -- 备库名称 sync_state, -- sync(同步)| async(异步) sync_priority -- 同步优先级 FROM pg_stat_replication; 如果 sync_state = sync:该备库为同步备库,备库停机会阻塞主库写操作 如果 sync_state = async:该备库为异步备库,停机不影响主库 如果为同步备库,停机前需临时修改为异步查看synchronous_standby_names配置参数并记录: show synchronous_standby_names; 清空同步备库列表(转为异步模式): ALTER SYSTEM SET synchronous_standby_names = ''; 重载配置: select pg_reload_conf(); 查看当前同步状态,sync_state 应变为 async: SELECT application_name, sync_state FROM pg_stat_replication;备库恢复后恢复同步模式
恢复原来的 synchronous_standby_names 配置: ALTER SYSTEM SET synchronous_standby_names = '原来的配置值'; 重载配置: SELECT pg_reload_conf();