流复制备库停机维护前检查步骤

文章目录

环境

系统平台:银河麒麟 (鲲鹏)

版本: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();
相关推荐
TDengine (老段)24 分钟前
TDengine 线程模型 — 网络、调度、执行
大数据·数据库·物联网·制造·时序数据库·tdengine·涛思数据
上学的小垃圾1 小时前
01-数据库系统概述
数据库
二进制漫游记2 小时前
FastAPI项目集成 Qdrant向量数据库+阿里云Embedding完整实战(工具封装+业务调用)
数据库·python·阿里云·embedding
2501_928996222 小时前
GPT-4o换DeepSeek迁移成本多少?中科热备解析API聚合平台技术账本
前端·数据库·人工智能
泡干脆面就番茄4 小时前
MySQL_子查询_分页查询与联合查询详解
数据库·mysql
devpotato5 小时前
缓存与数据库更新顺序不一致问题
java·数据库·redis
天若有情6735 小时前
Node+MySQL小型全栈笔记项目实战课程分享
数据库·笔记·mysql
wxwx_bscxy3226 小时前
基于springboot宠物领养系统的设计与实现
数据库·spring boot·后端·spring·宠物
九月要晚安6 小时前
达梦DW与AFC对比
数据库
实战派K8S&DB7 小时前
如何在内网配置 TiDB 数据库 Agent
数据库·人工智能·分布式·tidb