达梦数据库级联备库灾备方案

达梦数据库级联备库灾备方案

概述

本篇文档主要是基于双机房环境下,一主一实时备库一订阅备库一级联订阅备库四节点架构的环境搭建。

环境搭建

架构图

在这里插入图片描述

环境信息

主库A备库B订阅备库CC级联订阅备D监视器
ip192.168.43.132192.168.43.133192.168.43.135192.168.43.134192.168.43.135
INSTANCE_NAMEDMSERVER1DMSERVER2GRP1_LOCAL_01SUBSCRIBE2
PORT_NUM5236523652365237
MAL_INST_PORT5236523652365237
MAL_INST_DW_PORT45121451013314333144
MAL_DW_PORT65121651015214352144
MAL_PORT55121551016114361144
软件安装路径/home/dmdba/dmdbms/home/dmdba/dmdbms/home/dmdba/dmdbms/home/dmdba/dmdbms/home/dmdba/dmdbms
数据库实例路径/home/dmdba/dmdata/home/dmdba/dmdata/home/dmdba/dmdata/home/dmdba/dmdata/home/dmdba/dmdata
DB_NAMEDAMENGDAMENGDAMENGDMTEST
Oguid453331

搭建步骤

搭建实时主备A、B(手动切换)

这里搭好实时主备后,主库做一个全库备份拷贝到C和D服务器上。

搭建订阅备库C及级联订阅备库D

搭建订阅备库C

配置/etc/dm_svc.conf

这里配置服务名中login_mode为3,这样订阅备库C会优先从实时备库中同步数据,减少对主库的影响,但同时会产生一定的数据差。

TIME_ZONE=(480)

LANGUAGE=(CN)

GRP1=(192.168.43.132:5236,192.168.43.133:5236)

[GRP1]

TIME_ZONE=(+480)

LOGIN_MODE=(3) ##优先连接 STANDBY 模式的库,PRIMARY 模式次之,最后选择 NORMAL 模式

SWITCH_TIME=(3)

SWITCH_INTERVAL=(1000)

初始化C库,并修改配置文件

参照达梦单机安装手册安装C库

%E8%BE%BE%E6%A2%A6%E6%95%B0%E6%8D%AE%E5%BA%93%E5%BC%82%E5%9C%B0%E7%81%BE%E5%A4%87%E8%AE%BE%E8%AE%A1%E6%96%B9%E6%A1%88%20299be6873b86456bb7d3e06a8662c30b/image4.emf

#使用A库的备份对C库进行还原

restore database ‘/home/dmdba/dmdata/DAMENG/dm.ini’ from backupset ‘/home/dmdba/fullbak0428’;

recover database ‘/home/dmdba/dmdata/DAMENG/dm.ini’ from backupset ‘/home/dmdba/fullbak0428’;

recover database ‘/home/dmdba/dmdata/DAMENG/dm.ini’ update db_magic;

配置dm.ini,开启arch_ini和TIMER_INI

#配置有订阅归档时,打开定时器,定时同步归档到订阅备库

INSTANCE_NAME = GRP1_LOCAL_01

PORT_NUM = 5236

MAL_INI = 1 #dmmal.ini

ARCH_INI = 1 #dmarch.ini

TIMER_INI = 1 #dmtimer.ini

配置dmarch.ini

订阅备库配置本地归档和订阅归档。

订阅备库通过在 ARCH_DEST 中配置一个 disql 登录串来指定源库。

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL

ARCH_DEST = /home/dmdba/dmdata/arch

ARCH_FILE_SIZE = 2048

ARCH_SPACE_LIMIT = 20480

ARCH_FLUSH_BUF_SIZE = 0

ARCH_HANG_FLAG = 1

[ARCHIVE_SUBSCRIBE1]

ARCH_TYPE = SUBSCRIBE

ARCH_SUBSCRIBE_MODE = 3

ARCH_DEST = SYSDBA/SYSDBA@GRP1

ARCH_TIMER_NAME = SUBSCRIBE_TIMER

ARCH_THRESHOLD_PER_SECOND = 0

ARCH_SEND_DELAY = 0

配置dmtimer.ini

订阅备库需要开启定时器。

下面示例中定时器配置为每天每10s 触发订阅备库获取源库的归档日志,可以根据实际情况再做调整。

#dm.ini

TIMER_TRIG_CHECK_INTERVAL = 1 #设置服务器端每1秒检查触发器

#dmtimer.ini

[SUBSCRIBE_TIMER] #和 dmarch.ini 中的 ARCH_TIMER_NAME 一致

TYPE= 10

FREQ_MONTH_WEEK_INTERVAL=

FREQ_SUB_INTERVAL=

FREQ_MINUTE_INTERVAL=

REPEAT_INTERVAL= FREQ=SECONDLY;INTERVAL=10 #每10秒触发一次C库向源库获取归档并重演

START_TIME=

END_TIME=

DURING_START_DATE=

DURING_END_DATE=

NO_END_DATE_FLAG= 1

DESCRIBE= RT TIMER

IS_VALID= 1

配置 dmmal.ini

订阅备库与主库之间并不依赖 dmmal.ini 进行通讯,但为了配置守护进程和监视器,需要配置dmmal.ini进行通信,下面文件内容四个节点要保持相同。(前面实时主备AB的dmmal.ini文件需要补充CD节点的mal信息)。

修改订阅备库 dmmal.ini,设置如下

MAL_CHECK_INTERVAL = 5

MAL_CONN_FAIL_INTERVAL = 15

[MAL_INST1]

MAL_INST_NAME = DMSERVER1

MAL_HOST = 192.168.43.132

MAL_PORT = 55121

MAL_INST_HOST = 192.168.43.132

MAL_INST_PORT = 5236

MAL_DW_PORT = 65121

MAL_INST_DW_PORT = 45121

[MAL_INST2]

MAL_INST_NAME = DMSERVER2

MAL_HOST = 192.168.43.133

MAL_PORT = 55101

MAL_INST_HOST = 192.168.43.133

MAL_INST_PORT = 5236

MAL_DW_PORT = 65101

MAL_INST_DW_PORT = 45101

[MAL_INST3]

MAL_INST_NAME = GRP1_LOCAL_01

MAL_HOST = 192.168.43.135

MAL_PORT = 61143

MAL_INST_HOST = 192.168.43.135

MAL_INST_PORT = 5236

MAL_DW_PORT = 52143

MAL_INST_DW_PORT = 33143

[MAL_INST4]

MAL_INST_NAME = SUBSCRIBE2 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致

MAL_HOST = 192.168.43.134 #MAL 系统监听 TCP 连接的 IP 地址

MAL_PORT = 61144 #MAL 系统监听 TCP 连接的端口

MAL_INST_HOST = 192.168.43.134 #实例的对外服务 IP 地址

MAL_INST_PORT = 5237 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致

MAL_DW_PORT = 52144 #实例对应的守护进程监听 TCP 连接的端口

MAL_INST_DW_PORT = 33144 #实例监听守护进程 TCP 连接的端口

配置 dmwatcher.ini

[GRP1]

DW_TYPE = LOCAL #守护进程模式为本地守护类型

DW_MODE = MANUAL

DW_ERROR_TIME = 15

INST_RECOVER_TIME = 60

INST_ERROR_TIME = 15

INST_OGUID = 453331

INST_INI = /home/dmdba/dmdata/DAMENG/dm.ini

INST_AUTO_RESTART = 1

INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver

注册守护进程服务:

cd /home/dmdba/dmdbms/script/root/

./dm_service_installer.sh -t dmwatcher -watcher_ini /home/dmdba/dmdata/DAMENG/dmwatcher.ini -p dw2

启动至mount并修改模式

./dmserver /home/dmdba/dmdata/DAMENG/dm.ini mount

启动命令行工具 DIsql,设置 OGUID 值,然后修改数据库模式

SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 1);

SP_SET_OGUID(453331); – 设置 OGUID

ALTER DATABASE STANDBY; – 修改数据库模式

SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 0);

然后启动守护进程,守护进程启动后,进入 Startup 状态,此时实例处于 Mount 状态,订阅备库的守护进程会将本地实例自动 Open,并切换守护进程自身为 Open 状态。

./DmServicedmserver2 start

./DmWatcherServicedw2 start

搭建级联订阅备库D

初始化D库,并修改配置文件

参照达梦单机安装手册安装D库

#使用A库的备份对D库进行还原

restore database ‘/home/dmdba/dmdata/DMTEST/dm.ini’ from backupset ‘/home/dmdba/fullbak0428’;

recover database ‘/home/dmdba/dmdata/DMTEST/dm.ini’ from backupset ‘/home/dmdba/fullbak0428’;

recover database ‘/home/dmdba/dmdata/DMTEST/dm.ini’ update db_magic;

配置dm.ini,开启arch_ini和TIMER_INI

#配置有订阅归档时,打开定时器,定时同步归档到订阅备库

INSTANCE_NAME = SUBSCRIBE2

PORT_NUM = 5237

MAL_INI = 1 #dmmal.ini

ARCH_INI = 1 #dmarch.ini

TIMER_INI = 1 #dmtimer.ini

配置dmarch.ini

订阅备库配置本地归档和订阅归档。

订阅备库通过在 ARCH_DEST 中配置一个 disql 登录串来指定源库。

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL

ARCH_DEST = /home/dmdba/dmdata/DAMENG/arch

ARCH_FILE_SIZE = 2048

ARCH_SPACE_LIMIT = 20480

ARCH_FLUSH_BUF_SIZE = 0

ARCH_HANG_FLAG = 1

[ARCHIVE_SUBSCRIBE1]

ARCH_TYPE = SUBSCRIBE

ARCH_SUBSCRIBE_MODE = 3

ARCH_DEST = SYSDBA/SYSDBA@192.168.43.135:5236 #连接订阅备库C库作为源库

ARCH_TIMER_NAME = SUBSCRIBE_TIMER

ARCH_THRESHOLD_PER_SECOND = 0

ARCH_SEND_DELAY = 0

配置dmtimer.ini

订阅备库需要开启定时器。

下面示例中定时器配置为每天每10s 触发订阅备库获取源库的归档日志,可以根据实际情况再做调整。

#dm.ini

TIMER_TRIG_CHECK_INTERVAL = 1 #设置服务器端每1秒检查触发器

#dmtimer.ini

[SUBSCRIBE_TIMER] #和 dmarch.ini 中的 ARCH_TIMER_NAME 一致

TYPE= 10

FREQ_MONTH_WEEK_INTERVAL=

FREQ_SUB_INTERVAL=

FREQ_MINUTE_INTERVAL=

REPEAT_INTERVAL= FREQ=SECONDLY;INTERVAL=10 #每10秒触发一次C库向源库获取归档并重演

START_TIME=

END_TIME=

DURING_START_DATE=

DURING_END_DATE=

NO_END_DATE_FLAG= 1

DESCRIBE= RT TIMER

IS_VALID= 1

配置 dmmal.ini:

#保持和其他节点的dmmal.ini文件一致,参照2.2.2.1.2.5章节dmmal.ini配置。

配置 dmwatcher.ini:

[GRP1]

DW_TYPE = LOCAL #本地模式

DW_MODE = MANUAL

DW_ERROR_TIME = 15

INST_RECOVER_TIME = 60

INST_ERROR_TIME = 15

INST_OGUID = 453331

INST_INI = /home/dmdba/dmdata/DAMENG/dm.ini

INST_AUTO_RESTART = 1

INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver

使用root注册dmwatcher服务

cd /home/dmdba/dmdbms/script/root/

./dm_service_installer.sh -t dmwatcher -watcher_ini /home/dmdba/dmdata/DMTEST/dmwatcher.ini -p dw2

启动至mount并修改模式

./dmserver /home/dmdba/dmdata/DMTEST/dm.ini mount

启动命令行工具 DIsql,设置 OGUID 值,然后修改数据库模式

SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 1);

SP_SET_OGUID(453331); – 设置 OGUID

ALTER DATABASE STANDBY; – 修改数据库模式

SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 0);

然后启动守护进程,守护进程启动后,进入 Startup 状态,此时实例处于 Mount 状态,订阅备库的守护进程会将本地实例自动 Open,并切换守护进程自身为 Open 状态。

./DmServiceDMSERVER start

./DmWatcherServicedw2 start

配置监视器(手动切换)

vi /home/dmdba/dmdata/DAMENG/dmmonitor.ini

MON_DW_CONFIRM = 0

MON_LOG_PATH = /home/dmdba/dmdbms/log

MON_LOG_INTERVAL = 60

MON_LOG_FILE_SIZE = 200

MON_LOG_SPACE_LIMIT = 1024

[GRP_DW]

MON_INST_OGUID = 453331

MON_DW_IP = 192.168.43.133:65101

MON_DW_IP = 192.168.43.132:65121

MON_DW_IP = 192.168.43.135:52143

MON_DW_IP = 192.168.43.134:52144

注:确认监视器需修改dmmonitor_auto.ini,此处略

#使用root用户注册非确认监视器服务

cd /home/dmdba/dmdbms/script/root/

./dm_service_installer.sh -t dmmonitor -monitor_ini /home/dmdba/dmdata/DAMENG/dmmonitor.ini -p GRP1

#启动监视器服务

DmMonitorServiceGRP1 start

A主B备C订阅备D级联订阅备四节点集群搭建完毕的相关配置文件可参考附件。

%E8%BE%BE%E6%A2%A6%E6%95%B0%E6%8D%AE%E5%BA%93%E5%BC%82%E5%9C%B0%E7%81%BE%E5%A4%87%E8%AE%BE%E8%AE%A1%E6%96%B9%E6%A1%88%20299be6873b86456bb7d3e06a8662c30b/image5.emf

重启集群所有服务,查看集群状态

前台启动非确认监视器,方便检查状态,非确认监视器可以有多个

cp dmmonitor.ini dmmonitor_manual.ini

/home/dmdba/dmdbms/bin/dmmonitor /home/dmdba/dmdata/DAMENG/dmmonitor_manual.ini

登录监视器查看集群状态

Login

Show

Tip

集群状态正常

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

主要注意以下几个字段

WSTATUS:实例是否处于open状态

INAME:实例名

INST_OK:实例状态是否ok

IMODE:实例模式为primary 或standby

RTYPE:归档类型

RSTAT:归档状态是否有效

FLSN:已经写入联机日志文件的最大 LSN 值

如果是备库模式会显示备库重演的信息

REDOS_PARALLEL_NUM:备库并行重演线程数

RLSN:备库针对主库此节点已经重演到的 LSN 值

SLSN:备库可重演到的最大 LSN

KLSN:非自动切换模式下,备库保持不重演最大 LSN

状态检查:由上图观察各节点的flsn号是否一致,或是否在缩小,只要差值在缩小在变动说明集群正常。从监视器日志看订阅备库显示的源库都为DMSERVER1,即主库,实际上订阅备库的源库可以从V$SUBSCRIBE_HISTORY视图查看。

(另外还可以分别登录主备库查询v$rlog视图,查看主备库的当前日志事务号 LSN 的情况。)

登录备库C可以查看订阅源库连接的为备库B DMSERVER2

select * from v$arch_status;

select source_inst_name from V$SUBSCRIBE_HISTORY;

在这里插入图片描述

登录主库A新建表,验证在B\C\D查询数据是否同步。

https://eco.dameng.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值