注册
达梦数据库实时主备增加异步备库学习实践
培训园地/ 文章详情 /

达梦数据库实时主备增加异步备库学习实践

派拉蒙 2023/09/25 1171 0 0

前言

在实际达梦数据库维护中,有在已搭建实时主备架构再加一个异步备库场景,本文基于此场景进行学习实践。

说明:
本文是在已部署的实时主备测试环境增加一台机器部署异步备库进行的学习验证实践。

本次学习参考了《DM8数据守护与读写分离集群V4.0》手册中--【7.6 配置异步备库】章节。

已有实时主备(一主一备)环境部署请查看下面链接:
本文已有实时主备搭建步骤链接

1 集群规划

image.png

说明:
新增异步备库C机器实例名为GRP1_LOCAL_01,其他端口、目录等规划和已有主备库的A,B机器保持一致。

2 初始化C机器数据库环境

2.1 创建实例用户

使用操作系统root用户执行下面命令:

groupadd dinstall
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
passwd dmdba

2.2 创建数据库部署目录

使用操作系统root用户执行下面命令:

mkdir -p /opt/dmdbms
chown -R dmdba:dinstall /opt/dmdbms
chmod -R 755 /opt/dmdbms

2.3 修改实例用户资源限制

使用操作系统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

2.4 安装数据库软件

使用操作系统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

2.5 初始化C机实例

使用dmdba用户执行下面命令:

/opt/dmdbms/bin/dminit PATH=/opt/dmdbms/data/ INSTANCE_NAME=GRP1_LOCAL_01 PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048

2.6 主库脱机备份

如果实时主备守护环境已经处于运行状态,需要先正常退出主备库实例和守护进程。
停止主库进行使用DMRMAN进行脱机备份:

RMAN> BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FULL BACKUPSET '/opt/dmdbms/data/DAMENG/bak/BACKUP_FILE';

2.7 将主库备份数据库拷贝到C机器

使用dmdba用户执行下面命令:

scp -r /opt/dmdbms/data/DAMENG/bak/BACKUP_FILE dmdba@10.0.0.6:/opt/dmdbms/data/DAMENG/bak

2.8 C机器做数据库恢复

使用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"

3 配置主库GRP1_RT_01

3.1 配置dm.ini

在现有配置dm.ini的基础上,打开定时器配置,其他配置不变。

TIMER_INI 				= 1			  #配置有异步归档时,打开定时器,定时同步归档到异备库

3.2 配置dmmal.ini

在现有配置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

3.3 配置dmarch.ini

在现有配置dmarch.ini的基础上,增加异步归档的配置项。

vi dmarch.ini
[ARCHIVE_ASYNC] 
ARCH_TYPE = ASYNC #异步归档类型
ARCH_DEST = GRP1_LOCAL_01 #异步归档目标实例名
ARCH_TIMER_NAME = RT_TIMER #定时器名称,和 dmtimer.ini 中的名称一致 

3.4 配置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

4 配置备库GRP1_RT_02

主库上配置异步备库,备库上也需要增加相同的异步备库配置,保证备库在切换为主库后可以继续向同一个异步备库同步数据。

4.1 配置dm.ini

在现有配置dm.ini的基础上,打开定时器配置,其他配置不变。

TIMER_INI 				= 1			  #配置有异步归档时,打开定时器,定时同步归档到异备库

4.2 配置dmmal.ini

在现有配置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

4.3 配置dmarch.ini

在现有配置dmarch.ini的基础上,增加异步归档的配置项。

vi dmarch.ini
[ARCHIVE_ASYNC] 
ARCH_TYPE = ASYNC #异步归档类型
ARCH_DEST = GRP1_LOCAL_01 #异步归档目标实例名
ARCH_TIMER_NAME = RT_TIMER #定时器名称,和 dmtimer.ini 中的名称一致 

4.4 配置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

4.5 其他配置说明

将监视器配置部署到备库上面。
需要更新两个配置监视器配置文件:
配置文件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 #新增异步备库信息

5 配置异步备库GRP1_LOCAL_01

5.1 配置dm.ini

在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 次的日志发送信息

5.2 配置dmmal.ini

同一个守护进程组中,所有主备库必须使用相同的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

5.3 配置dmarch.ini

修改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

5.4 配置dmwatcher.ini

修改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 #命令行方式启动

5.5 启动异步备库

一定要以Mount方式启动数据库实例,否则系统启动时会重构回滚表空间,生成 Redo日志;并且,启动后应用可能连接到数据库实例进行操作,破坏主备库的数据一致性。数据守护配置结束后,守护进程会自动 Open 数据库。

su - dmdba
/opt/dmdbms/bin/dmserver /opt/dmdbms/data/DAMENG/dm.ini mount

5.6 设置OGUID和修改数据库模式

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);

5.7 注册实例和守护服务

/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

停止实例进程。

6 启动集群服务

6.1 主、实时备库、异步备库依次启动实例服务

主库启动实例服务

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

6.2 主、实时备库、异步备库依次启动守护服务

su - dmdba 
/opt/dmdbms/bin/DmWatcherServiceWatcher start

6.3 启动监视器

后台启动监视器:

su -  dmdba
/opt/dmdbms/bin/DmMonitorServiceMonitor start

前台启动监视器:

su -  dmdba
/opt/dmdbms/bin/dmmonitor /opt/dmdbms/bin/fqdmmonitor.ini

6.4 查看集群状态

/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】

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服