在实际达梦数据库维护中,有在已搭建实时主备架构再加一个异步备库场景,本文基于此场景进行学习实践。
说明:
本文是在已部署的实时主备测试环境增加一台机器部署异步备库进行的学习验证实践。
本次学习参考了《DM8数据守护与读写分离集群V4.0》手册中--【7.6 配置异步备库】章节。
已有实时主备(一主一备)环境部署请查看下面链接:
本文已有实时主备搭建步骤链接
说明:
新增异步备库C机器实例名为GRP1_LOCAL_01,其他端口、目录等规划和已有主备库的A,B机器保持一致。
使用操作系统root用户执行下面命令:
groupadd dinstall
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
passwd dmdba
使用操作系统root用户执行下面命令:
mkdir -p /opt/dmdbms
chown -R dmdba:dinstall /opt/dmdbms
chmod -R 755 /opt/dmdbms
使用操作系统root用户执行下面命令:
echo 'dmdba soft nofile 65536' >>/etc/security/limits.conf
echo 'dmdba hard nofile 65536' >>/etc/security/limits.conf
echo 'dmdba soft nproc 10240' >>/etc/security/limits.conf
echo 'dmdba hard nproc 10240' >>/etc/security/limits.conf
使用操作系统root用户执行下面挂载命令:
mount -o loop /root/jiezhi/8.1.2.192/dm8_20230207_x86_rh6_64.iso /mnt
使用dmdba用户进行数据库安装:
su - dmdba
cd /mnt
./DMInstall.bin -i
Please select the installer's language (E/e:English C/c:Chinese) [E/e]:c
解压安装程序.........
欢迎使用达梦数据库安装程序
是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:n
是否设置时区? (Y/y:是 N/n:否) [Y/y]:y
设置时区:
[ 1]: GTM-12=日界线西
[ 2]: GTM-11=萨摩亚群岛
[ 3]: GTM-10=夏威夷
[ 4]: GTM-09=阿拉斯加
[ 5]: GTM-08=太平洋时间(美国和加拿大)
[ 6]: GTM-07=亚利桑那
[ 7]: GTM-06=中部时间(美国和加拿大)
[ 8]: GTM-05=东部部时间(美国和加拿大)
[ 9]: GTM-04=大西洋时间(美国和加拿大)
[10]: GTM-03=巴西利亚
[11]: GTM-02=中大西洋
[12]: GTM-01=亚速尔群岛
[13]: GTM=格林威治标准时间
[14]: GTM+01=萨拉热窝
[15]: GTM+02=开罗
[16]: GTM+03=莫斯科
[17]: GTM+04=阿布扎比
[18]: GTM+05=伊斯兰堡
[19]: GTM+06=达卡
[20]: GTM+07=曼谷,河内
[21]: GTM+08=中国标准时间
[22]: GTM+09=汉城
[23]: GTM+10=关岛
[24]: GTM+11=所罗门群岛
[25]: GTM+12=斐济
[26]: GTM+13=努库阿勒法
[27]: GTM+14=基里巴斯
请选择设置时区 [21]:21
安装类型:
1 典型安装
2 服务器
3 客户端
4 自定义
请选择安装类型的数字序号 [1 典型安装]:1
所需空间: 1670M
请选择安装目录 [/home/dmdba/dmdbms]:/opt/dmdbms
可用空间: 25G
是否确认安装路径(/opt/dmdbms)? (Y/y:是 N/n:否) [Y/y]:y
安装前小结
安装位置: /opt/192
所需空间: 1670M
可用空间: 25G
版本信息:
有效日期:
安装类型: 典型安装
是否确认安装? (Y/y:是 N/n:否):y
配置文件/etc/dm_svc.conf已存在,是否进行替换? (Y/y,N/n) [Y/y]:n
2023-08-30 22:10:25
[INFO] 安装达梦数据库...
2023-08-30 22:10:26
[INFO] 安装 基础 模块...
2023-08-30 22:10:27
[INFO] 安装 服务器 模块...
2023-08-30 22:10:28
[INFO] 安装 客户端 模块...
2023-08-30 22:10:28
[INFO] 安装 驱动 模块...
2023-08-30 22:10:28
[INFO] 安装 手册 模块...
2023-08-30 22:10:28
[INFO] 安装 服务 模块...
2023-08-30 22:10:31
[INFO] 移动日志文件。
2023-08-30 22:10:31
[INFO] 安装达梦数据库完成。
root系统用户执行下面命令注册服务:
sh /opt/dmdbms/script/root/root_installer.sh
使用dmdba用户执行下面命令:
/opt/dmdbms/bin/dminit PATH=/opt/dmdbms/data/ INSTANCE_NAME=GRP1_LOCAL_01 PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048
如果实时主备守护环境已经处于运行状态,需要先正常退出主备库实例和守护进程。
停止主库进行使用DMRMAN进行脱机备份:
RMAN> BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FULL BACKUPSET '/opt/dmdbms/data/DAMENG/bak/BACKUP_FILE';
使用dmdba用户执行下面命令:
scp -r /opt/dmdbms/data/DAMENG/bak/BACKUP_FILE dmdba@10.0.0.6:/opt/dmdbms/data/DAMENG/bak
使用dmdba用户将主库备份的数据进行恢复:
/opt/dmdbms/bin/dmrman CTLSTMT="RESTORE DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/opt/dmdbms/data/DAMENG/bak/BACKUP_FILE'"
/opt/dmdbms/bin/dmrman CTLSTMT="RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/opt/dmdbms/data/DAMENG/bak/BACKUP_FILE'"
/opt/dmdbms/bin/dmrman CTLSTMT="RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' UPDATE DB_MAGIC"
在现有配置dm.ini的基础上,打开定时器配置,其他配置不变。
TIMER_INI = 1 #配置有异步归档时,打开定时器,定时同步归档到异备库
在现有配置dmmal.ini的基础上,增加异步备库GRP1_LOCAL_01的MAL配置项。
vi dmmal.ini
##新增异步实例信息
[MAL_INST3]
MAL_INST_NAME = GRP1_LOCAL_01
MAL_HOST = 10.0.0.6
MAL_PORT = 5336
MAL_INST_HOST = 117.89.85.74
MAL_INST_PORT = 5236
MAL_DW_PORT = 5436
MAL_INST_DW_PORT = 5536
在现有配置dmarch.ini的基础上,增加异步归档的配置项。
vi dmarch.ini
[ARCHIVE_ASYNC]
ARCH_TYPE = ASYNC #异步归档类型
ARCH_DEST = GRP1_LOCAL_01 #异步归档目标实例名
ARCH_TIMER_NAME = RT_TIMER #定时器名称,和 dmtimer.ini 中的名称一致
配置dmtimer.ini,用于定时触发实例发送归档日志到异步备库。
下面示例中定时器配置为每天00:00:00触发主库发送归档日志到异步备库,可以根据实际情况再做调整。
vi 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 = 2023-08-20 17:36:09
DURING_END_DATE = 9999-12-31 23:59:59
NO_END_DATE_FLAG = 1
DESCRIBE = RT TIMER
IS_VALID = 1
主库上配置异步备库,备库上也需要增加相同的异步备库配置,保证备库在切换为主库后可以继续向同一个异步备库同步数据。
在现有配置dm.ini的基础上,打开定时器配置,其他配置不变。
TIMER_INI = 1 #配置有异步归档时,打开定时器,定时同步归档到异备库
在现有配置dmmal.ini的基础上,增加异步备库GRP1_LOCAL_01的MAL配置项。
vi dmmal.ini
##新增异步实例信息
[MAL_INST3]
MAL_INST_NAME = GRP1_LOCAL_01
MAL_HOST = 10.0.0.6
MAL_PORT = 5336
MAL_INST_HOST = 117.89.85.74
MAL_INST_PORT = 5236
MAL_DW_PORT = 5436
MAL_INST_DW_PORT = 5536
在现有配置dmarch.ini的基础上,增加异步归档的配置项。
vi dmarch.ini
[ARCHIVE_ASYNC]
ARCH_TYPE = ASYNC #异步归档类型
ARCH_DEST = GRP1_LOCAL_01 #异步归档目标实例名
ARCH_TIMER_NAME = RT_TIMER #定时器名称,和 dmtimer.ini 中的名称一致
配置dmtimer.ini用于备库切换为主库后,定时触发实例发送归档日志到异步备库。下面示例中定时器配置为每天 00:00:00 触发主库发送归档日志到异步备库,可以根据实际情况再做调整。
vi 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 = 2023-08-20 17:36:09
DURING_END_DATE = 9999-12-31 23:59:59
NO_END_DATE_FLAG = 1
DESCRIBE = RT TIMER
IS_VALID = 1
将监视器配置部署到备库上面。
需要更新两个配置监视器配置文件:
配置文件dmmonitor.ini用于后台启动监视服务,做主备库故障自动切换使用:
vi dmmonitor.ini
MON_DW_CONFIRM = 1 #0:非确认(故障手切) 1:确认(故障自切)
MON_LOG_PATH = /opt/dmdbms/log2 #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 512 #单个日志大小,单位 MB
MON_LOG_SPACE_LIMIT = 2048 #日志上限,单位 MB
[GRP1]
MON_INST_OGUID = 45331 #组 GRP1 的唯一 OGUID 值
MON_DW_IP = 10.0.0.5:5436 #IP 对应 MAL_HOST,PORT 对应 MAL_DW_PORT
MON_DW_IP = 10.0.0.7:5436
MON_DW_IP = 10.0.0.6:5436 #新增异步备库信息
配置文件fqdmmonitor.ini用于前台启动监视器,方便平时集群状态查看:
vi fqdmmonitor.ini
MON_DW_CONFIRM = 0 #0:非确认(故障手切) 1:确认(故障自切)
MON_LOG_PATH = /opt/dmdbms/log2 #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 512 #单个日志大小,单位 MB
MON_LOG_SPACE_LIMIT = 2048 #日志上限,单位 MB
[GRP1]
MON_INST_OGUID = 45331 #组 GRP1 的唯一 OGUID 值
MON_DW_IP = 10.0.0.5:5436 #IP 对应 MAL_HOST,PORT 对应 MAL_DW_PORT
MON_DW_IP = 10.0.0.7:5436
MON_DW_IP = 10.0.0.6:5436 #新增异步备库信息
在C机器上配置备库的实例名为GRP1_LOCAL_01,dm.ini参数修改如下:
根据以下内容修改dm.ini文件:
INSTANCE_NAME = GRP1_LOCAL_01 #实例名,建议使用_组名_守护环境_序号的命名方式,总长度不能超过16
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的dmmal.ini文件到本地的/dm/data/DAMENG/目录中。
MAL_CHECK_INTERVAL = 10 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 10 #判定 MAL 链路断开的时间
MAL_TEMP_PATH = /opt/dmdbms/data/malpath/ #临时文件目录
MAL_BUF_SIZE = 512 #单个 MAL 缓存大小,单位 MB
MAL_SYS_BUF_SIZE = 2048 #MAL 总大小限制,单位 MB
MAL_COMPRESS_LEVEL = 0 #MAL 消息压缩等级,0 表示不压缩
[MAL_INST1]
MAL_INST_NAME = GRP1_RT_01 #实例名,和 dm.ini 的 INSTANCE_NAME 一致
MAL_HOST = 10.0.0.5 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 5336 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 221.229.103.202 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #实例对外服务端口,和 dm.ini 的 PORT_NUM 一致
MAL_DW_PORT = 5436 #实例对应的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 5536 #实例监听守护进程 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME = GRP1_RT_02
MAL_HOST = 10.0.0.7
MAL_PORT = 5336
MAL_INST_HOST = 221.229.107.225
MAL_INST_PORT = 5236
MAL_DW_PORT = 5436
MAL_INST_DW_PORT = 5536
##新增异步实例信息
[MAL_INST3]
MAL_INST_NAME = GRP1_LOCAL_01
MAL_HOST = 10.0.0.6
MAL_PORT = 5336
MAL_INST_HOST = 117.89.85.74
MAL_INST_PORT = 5236
MAL_DW_PORT = 5436
MAL_INST_DW_PORT = 5536
修改dmarch.ini,配置本地归档。
vi dmarch.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /opt/dmdbms/data/DAMENG/arch #本地归档文件路径
ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位 Mb,0 表示无限制,范围 1024~4294967294M
修改dmwatcher.ini配置守护进程,配置为本地守护类型,异步备库不具备故障自动切换等功能,DW_MODE配置并不起作用,此处配置为MANUAL即可。
vi dmwatcher.ini
[GRP1]
DW_TYPE = LOCAL #本地守护类型
DW_MODE = MANUAL #故障手动切换模式
DW_ERROR_TIME = 20 #远程守护进程故障认定时间
INST_ERROR_TIME = 20 #本地实例故障认定时间
INST_OGUID = 45331 #守护系统唯一 OGUID 值
INST_INI = /opt/dmdbms/data/DAMENG/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm/bin/dmserver #命令行方式启动
一定要以Mount方式启动数据库实例,否则系统启动时会重构回滚表空间,生成 Redo日志;并且,启动后应用可能连接到数据库实例进行操作,破坏主备库的数据一致性。数据守护配置结束后,守护进程会自动 Open 数据库。
su - dmdba
/opt/dmdbms/bin/dmserver /opt/dmdbms/data/DAMENG/dm.ini mount
su - dmdba
disql SYSDBA/SYSDBA
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(45331);
alter database standby;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
/opt/dmdbms/script/root/dm_service_installer.sh -t dmserver -p GRP1_LOCAL_01 -dm_ini /opt/dmdbms/data/DAMENG/dm.ini -m mount
/opt/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /opt/dmdbms/data/DAMENG/dmwatcher.ini
停止实例进程。
主库启动实例服务
su - dmdba
/opt/dmdbms/bin/DmServiceGRP1_RT_01 start
实时备库启动实例服务
su - dmdba
/opt/dmdbms/bin/DmServiceGRP1_RT_02 start
异步备库启动实例服务
su - dmdba
/opt/dmdbms/bin/DmServiceGRP1_LOCAL_01 start
su - dmdba
/opt/dmdbms/bin/DmWatcherServiceWatcher start
后台启动监视器:
su - dmdba
/opt/dmdbms/bin/DmMonitorServiceMonitor start
前台启动监视器:
su - dmdba
/opt/dmdbms/bin/dmmonitor /opt/dmdbms/bin/fqdmmonitor.ini
/opt/dmdbms/bin/dmmonitor /opt/dmdbms/bin/fqdmmonitor.ini
show
2023-08-29 23:36:35
#================================================================================#
GROUP OGUID MON_CONFIRM MODE MPP_FLAG
GRP1 45331 FALSE AUTO FALSE
<<DATABASE GLOBAL INFO:>>
DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
10.0.0.5 5436 2023-08-29 23:36:34 GLOBAL VALID OPEN GRP1_RT_01 OK 1 1 OPEN PRIMARY DSC_OPEN REALTIME VALID
EP INFO:
INST_IP INST_PORT INST_OK INAME ISTATUS IMODE DSC_SEQNO DSC_CTL_NODE RTYPE RSTAT FSEQ FLSN CSEQ CLSN DW_STAT_FLAG
221.229.103.202 5236 OK GRP1_RT_01 OPEN PRIMARY 0 0 REALTIME VALID 1153069 1199456 1153070 1199457 NONE
<<DATABASE GLOBAL INFO:>>
DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
10.0.0.7 5436 2023-08-29 23:36:34 GLOBAL VALID OPEN GRP1_RT_02 OK 1 1 OPEN STANDBY DSC_OPEN REALTIME VALID
EP INFO:
INST_IP INST_PORT INST_OK INAME ISTATUS IMODE DSC_SEQNO DSC_CTL_NODE RTYPE RSTAT FSEQ FLSN CSEQ CLSN DW_STAT_FLAG
221.229.107.225 5236 OK GRP1_RT_02 OPEN STANDBY 0 0 REALTIME VALID 976983 1199456 976983 1199456 NONE
DATABASE(GRP1_RT_02) APPLY INFO FROM (GRP1_RT_01), REDOS_PARALLEL_NUM (1), WAIT_APPLY[FALSE]:
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[1153069, 1153069, 1153070], (RLSN, SLSN, KLSN)[1199456, 1199456, 1199457], N_TSK[0], TSK_MEM_USE[512]
REDO_LSN_ARR: (1199456)
ASYNC SOURCE INSTANCE: GRP1_LOCAL_01
<<DATABASE GLOBAL INFO:>>
DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
10.0.0.6 5436 2023-08-29 23:36:34 LOCAL VALID OPEN GRP1_LOCAL_01 OK 1 1 OPEN STANDBY DSC_OPEN NONE NULL
EP INFO:
INST_IP INST_PORT INST_OK INAME ISTATUS IMODE DSC_SEQNO DSC_CTL_NODE RTYPE RSTAT FSEQ FLSN CSEQ CLSN DW_STAT_FLAG
117.89.85.74 5236 OK GRP1_LOCAL_01 OPEN STANDBY 0 0 NONE NULL 1153004 1199226 1153004 1199226 NONE
DATABASE(GRP1_LOCAL_01) APPLY INFO FROM (GRP1_RT_01), REDOS_PARALLEL_NUM (1), ARCH_SEND_UNTIL_TIME[NONE], APPLY_UNTIL_TIME[FALSE]:
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[1153004, 1153004, 1153004], (RLSN, SLSN, KLSN)[1199226, 1199226, 1199226], N_TSK[0], TSK_MEM_USE[0]
REDO_LSN_ARR: (1199226)
通过show命令查看异步备库已经成功加入当前主备守护集群,形成一主、一实时备库、一异步备库。
实时主备添加异步备库注意的配置项有:
主库、实时备库:
1.打开定时器
2.dmarch.ini增加异步备库【ARCHIVE_ASYNC】归档信息
3.dmmal.ini增加异步备库实例信息
4.监视器增加异步备库ip和端口信息
异步备库:
1.dmarch.ini配置为本地归档
2.dmwatcher.ini配置为本地守护【DW_TYPE = LOCAL】,切换配置为手动切换【DW_MODE = MANUAL】
文章
阅读量
获赞