达梦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

posted @ 2022-06-19 13:42  ly_nye  阅读(480)  评论(0)    收藏  举报