DM实时主备添加或修改为异步备库
DM实时主备添加或修改为异步备库
说明
实际应用当中,如果数据库规模很大,并且对数据的实时性要求不是很严格,在成本允许的情况下,则可以配置多个异步备库用于分担统计报表等任务,或者将原先的实时备库改成异步备库。本文就是在测试环境中说明实时主备添加异步备机的方案。
服务器IP | 实例名称 | 数据库状态 |
---|---|---|
192.168.100.10 | GRP1_RT_01 | 实时主库 |
192.168.100.11 | GRP1_RT_02 | 实时备库 |
192.168.100.12 | GRP1_AS_01 | 异步备库 |
实施方案
1、安装数据库软件
在异步备库服务器上安装数据库软件,建议是与原实时主备的数据库版本一致,另在初始化数据库时参数也一致,可以查看原实时主备的相关参数:PAGE_SIE
、EXTENT_SIZE
、CASE_SENSITIVE
、CHARSET
和LENGTH_IN_CHAR
。
- 挂载安装盘
mount -o loop
- 典型安装数据库软件
./DMInstall.bin -i
- 初始化数据库实例
dminit path=/data/dmdata case_sensitive=1 charset=0 length_in_char=0
[NOTE]
初始化参数可以原实时主备的dminitlog文件,本测试环境对应的是1、0、0。
2、数据准备
-
备份实时主库
可以采用联机备份,或者主库允许关机时也可以采用脱机备份,本文测试环境采用脱机备份。
登录dmrman后:backup database '/data/dmdata/DAMENG/dm.ini' backupset '/data/dmdata/dmbak/backup_full_20240307';
[NOTE]
手动关闭实时主备环境时需要注意关闭的顺序:关闭备机守护进程》关闭主机守护进程》关闭实时主库》关闭实时备库。 -
将备份集传输到异步备库服务器
scp -r /data/dmdata/dmbak/backup_full_20240307 dmdba@192.168.100.12:/data/dmdata/dmbak
-
异步备机上做数据库还原
登录dmrman后:check backupset '/data/dmdata/dmbak/backup_full_20240307';
还原数据库:
restore database '/data/dmdata/DAMENG/dm.ini' from backupset '/data/dmdata/dmbak/backup_full_20240307';
恢复数据库:
recover database '/data/dmdata/DAMENG/dm.ini' from backupset '/data/dmdata/dmbak/backup_full_20240307';
更新DB_MAGIC:
recover database '/data/dmdata/DAMENG/dm.ini' update db_magic;
3、配置实时主库
-
修改dm.ini文件,配置异步备库时打开定时器;
TIMER_INI = 1
-
修改dmmal.ini文件,在原有的基础上添加异步备库的配置
[MAL_INST3] MAL_INST_NAME = GRP1_AS_01 MAL_HOST = 192.168.100.12 MAL_PORT = 61143 MAL_INST_HOST = 192.168.100.12 MAL_INST_PORT = 5236 MAL_DW_PORT = 52143 MAL_INST_DW_PORT = 33143
-
修改dmarch.ini文件,增加异步归档的配置
[ARCHIVE_ASYNC] ARCH_TYPE = ASYNC #异步归档类型 ARCH_DEST = GRP1_AS_01 #异步归档目标实例名 ARCH_TIMER_NAME = RT_TIMER #定时器名称,和dmtimer.ini中的名称一致
-
增加定时器的配置文件dmtimer.ini
[RT_TIMER] #和dmarch.ini中的ARCH_TIMER_NAME一致 TYPE = 2 FREQ_MONTH_WEEK_INTERVAL = 1 FREQ_SUB_INTERVAL = 0 FREQ_MINUTE_INTERVAL = 0 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 = RT TIMER IS_VALID = 1
此配置文件是值每晚的00:00:00从主库发送归档日志到异步备库,具体参数的说明可以参考官方文档《DM8数据守护与读写分离集群V4.0》。
4、配置实时备库
对原备库也要做对应的配置,以确保实时主备发生了故障切换后,备库仍可以发送归档日志到异步备机。
-
配置dm.ini文件,打开定时器
TIMER_INI = 1
-
修改dmmal.ini文件,在原有的基础上添加异步备库的配置
[MAL_INST3] MAL_INST_NAME = GRP1_AS_01 MAL_HOST = 192.168.100.12 MAL_PORT = 61143 MAL_INST_HOST = 192.168.100.12 MAL_INST_PORT = 5236 MAL_DW_PORT = 52143 MAL_INST_DW_PORT = 33143
-
修改dmarch.ini文件,增加异步归档的配置
[ARCHIVE_ASYNC] ARCH_TYPE = ASYNC #异步归档类型 ARCH_DEST = GRP1_AS_01 #异步归档目标实例名 ARCH_TIMER_NAME = RT_TIMER #定时器名称,和dmtimer.ini中的名称一致
-
增加定时器的配置文件dmtimer.ini
[RT_TIMER] #和dmarch.ini中的ARCH_TIMER_NAME一致 TYPE = 2 FREQ_MONTH_WEEK_INTERVAL = 1 FREQ_SUB_INTERVAL = 0 FREQ_MINUTE_INTERVAL = 0 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 = RT TIMER IS_VALID = 1
5、配置异步备库
-
配置dm.ini文件
#实例名,建议使用―组名_守护环境_序号‖的命名方式,总长度不能超过16 INSTANCE_NAME = GRP1_AS_01 PORT_NUM = 5236 #数据库实例监听端口 DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间 ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID ENABLE_OFFLINE_TS = 2 #不允许备库OFFLINE表空间 MAL_INI = 1 #打开MAL系统 ARCH_INI = 1 #打开归档配置 RLOG_SEND_APPLY_MON = 64 #统计最近64次的日志重演信息
-
配置dmmal.ini文件,在同一个集群中所有的dmmal.ini文件配置都相同,即直接复制实时主备环境的参数文件即可。
MAL_CHECK_INTERVAL = 10 #MAL链路检测时间间隔 MAL_CONN_FAIL_INTERVAL = 10 #判定MAL链路断开的时间 [MAL_INST1] MAL_INST_NAME = GRP1_RT_01 #实例名,和dm.ini中的INSTANCE_NAME一致 MAL_HOST = 192.168.100.10 #MAL系统监听TCP连接的IP地址 MAL_PORT = 61141 #MAL系统监听TCP连接的端口 MAL_INST_HOST = 192.168.100.10 #实例的对外服务IP地址 MAL_INST_PORT = 5236 #实例的对外服务端口,和dm.ini中的PORT_NUM一致 MAL_DW_PORT = 52141 #实例本地的守护进程监听TCP连接的端口 MAL_INST_DW_PORT = 33141 #实例监听守护进程TCP连接的端口 [MAL_INST2] MAL_INST_NAME = GRP1_RT_02 MAL_HOST = 192.168.100.11 MAL_PORT = 61142 MAL_INST_HOST = 192.168.100.11 MAL_INST_PORT = 5236 MAL_DW_PORT = 52142 MAL_INST_DW_PORT = 33142 [MAL_INST3] MAL_INST_NAME = GRP1_AS_01 MAL_HOST = 192.168.100.12 MAL_PORT = 61143 MAL_INST_HOST = 192.168.100.12 MAL_INST_PORT = 5236 MAL_DW_PORT = 52143 MAL_INST_DW_PORT = 33143
-
配置dmarch.ini文件,通常情况下作为异步备库不具备自动故障切换功能,只需要配置本地归档即可。
[ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL #本地归档类型 ARCH_DEST = /data/dmdata/arch #本地归档文件存放路径 ARCH_FILE_SIZE = 1024 #单位Mb,本地单个归档文件最大值 ARCH_SPACE_LIMIT = 5120 #单位Mb,0表示无限制,范围1024~2147483647M
-
配置dmwatcher.ini文件,异步备库无法做自动故障切换,DW_MODE配置为MANUAL即可,且模式为本地守护类型。
[GRP1] DW_TYPE = LOCAL #本地守护类型 DW_MODE = MANUAL #手动切换模式 DW_ERROR_TIME = 10 #远程守护进程故障认定时间 INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间 INST_ERROR_TIME = 10 #本地实例故障认定时间 INST_OGUID = 453331 #守护系统唯一OGUID值 INST_INI = /data/dmdata/DAMENG/dm.ini #dm.ini配置文件路径 INST_AUTO_RESTART = 1 #打开实例的自动启动功能 INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver #命令行方式启动
-
异步备库注册服务
注册数据库服务以mount方式启动:./dm_service_installer.sh -t dmserver -p AS -dm_ini /data/dmdata/DAMENG/dm.ini -m mount
注册守护进程服务:./dm_service_installer.sh -t dmwatcher -p AS -watcher_ini /data/dmdata/DAMENG/dmwatcher.ini
6、分别启动实时主备库和异步备库实例
以dmdba用户启动数据库实例
DmServiceRT1 start
DmServiceRT2 start
DmServiceAS start
7、修改异步备库的模式
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(453331);
ALTER DATABASE STANDBY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
8、分别启动实时主备库和异步备库守护进程
DmWatcherServiceRT1 start
DmWatcherServiceRT2 start
DmWatcherServiceAS start
9、配置监视器
-
实时主备环境一般是有配置监视器的,可以在其配置文件上新增异步备库的守护进程连接信息,然后通过监视器来查看整个环境的状态等信息。
-
启动监视器
dmmonitor /data/dmdata/DAMENG/dmmonitor.ini
-
通过
show arch send info GRP1_AS_01
命令可以查看归档日志发送到异步备库的情况
实时主备改异步备机
上述方案是在原有的实时主备环境中添加一台异步备库,若环境不允许额外添加一台,则需要将原有的实时备机修改为异步备机。
-
修改主机配置
主要还是修改dm.ini、dmmal.ini、dmwatcher.ini、dmarch.ini和配置dmtimer.ini文件。- 打开定时器;
- 守护进程改为本地守护模式以及手动切换;
- 归档中配置异步归档;
- 配置定时器的配置文件,使得主库在规定时间将归档日志传输给备库。
-
修改备机配置
在修改备机配置前先确认下原有的实时备机是否已经将数据完全同步,然后修改对应配置文件。
其余的过程与添加异步备库基本相同。
更多的内容可以登录达梦的社区进行查看:https://eco.dameng.com