达梦datawatch集群级联备库搭建方法
1. 背景说明
从现有的dmwatch基础上添加新的级联备库方法,实时备库,异步备库等环境在达梦的手册中都有相应的步骤,无级联备库的搭建方法,所以此文章对添加方法进行描述,现有环境架构如下:

添加后的架构如下:

2. 级联备库添加步骤
2.1主数据库备份
为尽可能保证主数据库的可用性,使用在线备份方式进行备份
backup database backupset '/dbdata/dmdata/mesdb/backup/imesdb';
使用scp拷贝备份文件到级联备库所在主机,使用dmdba用户进行拷贝
cd /dbdata/dmdata/mesdb/backup/imedb
scp * xx.xx.xx.xx:/dbdata/dmdata/mesdb/backup/imedb
2.2主数据库配置文件修改
2.2.1 配置dm.ini
因为不需要配置从主库向级联备库进行日志传输,所以此文件不需要进行配置
2.2.2 配置dmmal.ini
在dmwatch的环境中,为保证对所有库的状态监控、控制等,需要在原来配置文件基础上添加级联备库的相应信息,如下:
[MAL_INST4] #级联备库
MAL_INST_NAME = IMESDB_LOCAL_02 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = xx.xx.xx.xx #MAL 系统监听 TCP 连接的 IP 地址,这里的地址是需要和其他已经配置好的环境中的MAL地址在同一网段
MAL_PORT = xxxxx #MAL 系统监听 TCP 连接的端口,按照规划的IP进行配置即可
MAL_INST_HOST = xx.xx.xx.xx #实例的对外服务 IP 地址
MAL_INST_PORT = xxxx #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = xxxxx #实例对应的守护进程监听 TCP 连接的端口,根据规划配置
MAL_INST_DW_PORT = xxxxx#实例监听守护进程 TCP 连接的端口,根据规划配置
2.2.3 配置dmarch.ini
因为不需要配置从主库向级联备库进行日志传输,所以此文件不需要进行配置向级联备库传输相关的同步参数
2.2.4 配置dmtimer.ini
此参数为向异步备库传输的时间周期控制参数,和级联备库传输无相关性,所以也无需进行配置。
2.3实时备库配置文件修改
2.3.1 配置dm.ini
因为不需要配置从实时备库向级联备库进行日志传输,所以此文件不需要进行配置
2.3.2配置dmmal.ini
和主库一致,如果配置了dmwatch集群,则需要添加级联备库的相关配置信息,如下:
[MAL_INST4] #级联备库
MAL_INST_NAME = IMESDB_LOCAL_02 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = xx.xx.xx.xx #MAL 系统监听 TCP 连接的 IP 地址,这里的地址是需要和其他已经配置好的环境中的MAL地址在同一网段
MAL_PORT = xxxxx #MAL 系统监听 TCP 连接的端口,按照规划的IP进行配置即可
MAL_INST_HOST = xx.xx.xx.xx #实例的对外服务 IP 地址
MAL_INST_PORT = xxxx #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = xxxxx #实例对应的守护进程监听 TCP 连接的端口,根据规划配置
MAL_INST_DW_PORT = xxxxx#实例监听守护进程 TCP 连接的端口,根据规划配置
2.3.3配置dmarch.ini
因为不需要配置从实时库向级联备库进行日志传输,所以此文件不需要进行配置向级联备库传输相关的同步参数
2.3.4配置dmtimer.ini
此参数为向异步备库传输的时间周期控制参数,和级联备库传输无相关性,所以也无需进行配置。
2.4异步备库配置文件修改
2.4.1 配置dm.ini
级联备库的数据主要是从异步备库上获取,所以此参数配置文件需要修改TIMER_INI参数为1
TIMER_INI = 1 #dmtimer.ini
2.4.2配置dmmal.ini
和主库一致,如果配置了dmwatch集群,则需要添加级联备库的相关配置信息,如下:
[MAL_INST4] #级联备库
MAL_INST_NAME = IMESDB_LOCAL_02 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = xx.xx.xx.xx #MAL 系统监听 TCP 连接的 IP 地址,这里的地址是需要和其他已经配置好的环境中的MAL地址在同一网段
MAL_PORT = xxxxx #MAL 系统监听 TCP 连接的端口,按照规划的IP进行配置即可
MAL_INST_HOST = xx.xx.xx.xx #实例的对外服务 IP 地址
MAL_INST_PORT = xxxx #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = xxxxx #实例对应的守护进程监听 TCP 连接的端口,根据规划配置
MAL_INST_DW_PORT = xxxxx#实例监听守护进程 TCP 连接的端口,根据规划配置
2.4.3配置dmarch.ini
级联备库的日志获取主要就是从异步备库获取,所以需要在此参数中配置传输到级联备库的参数,如下:
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dbdata/dmdata/mesdb/dmarch #本地归档文件存放路径
ARCH_FILE_SIZE = 1024 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位 Mb, 0 表示无限制,范围 1024~4294967294M
[ARCHIVE_ASYNC] #级联备库
ARCH_TYPE = ASYNC #异步归档类型
ARCH_DEST = IMESDB_LOCAL_02 #异步归档目标实例名
ARCH_TIMER_NAME = LOCAL_TIMER #定时器名称,和 dmtimer
2.4.4配置dmtimer.ini
此参数为异步备库向级联备库传输的时间周期控制参数,按需要进行配置,如下:
[LOCAL_TIMER] #和 dmarch.ini 中的 ARCH_TIMER_NAME 一致
TYPE = 2
FREQ_MONTH_WEEK_INTERVAL = 1
FREQ_SUB_INTERVAL = 0
FREQ_MINUTE_INTERVAL = 1 --当前版本最小周期,以分钟为单位,设置此参数后,其他周期参数,如START_TIME参数将不起作用。
START_TIME = 00:00:00
END_TIME = 00:00:00
DURING_START_DATE = 2016-02-11 17:36:09
DURING_END_DATE = 9999-12-31 23:59:59
NO_END_DATE_FLAG = 1
DESCRIBE = LOCAL TIMER
IS_VALID = 1
2.5级联备库配置文件修改
2.5.1 配置dm.ini
INSTANCE_NAME = IMESDB_LOCAL_02
PORT_NUM = 32144 #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统DM 数据守护与读写分离集群 V4.0
ARCH_INI = 1 #打开归档配置 不需要打开发送归档定时开关
RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息
2.5.2配置dmmal.ini
将主库的dmmai.ini文件拷贝过来即可,这里不再做描述。
2.5.3配置dmarch.ini
因为是级联备库,不需要做远程归档配置,只配置本地归档即可,如下:
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dbdata/dmdata/mesdb/dmarch #本地归档文件存放路径
ARCH_FILE_SIZE = 1024 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位 Mb, 0 表示无限制,范围 1024~4294967294M
2.6将主库的备份数据进行恢复
dmrman CTLSTMT="restore database '/dbdata/dmdata/mesdb/dm.ini' from backupset '/dbdata/dmdata/mesdb/backup'"

dmrman CTLSTMT="recover database '/dbdata/dmdata/mesdb/dm.ini' from backupset '/dbdata/dmdata/mesdb/backup'"

dmrman CTLSTMT="recover database '/dbdata/dmdata/mesdb/dm.ini' update db_magic"

2.7启动级联备库
以mount方式启动
./dmserver /dbdata/dmdata/mesdb/dm.ini mount
2.8配置OGUID并修改数据库模式
disql以SYSDBA用户连接处于mount状态的级联备库,并执行以下语句
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(xxxxx); --此处填写OGUID的值,此值在已经运行的dmwatch环境中,可以使用如下命令进行查询: select oguid from v$instance;
--查询结果如下:

alter database standby;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
到此,级联备库搭建完成,可以在主库中创建数据进行同步的测试。
当然,如果使用数据守护的自动切换功能,还需要在dmmoniter.ini中添加级联备库的相关IP信息,根据实际进行填写。
2.9测试所有备库的数据同步情况
2.9.1主库插入数据
使用以下SQL语句在主库中生成数据,并查看数据

2.9.2实时备库查询数据

2.9.3异步备库查询数据

2.9.4级联备库查询数据

3. 总结说明
在实际生产过程中,达梦数据库承担越来越重要的业务系统基础软件,业务对高可用架构也变化比较多,级联备库作为对生产环境无任何影响的解决方案,在后续项目实施过程中也会越来越多,其原理是依据异步备库产生的本地归档日志,每分钟向级联备库进行日志传输,以保证级联备库可以和主库保持异步的数据同步。
https://eco.dameng.com

浙公网安备 33010602011771号