1. 项目概述
达梦数据库作为国产数据库的重要代表,在企业级应用中扮演着关键角色。主备集群架构是保障业务连续性的核心方案,而随着业务增长,扩容备库成为DBA必须掌握的技能。本文将详细拆解达梦数据库主备集群中新增备库的完整流程,涵盖从前期准备到最终验证的全套操作指南。
在实际生产环境中,我们经常遇到这样的场景:原有主备集群的负载逐渐增加,需要新增备库来分担读压力;或是为了满足跨机房容灾需求,需要在新的机房部署备库。不同于初次搭建主备集群,新增备库操作需要特别关注对现有业务的影响控制,以及数据同步一致性的保障。
2. 环境准备与前置检查
2.1 硬件资源规划
新增备库的硬件配置应当与现有集群节点保持基本一致,特别是存储性能和内存容量。根据我们的实践经验,建议:
- CPU核心数不低于主库的70%
- 内存容量与主库保持相同
- 存储空间预留主库当前数据量3倍以上的空间
- 网络带宽建议10Gbps及以上
重要提示:存储性能不足是导致备库同步延迟的最常见原因,务必使用与主库同级别的SSD设备。
2.2 软件版本一致性检查
执行以下命令检查现有集群版本:
bash复制# 在主库执行
disql -S sysdba/sysdba@主库IP:端口 -e "select * from v$version;"
新备库安装的达梦数据库版本必须与主库完全一致,包括小版本号。我们曾遇到因版本差异导致的数据字典不一致问题,最终导致同步中断。
2.3 网络连通性测试
在主库和新增备库之间需要确保以下端口通畅:
- 达梦服务端口(默认5236)
- 集群通信端口(默认61141)
- SSH端口(22)
建议使用以下命令进行测试:
bash复制# 在备库执行
telnet 主库IP 5236
telnet 主库IP 61141
3. 数据初始化与参数配置
3.1 主库备份准备
推荐使用达梦的DMRMAN工具进行全量备份:
bash复制dmrman CTLSTMT="BACKUP DATABASE '/dmdata/DAMENG/dm.ini' FULL TO BACKUP_FILE BACKUPSET '/backup/full_backup'"
备份完成后,将备份文件传输到新备库服务器:
bash复制scp -r /backup/full_backup 新备库IP:/dmdata/backup/
3.2 备库参数文件配置
修改备库的dm.ini文件,关键参数如下:
ini复制INSTANCE_NAME = STANDBY2 # 必须唯一
PORT_NUM = 5237 # 避免与现有实例冲突
DW_PORT = 61142 # 集群通信端口
MAL_INI = 1 # 启用MAL系统
ARCH_INI = 1 # 启用归档
RLOG_SEND_APPLY_MON = 64 # 监控级别
特别注意:备库的数据库名(DB_NAME)必须与主库完全一致。
3.3 主库归档配置调整
如果主库尚未配置归档,需要添加以下参数:
ini复制[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmarch # 归档路径
ARCH_FILE_SIZE = 1024 # 单个归档文件大小(MB)
ARCH_SPACE_LIMIT = 10240 # 归档空间限制(MB)
修改后需要重启主库生效。
4. 集群配置与备库加入
4.1 MAL系统配置更新
在主库和所有现有备库的dm.ini中添加新备库的MAL配置:
ini复制[MAL_INST1]
MAL_INST_NAME = STANDBY2
MAL_HOST = 新备库IP
MAL_PORT = 61142
MAL_INST_HOST = 新备库IP
MAL_INST_PORT = 5237
4.2 备库数据恢复
在新备库执行恢复操作:
bash复制dmrman CTLSTMT="RESTORE DATABASE '/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/backup/full_backup'"
dmrman CTLSTMT="RECOVER DATABASE '/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/backup/full_backup'"
dmrman CTLSTMT="RECOVER DATABASE '/dmdata/DAMENG/dm.ini' UPDATE DB_MAGIC"
4.3 启动备库同步服务
在备库执行:
bash复制dmserver path=/dmdata/DAMENG/dm.ini mount
然后登录disql配置主库信息:
sql复制ALTER DATABASE ADD STANDBY '主库IP:5236';
ALTER DATABASE ENABLE STANDBY;
5. 验证与监控
5.1 同步状态检查
在主库执行:
sql复制SELECT NAME, STATUS, HAS_GAP FROM V$DATABASE_STANDBY;
正常状态应显示为"VALID",HAS_GAP为0。
5.2 延迟监控
推荐使用达梦自带的监控视图:
sql复制SELECT APPLY_LSN, APPLY_TIME FROM V$STANDBY_APPLY;
5.3 性能影响评估
扩容后需要特别关注:
- 主库网络带宽使用率
- 主库I/O负载变化
- 原有备库的同步延迟情况
6. 常见问题处理
6.1 同步中断恢复
如果出现同步中断,可以尝试:
- 检查网络连通性
- 验证归档文件是否完整
- 使用DMRMAN工具进行增量修复
6.2 备库启动失败
常见原因包括:
- 参数文件配置错误
- 数据目录权限问题
- 端口冲突
建议查看达梦日志文件:
bash复制cat /dmdata/DAMENG/dm_DMSERVER_*.log
6.3 性能调优建议
对于大型数据库,建议:
- 调整MAL_BUFFER_SIZE参数
- 优化归档文件清理策略
- 考虑使用并行应用技术
7. 维护建议与最佳实践
在实际运维中,我们总结了以下经验:
- 定期检查备库同步状态,建议设置监控告警
- 主库重大变更前,先在备库验证兼容性
- 备库扩容操作选择业务低峰期进行
- 保留足够的归档空间,至少能容纳24小时的归档量
- 新备库加入后,建议观察至少一个完整的业务周期再投入生产使用
对于特别关键的业务系统,可以考虑实施以下增强措施:
- 部署延迟监控告警系统
- 建立自动修复机制
- 定期进行故障切换演练