达梦数据库主备集群搭建
本文为达梦数据库主备集群的搭建步骤文档,以下搭建使用的是dm7版本,dm8版本搭建过程稍有改动,部分改动在文章中已提示
一:
在搭建数据守护系统前,应注意数据守护系统中各实例使用的 DM 服务器版本应一致,同时还应注意各实例所在主机的操作系统位数、大小端模式、时区及时间设置都应一致,以及使用同一个用户启动 DM 服务器和守护进程 dmwatcher,以免系统在运行时出现意想不到的错误。操作系统的防火墙要提前关闭,如果不能关闭则需要将文中用到的端口号加入到白名单中,以保证集群可以正常使用相应端口。
1 数据准备
配置数据守护之前,必须先同步实例数据,确保两者保持完全一致;主库可以是新初始化的数据,也可以是正在生产、使用中的数据。DM提供了两种方式初始化同步实例数据,数据文件拷贝以及备份还原方式。
不能使用分别初始化库的方法,原因如下:
(1) 每个库都有一个永久魔数(permenant_magic),主库传送日志时会判断这个值是否一样,确保来自同一个库,不同的库传送不了日志
(2) 由于 dminit 初始化数据库时,会生成随机密钥用于加密,每次生成的密钥都不相同,备库无法解析采用主库密钥加密的数据
对于新初始化的库,首次启动不允许使用 mount 方式,需要先正常启动并正常退出,然后才允许 mount 方式启动。
准备数据时,如果主库是新初始化的库,先正常启动并正常退出,然后再使用数据文件拷贝或者备份还原方式准备备库数据。
1.1 数据文件拷贝
如果搭建数据守护之前,数据库系统已经上线运行了,那么我们可以通过拷贝数据文件的方式实现主库和备库的数据同步。具体步骤包括:
- 正常关闭数据库
- 严格按照数据文件在主库上的分布,拷贝数据文件到备库的对应目录
- 如果数据文件统一存放在一个目录下,则直接拷贝整个目录即可
1.2 备份还原方式
用户也可以通过脱机备份、脱机还原的方式同步主库和备库数据,更详细的说明可以参考备份恢复相关文档。具体步骤包括:
- 正常关闭数据库
- 进行脱机备份
./dmrman CTLSTMT="BACKUP DATABASE '/dm/data/DAMENG/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/dm/data/BACKUP_FILE_01'"
- 拷贝备份文件到备库所在机器
- 执行脱机数据库还原与恢复
./dmrman CTLSTMT="RESTORE DATABASE '/dm/data/DAMENG/dm.ini' FROM BACKUPSET '/dm/data/BACKUP_FILE_01'"
./dmrman CTLSTMT="RECOVER DATABASE '/dm/data/DAMENG/dm.ini' FROM BACKUPSET '/dm/data/BACKUP_FILE_01'"
./dmrman CTLSTMT="RECOVER DATABASE '/dm/data/DAMENG/dm.ini' UPDATE DB_MAGIC"
另外备份文件中会记录原备份库的模式和 OGUID 信息,使用备份文件还原成功后,需要再根据实际配置情况修改数据库的模式和 OGUID 值。
如果备份集中记录的原备份库模式是 Primary,则还原后的库会一律改为Standby 模式,如果还原后的库是用作备库,则不需要再手动修改 Standby模式。
如果执行备份时,待备份的库是 Normal 模式,并且不能确定这个库一定作为主库使用,则对 Normal 模式的库必须使用脱机备份,不能使用联机备份方式,避免备份完成后,Normal 模式的库 LSN 有增长,又将其修改为 Standby 模式,而使用备份集还原后的库修改为 Primary 模式,备库数据比主库数据多,导致主备数据不一致的情况出现。
1.3 检查数据一致性
依次到每个实例上,切换到执行码目录/dm/bin,以 mount 方式启动数据库。
./dmserver /dm/data/DAMENG/dm.ini mount
启动命令行工具 DIsql,分别登录各个实例查询 LSN 值,如果主库和备库的 FILE_LSN和 CUR_LSN 值相同,可以确保数据完全一致。
SQL>select file_LSN, cur_LSN from v$rlog;
检查实例的永久魔数是否一致:
SQL>select permanent_magic;
确保 LSN 和永久魔数都一致的情况下,正常关闭各个实例,继续配置。
1.4 守护进程控制文件
对于故障场景中,某个全局守护类型的实例所在机器故障ÿ