1. 项目背景与需求分析
达梦数据库作为国产数据库的代表产品之一,在企业级应用中越来越常见。主备部署架构是保障数据库高可用的基础方案,能够在主库故障时快速切换到备库,确保业务连续性。CentOS 7.9作为稳定可靠的Linux发行版,是许多企业首选的服务器操作系统。
在实际生产环境中,我们通常会遇到以下典型需求:
- 需要确保数据库服务7×24小时不间断运行
- 主库出现故障时能够自动或手动快速切换
- 备库数据与主库保持实时同步
- 系统资源占用合理,不影响其他服务运行
2. 环境准备与规划
2.1 硬件配置建议
对于生产环境部署,建议采用以下硬件配置:
- CPU:至少8核,推荐16核以上
- 内存:32GB起步,根据数据量适当增加
- 存储:采用RAID10阵列,SSD硬盘推荐
- 网络:千兆网卡起步,主备节点间建议使用独立网卡直连
2.2 操作系统配置
在CentOS 7.9上需要进行的系统级配置:
bash复制# 关闭SELinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
# 调整系统参数
echo "fs.file-max = 6815744" >> /etc/sysctl.conf
echo "kernel.sem = 250 32000 100 128" >> /etc/sysctl.conf
echo "kernel.shmmni = 4096" >> /etc/sysctl.conf
sysctl -p
# 创建专用用户组
groupadd dinstall
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
echo "dmdba:Dameng123" | chpasswd
2.3 存储规划建议
合理的存储规划对数据库性能至关重要:
code复制/data/dmdbms # 达梦软件安装目录
/data/dmdata # 数据库数据文件目录
/data/dmarch # 归档日志目录
/data/dmbak # 备份文件目录
3. 达梦数据库安装配置
3.1 软件包获取与安装
从达梦官网获取对应版本的安装包后,执行安装:
bash复制# 解压安装包
tar -zxvf dm8_20230112_x86_rh7_64.iso -C /data/
# 挂载ISO镜像
mount -o loop /data/dm8_20230112_x86_rh7_64.iso /mnt
# 使用图形界面安装
cd /mnt
./DMInstall.bin
注意:安装过程中需要选择"典型安装"模式,并指定安装目录为/data/dmdbms
3.2 数据库初始化
安装完成后进行数据库初始化:
bash复制cd /data/dmdbms/bin
./dminit path=/data/dmdata page_size=16 extent_size=32 case_sensitive=1
关键参数说明:
- page_size:页面大小,影响IO性能
- extent_size:扩展区大小,影响空间分配
- case_sensitive:是否区分大小写,建议设为1(区分)
3.3 服务注册与启动
创建并启动达梦数据库服务:
bash复制# 注册服务
./dmserver /data/dmdata/DAMENG/dm.ini
# 设置开机自启
cp /data/dmdbms/bin/DmServiceDMSERVER /etc/init.d/
chkconfig --add DmServiceDMSERVER
4. 主备集群配置
4.1 主库配置
在主库服务器上修改dm.ini配置文件:
ini复制[ARCHIVE_LOCAL]
ARCHIVE_DEST = /data/dmarch
ARCHIVE_FILE_SIZE = 1024
ARCHIVE_SPACE_LIMIT = 0
[REP]
REP_ALLOW_DUP = 0
REP_APP_NAME = DM_REP
REP_CONFIRM = 1
4.2 备库配置
在备库服务器上修改dm.ini配置文件:
ini复制[REP]
REP_APP_NAME = DM_REP
REP_CONFIRM = 1
REP_DW_PORT = 5236
REP_PORT = 5237
REP_RECV_PORT = 5238
4.3 主备同步配置
在主库上执行SQL配置同步:
sql复制-- 创建归档日志
ALTER DATABASE MOUNT;
ALTER DATABASE ADD ARCHIVELOG 'DEST=/data/dmarch, TYPE=LOCAL, FILE_SIZE=1024, SPACE_LIMIT=0';
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
-- 配置主库复制参数
SP_SET_PARA_VALUE(1, 'REP_APP_NAME', 'DM_REP');
SP_SET_PARA_VALUE(1, 'REP_CONFIRM', 1);
在备库上执行SQL配置同步:
sql复制-- 配置备库复制参数
SP_SET_PARA_VALUE(1, 'REP_APP_NAME', 'DM_REP');
SP_SET_PARA_VALUE(1, 'REP_CONFIRM', 1);
SP_SET_PARA_VALUE(1, 'REP_DW_PORT', 5236);
SP_SET_PARA_VALUE(1, 'REP_PORT', 5237);
SP_SET_PARA_VALUE(1, 'REP_RECV_PORT', 5238);
5. 主备切换与监控
5.1 手动切换流程
当需要手动切换主备角色时:
sql复制-- 在主库上执行
SP_REP_SWITCH('DM_REP');
-- 在备库上执行
SP_REP_START('DM_REP');
5.2 自动故障转移配置
配置监视器实现自动故障检测和切换:
ini复制[REP_MONITOR]
MONITOR_INSTNAME = DM_MONITOR
MONITOR_DW_PORT = 5239
MONITOR_PORT = 5240
5.3 状态监控命令
常用监控命令:
sql复制-- 查看复制状态
SELECT * FROM V$REP_STATUS;
-- 查看归档状态
SELECT * FROM V$ARCHIVED_LOG;
-- 查看主备延迟
SELECT * FROM V$REP_GAP;
6. 常见问题与解决方案
6.1 同步延迟问题
可能原因及解决方案:
- 网络带宽不足:主备间建议使用专用网络
- 主库负载过高:优化SQL,增加硬件资源
- 归档日志过大:调整ARCHIVE_FILE_SIZE参数
6.2 切换失败处理
排查步骤:
- 检查网络连通性
- 验证归档日志是否完整
- 检查备库状态是否为OPEN
- 查看达梦错误日志(/data/dmdbms/log)
6.3 性能优化建议
关键优化点:
- 调整共享内存参数
- 优化REDO日志大小
- 合理设置检查点间隔
- 配置适当的缓冲池大小
7. 备份与恢复策略
7.1 定期全量备份
使用达梦自带的备份工具:
bash复制./dmrman BACKUP DATABASE '/data/dmdata/DAMENG/dm.ini' FULL TO BACKUP_FILE1
BACKUPSET '/data/dmbak/full_backup'
7.2 增量备份方案
结合全量备份的增量备份策略:
bash复制./dmrman BACKUP DATABASE '/data/dmdata/DAMENG/dm.ini' INCREMENTAL
WITH BACKUPDIR '/data/dmbak/full_backup' TO BACKUP_FILE2
BACKUPSET '/data/dmbak/incr_backup'
7.3 时间点恢复
基于归档日志的恢复操作:
bash复制./dmrman RESTORE DATABASE '/data/dmdata/DAMENG/dm.ini' FROM BACKUPSET
'/data/dmbak/full_backup'
./dmrman RECOVER DATABASE '/data/dmdata/DAMENG/dm.ini' FROM BACKUPSET
'/data/dmbak/full_backup' WITH ARCHIVEDIR '/data/dmarch'
./dmrman RECOVER DATABASE '/data/dmdata/DAMENG/dm.ini' UPDATE DB_MAGIC
8. 安全加固措施
8.1 访问控制
建议的安全配置:
sql复制-- 修改默认SYSDBA密码
ALTER USER SYSDBA IDENTIFIED BY "NewComplexPwd123";
-- 创建最小权限用户
CREATE USER APP_USER IDENTIFIED BY "UserPwd456";
GRANT RESOURCE TO APP_USER;
8.2 审计配置
启用数据库审计功能:
sql复制-- 启用审计
SP_SET_PARA_VALUE(1, 'AUDIT_SYSTEM', 1);
-- 配置关键操作审计
AUDIT TABLE;
AUDIT SELECT TABLE, INSERT TABLE, DELETE TABLE, UPDATE TABLE BY ACCESS;
8.3 网络加密
配置SSL加密通信:
ini复制[SSL]
SSL_ENABLE = 1
SSL_KEY_PATH = /data/dmdbms/ssl/server.key
SSL_CERT_PATH = /data/dmdbms/ssl/server.crt
在实际部署过程中,我发现达梦数据库的主备配置虽然文档齐全,但有几个关键点需要特别注意:一是归档日志的空间监控,二是主备切换前的数据一致性检查,三是网络中断后的自动恢复机制。建议在主备部署完成后,定期进行故障切换演练,确保在真实故障发生时能够快速响应。