目录标题
- 达梦数据库单主转主备配置笔记
- 前期准备
- 服务器环境
- 数据库安装
- 磁盘空间
- 流程
- 流程图说明
- 详细步骤
- 1. 检查主库归档模式
- 2. 配置主库配置文件
- dm.ini 文件
- dmmal.ini 文件
- dmarch.ini 文件
- 3. 备份主库数据库
- 4. 备库配置
- 新建备库数据库
- 配置备库配置文件
- dm.ini 文件
- 复制主库的 dmmal.ini 和 dmarch.ini 文件
- 5. 恢复备库数据
- 6. 配置主备模式
- 主库
- 备库
- 7. 配置监视器
- 创建监视器配置文件 dmmonitor.ini
- 启动监视器
- 验证主备同步
- 注意事项
达梦数据库单主转主备配置笔记
达梦官方文档 数据守护系统构建
前期准备
安装前准备工作
服务器环境
-
准备至少两台服务器,一台作为主库服务器,另一台作为备库服务器。确保服务器硬件配置满足达梦数据库运行要求,例如有足够的 CPU、内存和磁盘 I/O 性能。
-
保证服务器之间网络连通且稳定,网络延迟应在可接受范围内。开放防火墙所需端口,如 5236(数据库监听)、5266(MAL 通信)、5216(守护进程通信)等。可使用
ping
和telnet
命令进行网络连通性测试。
ping <目标服务器 IP>
telnet <目标服务器 IP> <端口号>
数据库安装
- 在所有服务器上安装相同版本的达梦数据库,记录好安装目录,如
/dm8
。安装过程中可参考官方文档的安装指南,确保安装步骤正确。
磁盘空间
- 为每台服务器规划充足的磁盘空间,用于存储数据库文件、备份文件和日志文件。不同类型的文件建议存放在不同的磁盘分区,以提高 I/O 性能和数据安全性。例如,数据文件存放在数据盘,日志文件存放在日志盘,备份文件存放在备份盘。
流程
流程图说明
- 开始:整个流程的起始点。
- 前期配置
- 设置Kubeconfig:查找Kubeconfig文件路径,通过设置环境变量
export KUBECONFIG=/path/to/your/kubeconfig
来配置,最后使用kubectl config view
等命令验证是否生效。 - 准备数据库配置文件:编辑
dm.ini
文件,设置实例名、端口号等关键参数;创建dmmal.ini
文件用于主备库通信配置;创建dmarch.ini
文件用于归档配置。
- 设置Kubeconfig:查找Kubeconfig文件路径,通过设置环境变量
- 主库操作
- 检查数据库连接:通过
ps -ef | grep dmserver
查看数据库服务状态,若未运行则使用systemctl start dmdba.service
启动 ,检查连接配置,用telnet <数据库主机地址> 5236
测试网络连通性。 - 启动DmAPService:使用
systemctl start DmAPService
命令启动。 - 主库备份:启动
dmrman
工具,执行BACKUP DATABASE FULL TO backup_name BACKUPSET 'backup_path'
进行全量备份。 - 停止DmAPService:使用
systemctl stop DmAPService
命令停止。 - 启动主库dmwatcher:编辑
dmwatcher.ini
配置文件,然后使用./dmwatcher /dm8/dmwatcher.ini
启动。 - 连接主库数据库:使用
disql SYSDBA/密码
连接,若失败则排查防火墙和网络配置等问题。 - 检查Pod标签:使用
kubectl get pods --show-labels
查看。
- 检查数据库连接:通过
- 备库操作
- 初始化备库:使用
dminit
工具进行初始化。 - 复制配置文件:通过
scp
命令将主库的dm.ini
、dmmal.ini
和dmarch.ini
文件复制到备库相应位置。 - 恢复主库备份到备库:先将主库备份文件复制到备库,然后启动
dmrman
工具,依次执行恢复数据库、恢复归档日志和更新数据库魔数的命令。 - 更新备库GUID和模式:使用
disql
连接备库,执行命令更新OGUID
和将数据库模式设置为standby
。 - 启动备库dmwatcher:编辑配置文件后启动。
- 停止备库DmAPService:使用
systemctl stop DmAPService
命令停止。
- 初始化备库:使用
- 验证主备同步
- 在主库创建测试表并插入数据,在备库查询测试表,若同步失败则排查网络、配置文件和数据库日志等问题,成功则流程结束。
详细步骤
1. 检查主库归档模式
在进行模式转换前,需确保主库已开启归档模式,这样才能将事务日志同步到备库,保证数据一致性。
# 登录主库服务器
# 使用 disql 工具登录主库
disql SYSDBA/密码
# 在 disql 中查询归档模式
SELECT arch_mode FROM v$database;
若结果为 Y
,表示已开启归档模式;若为 N
,则按如下步骤开启:
-- 关闭数据库
SHUTDOWN IMMEDIATE;
-- 以 mount 方式启动数据库
STARTUP MOUNT;
-- 开启归档模式
ALTER DATABASE ARCHIVELOG;
-- 打开数据库
ALTER DATABASE OPEN;
可参考 达梦数据库归档 获取更多归档相关知识。
2. 配置主库配置文件
修改主库的相关配置文件,使主库能与备库进行通信并同步数据。
dm.ini 文件
ps -ef |grep ini
通常位于数据库安装目录下的 data/实例名
目录,进行如下修改:
INSTANCE_NAME = 主库实例名
PORT_NUM = 5236 # 数据库监听端口
DW_INACTIVE_INTERVAL = 60 # 守护进程检测间隔
ALTER_MODE_STATUS = 0 # 不允许在非 mount 状态下修改模式
ENABLE_OFFLINE_TS = 2 # 不允许离线表空间
MAL_INI = 1 # 开启 MAL 系统
ARCH_INI = 1 # 开启归档
修改完成后,可使用 cat
命令检查配置文件内容是否正确。
cat /dm8/data/实例名/dm.ini
dmmal.ini 文件
在数据库安装目录下创建该文件,配置如下:
[MAL_INST1]
MAL_INST_NAME = 主库实例名
MAL_HOST = 主库 IP 地址
MAL_PORT = 5266
MAL_INST_HOST = 主库 IP 地址
MAL_INST_PORT = 5236
MAL_DW_PORT = 5216
[MAL_INST2]
MAL_INST_NAME = 备库实例名
MAL_HOST = 备库 IP 地址
MAL_PORT = 5266
MAL_INST_HOST = 备库 IP 地址
MAL_INST_PORT = 5236
MAL_DW_PORT = 5216
注意确保 MAL_HOST
和 MAL_INST_HOST
填写正确的 IP 地址。
dmarch.ini 文件
同样在数据库安装目录下创建,配置如下:
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = 备库实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/arch # 本地归档路径
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 0
确保 ARCH_DEST
路径存在且有足够的磁盘空间。
3. 备份主库数据库
使用 dmrman
工具对主库数据进行全量备份,以便将其恢复到备库。
# 登录主库服务器
# 启动 dmrman 工具
./dmrman
# 在 dmrman 中执行全量备份命令
BACKUP DATABASE FULL TO 备份名 BACKUPSET '备份路径';
# 示例
BACKUP DATABASE FULL TO my_backup BACKUPSET '/dm8/backup/my_backup';
备份过程中可监控备份进度和磁盘空间使用情况。
检查备份集可用性
实操
runuser -l dmdba -c cd /opt/dmdbms/bin && ./dmrman CTLSTMT="BACKUP DATABASE '/opt/dmdbms/dmdata/DAMENG/dm.ini' FULL TO master_bak1 BACKUPSET '/opt/dmdbms/bak/master_bak1'
4. 备库配置
新建备库数据库
可使用达梦数据库的初始化工具 dminit
来创建备库数据库。
# 登录备库服务器
# 执行初始化命令
./dminit PATH=/dm8/data DB_NAME=备库数据库名 INSTANCE_NAME=备库实例名 PORT_NUM=5236
根据实际情况调整 PATH
、DB_NAME
和 INSTANCE_NAME
等参数。
配置备库配置文件
修改备库的相关配置文件,使其与主库配置相匹配。
dm.ini 文件
修改内容与主库类似,但实例名使用备库的。
INSTANCE_NAME = 备库实例名
PORT_NUM = 5236
DW_INACTIVE_INTERVAL = 60
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
复制主库的 dmmal.ini 和 dmarch.ini 文件
将主库的 dmmal.ini
和 dmarch.ini
文件复制到备库的相同目录下。
scp 主库服务器:/dm8/dmmal.ini /dm8/
scp 主库服务器:/dm8/dmarch.ini /dm8/
实操
5. 恢复备库数据
将主库的备份文件复制到备库服务器,然后使用 dmrman
工具进行数据恢复。
# 登录备库服务器
# 复制备份文件
scp 主库服务器:备份路径/* /dm8/backup/
# 启动 dmrman 工具
./dmrman
# 在 dmrman 中执行全量恢复命令
RESTORE DATABASE '/dm8/data/备库实例名/dm.ini' FROM BACKUPSET '备份路径';
# 示例
RESTORE DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/backup/my_backup';
# 执行恢复归档日志命令
RECOVER DATABASE '/dm8/data/备库实例名/dm.ini' WITH ARCHIVED LOG;
# 执行更新数据库魔数命令
RECOVER DATABASE '/dm8/data/备库实例名/dm.ini' UPDATE DB_MAGIC;
恢复过程中可能会耗时较长,需耐心等待。
实操
/bin/sh /opt/dmdbms/bin/DmAPService start
runuser -l dmdba -c cd /opt/dmdbms/bin && ./dmrman CTLSTMT="RESTORE DATABASE '/opt/dmdbms/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/opt/dmdbms/bak/master_bak1/'
runuser -l dmdba -c cd /opt/dmdbms/bin && ./dmrman CTLSTMT="RECOVER DATABASE '/opt/dmdbms/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/opt/dmdbms/bak/master_bak1/'
runuser -l dmdba -c cd /opt/dmdbms/bin && ./dmrman CTLSTMT="RECOVER DATABASE '/opt/dmdbms/dmdata/DAMENG/dm.ini' UPDATE DB_MAGIC"
6. 配置主备模式
主库
启动主库实例并将其切换到 open
状态。
# 启动主库实例
./dmserver /dm8/data/主库实例名/dm.ini mount
# 示例
./dmserver /dm8/data/DAMENG/dm.ini mount
# 使用 disql 登录主库
disql SYSDBA/密码
# 在 disql 中执行以下命令将主库切换到 open 状态
ALTER DATABASE OPEN;
备库
启动备库实例并将其切换到 standby
状态。
# 启动备库实例
./dmserver /dm8/data/备库实例名/dm.ini mount
# 示例
./dmserver /dm8/data/DAMENG/dm.ini mount
# 使用 disql 登录备库
disql SYSDBA/密码
# 在 disql 中执行以下命令将备库切换到 standby 状态
ALTER DATABASE STANDBY;
7. 配置监视器
监视器用于监控主备库的状态,确保主备模式正常运行。
创建监视器配置文件 dmmonitor.ini
内容如下:
MON_DW_CONFIRM = 1
MON_LOG_PATH = /dm8/log # 监视器日志路径
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0
[GRP1]
MON_INST_OWNER = GRP1
MON_INST_NAME = 主库实例名
MON_DW_IP = 主库 IP 地址:5216
[GRP1]
MON_INST_OWNER = GRP1
MON_INST_NAME = 备库实例名
MON_DW_IP = 备库 IP 地址:5216
启动监视器
./dmmonitor /dm8/dmmonitor.ini
验证主备同步
# 登录主库
disql SYSDBA/密码
# 在主库上创建一个测试表并插入数据
CREATE TABLE test_table (id INT, name VARCHAR(50));
INSERT INTO test_table VALUES (1, 'test');
COMMIT;
# 登录备库
disql SYSDBA/密码
# 在备库上查询测试表
SELECT * FROM test_table;
若能在备库上查询到主库插入的数据,表明主备同步配置成功。
注意事项
- 操作前务必备份好所有相关数据,防止数据丢失。可定期进行全量备份和增量备份。
- 确保主备库之间网络连通,防火墙允许相应端口通信。定期检查网络状态和防火墙配置。
- 仔细检查配置文件参数,避免因参数错误导致配置失败。配置修改后,可使用工具进行语法检查。
- 监控数据库运行状态和性能指标,如 CPU 使用率、内存使用率、磁盘 I/O 等,及时发现并处理异常情况。