注册
DM实时主备的搭建
培训园地/ 文章详情 /

DM实时主备的搭建

有幸. 2023/05/19 1400 2 0

在搭建数据守护系统前,应注意数据守护系统中各实例使用的 DM 服务器版本应一致,同时还应注意各实例所在主机的操作系统位数、大小端模式、时区及时间设置都应一致,以及使用同一个用户启动 DM 服务器和守护进程 dmwatcher,以免系统在运行时出现意想不到的错误。

数据准备
配置数据守护 V4.0 之前,必须先通过备份还原方式同步各数据库的数据,确保各数据的数据保持完全一致。主库可以是新初始化的数据库,也可以是正在生产、使用中的数据库。

如果是初始搭建环境,可以通过对主库脱机备份、对备库脱机还原的方式来准备数据,如果主库已经处于运行状态,则可以对主库进行联机备份、对备库脱机还原的方式来准备数据。

两种方式都需要服务器配置本地归档,本地归档配置方式如下:

1.配置 dm.ini,打开 ARCH_INI 参数

ARCH_INI = 1 ##打开归档配置
2.配置 dmarch.ini

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL ##本地归档类型

ARCH_DEST = /dm/data/DAMENG/arch ##本地归档文件存放路径

ARCH_FILE_SIZE = 128 ##单位Mb,本地单个归档文件最大值

ARCH_SPACE_LIMIT = 0 ##单位Mb,0表示无限制,范围1024~2147483647M

脱机备份、脱机还原方式
正常关闭数据库
进行脱机备份
拷贝备份文件到备库所在机器
./dmrman CTLSTMT="BACKUP DATABASE '/dm/data/DAMENG/dm.ini' FULL TO BACKUP_FILE1
BACKUPSET '/dm/data/BACKUP_FILE_01'"
执行脱机数据库还原与恢复

数据库还原:

./dmrman CTLSTMT="RESTORE DATABASE '/dm/data/DAMENG/dm.ini' FROM BACKUPSET
'/dm/data/BACKUP_FILE_01'"
因为脱机备份没有产生任何 REDO 日志,所以恢复这一步此处省略。

数据库更新:

./dmrman CTLSTMT="RECOVER DATABASE '/dm/data/DAMENG/dm.ini' UPDATE DB_MAGIC"

联机备份、脱机还原方式
1、对主库进行联机备份操作

SQL> BACKUP DATABASE BACKUPSET '/dm/data/BACKUP_FILE_01';
2、拷贝备份文件到备库所在机器

3、执行脱机数据库还原与恢复

./dmrman CTLSTMT="RESTORE DATABASE '/dm/data/DAMENG/dm.ini' FROM BACKUPSET '/dm/data/BACKUP_FILE_01'"

./dmrman CTLSTMT="RECOVER DATABASE '/dm/data/DAMENG/dm.ini' FROM BACKUPSET '/dm/data/BACKUP_FILE_01'"

./dmrman CTLSTMT="RECOVER DATABASE '/dm/data/DAMENG/dm.ini' UPDATE DB_MAGIC"
配置实时主备
环境说明
准备三台机器 DW_P、DW_S1、DW_M,DW_P 和 DW_S1 用来部署主备库,DW_M 用来部署确认监视器。其中 DW_P 和 DW_S1 配置两块网卡,一块接入内部网络交换模块,一块接入到外部交换机,DW_M 接入内部网络。

三台机器都事先安装了 DM,安装路径为’/dm’,执行程序保存在’/dm/bin’目录中,数据存放路径为’/dm/data’。

各主备库的实例名建议采用“组名_守护环境_序号”的方式命名,方便按组区分不同实例,注意总长度不能超过 16。本示例中组名为“GRP1”,配置为实时主备,主库命名为“GRP1_RT_01”,备库命名为“GRP1_RT_02”。

配置环境说明

机器名 IP 地址 初始状态 操作系统 备注
DW_P 192.168.1.131 192.168.0.141 主库 GRP1_RT_01 Linux rh6-141.test 2.6.32-220.el6.x86_64##1 SMP Wed Nov 9 08:03:13 EST 2011 x86_64 x86_64 x86_64 GNU/Linux 192.168.1.131 外部服务 IP;
192.168.0.141 内部通信 IP
DW_S1 192.168.1.132 192.168.0.142 备库 GRP1_RT_02 Linux rh6-142.localdomain 2.6.32-220.el6.x86_64##1 SMP Wed Nov 9 08:03:13 EST 2011 x86_64 x86_64 x86_64 GNU/Linux 192.168.1.132 外部服务 IP;
192.168.0.142 内部通信 IP
DW_M 192.168.0.73 确认监视器 Linux rh6-73.localdomain 2.6.32-220.el6.x86_64##1 SMP Wed Nov 9 08:03:13 EST 2011 x86_64 x86_64 x86_64 GNU/Linux

端口规划
实例名 PORT_NUM MAL_INST_DW_PORT MAL_HOST MAL_PORT MAL_DW_PORT
GRP1_RT_01 32141 33141 192.168.0.141 61141 52141
GRP1_RT_02 32142 33142 192.168.0.142 61142 52142

配置主库 GRP1_RT_01
配置 dm.ini
在 DW_P 机器上配置主库的实例名为 GRP1_RT_01,dm.ini 参数修改如下:

##实例名,建议使用“组名_守护环境_序号”的命名方式,总长度不能超过16

INSTANCE_NAME = GRP1_RT_01

PORT_NUM = 32141 ##数据库实例监听端口

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
配置 MAL 系统,各主备库的 dmmal.ini 配置必须完全一致,MAL_HOST 使用内部网络 IP,MAL_PORT 与 dm.ini 中 PORT_NUM 使用不同的端口值,MAL_DW_PORT 是各实例对应的守护进程之间,以及守护进程和监视器之间的通信端口,配置如下:

MAL_CHECK_INTERVAL = 5 ##MAL链路检测时间间隔

MAL_CONN_FAIL_INTERVAL = 5 ##判定MAL链路断开的时间

[MAL_INST1]

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

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

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

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

MAL_INST_PORT = 32141 			##实例的对外服务端口,和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.0.142

MAL_PORT = 61142

MAL_INST_HOST = 192.168.1.132

MAL_INST_PORT = 32142

MAL_DW_PORT = 52142

MAL_INST_DW_PORT = 33142

配置 dmarch.ini
修改 dmarch.ini,配置本地归档和实时归档。除了本地归档外,其他归档配置项中的 ARCH_DEST 表示实例是 Primary 模式时,需要同步归档数据的目标实例名。当前实例 GRP1_RT_01 是主库,需要向 GRP1_RT_02(实时备库)同步数据,因此实时归档的 ARCH_DEST 配置为 GRP1_RT_02。

[ARCHIVE_REALTIME]

ARCH_TYPE = REALTIME ##实时归档类型

ARCH_DEST = GRP1_RT_02 ##实时归档目标实例名

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL ##本地归档类型

ARCH_DEST = /dm/data/DAMENG/arch ##本地归档文件存放路径

ARCH_FILE_SIZE = 128 ##单位Mb,本地单个归档文件最大值

ARCH_SPACE_LIMIT = 0 ##单位Mb,0表示无限制,范围1024~2147483647M

配置 dmwatcher.ini

修改 dmwatcher.ini 配置守护进程,配置为全局守护类型,使用自动切换模式。

[GRP1]
DW_TYPE = GLOBAL ##全局守护类型

DW_MODE = AUTO ##自动切换模式

DW_ERROR_TIME = 10 ##远程守护进程故障认定时间

INST_RECOVER_TIME = 60 ##主库守护进程启动恢复的间隔时间

INST_ERROR_TIME = 10 ##本地实例故障认定时间

INST_OGUID = 453331 ##守护系统唯一OGUID值

INST_INI = /dm/data/DAMENG/dm.ini ##dm.ini配置文件路径

INST_AUTO_RESTART = 1 ##打开实例的自动启动功能

INST_STARTUP_CMD = /dm/bin/dmserver ##命令行方式启动

RLOG_SEND_THRESHOLD = 0 ##指定主库发送日志到备库的时间阈值,默认关闭

RLOG_APPLY_THRESHOLD = 0 ##指定备库重演日志的时间阈值,默认关闭

启动主库,以 Mount 方式启动主库

./dmserver /dm/data/DAMENG/dm.ini mount
设置 OGUID,启动命令行工具 DIsql,登录主库设置 OGUID 值。

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);

SQL>sp_set_oguid(453331);

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
修改数据库模式,启动命令行工具 DIsql,登录主库修改数据库为 Primary 模式

SQL>alter database primary;
配置备库 GRP1_RT_02
配置 dm.ini

在 DW_S1 机器上配置备库的实例名为 GRP1_RT_02,dm.ini 参数修改如下:

##实例名,建议使用“组名_守护环境_序号”的命名方式,总长度不能超过16

INSTANCE_NAME = GRP1_RT_02

PORT_NUM = 32142 ##数据库实例监听端口

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

配置 MAL 系统,各主备库的 dmmal.ini 配置必须完全一致,MAL_HOST 使用内部网络 IP,MAL_PORT 与 dm.ini 中 PORT_NUM 使用不同的端口值,MAL_DW_PORT 是各实例对应的守护进程之间,以及守护进程和监视器之间的通信端口,配置如下:

MAL_CHECK_INTERVAL = 5 ##MAL链路检测时间间隔

MAL_CONN_FAIL_INTERVAL = 5 ##判定MAL链路断开的时间

[MAL_INST1]

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

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

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

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

MAL_INST_PORT = 32141 			##实例的对外服务端口,和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.0.142

MAL_PORT = 61142

MAL_INST_HOST = 192.168.1.132

MAL_INST_PORT = 32142

MAL_DW_PORT = 52142

MAL_INST_DW_PORT = 33142

配置 dmarch.ini

修改 dmarch.ini,配置本地归档和实时归档。除了本地归档外,其他归档配置项中的 ARCH_DEST 表示实例是 Primary 模式时,需要同步归档数据的目标实例名。当前实例 GRP1_RT_02 是备库,守护系统配置完成后,可能在各种故障处理中,GRP1_RT_02 切换为新的主库,正常情况下,GRP1_RT_01 会切换为新的备库,需要向 GRP1_RT_01 同步数据,因此实时归档的 ARCH_DEST 配置为 GRP1_RT_01。

[ARCHIVE_REALTIME]

ARCH_TYPE = REALTIME 				##实时归档类型

ARCH_DEST = GRP1_RT_01 				##实时归档目标实例名

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL 					##本地归档类型

ARCH_DEST = /dm/data/DAMENG/arch	##本地归档文件路径

ARCH_FILE_SIZE = 128 				##单位Mb,本地单个归档文件最大值

ARCH_SPACE_LIMIT = 0 				##单位Mb,0表示无限制,范围1024~2147483647M

配置 dmwatcher.ini

修改 dmwatcher.ini 配置守护进程,配置为全局守护类型,使用自动切换模式。

[GRP1]

DW_TYPE = GLOBAL 				##全局守护类型

DW_MODE = AUTO 					##自动切换模式

DW_ERROR_TIME = 10 				##远程守护进程故障认定时间

INST_RECOVER_TIME = 60 			##主库守护进程启动恢复的间隔时间

INST_ERROR_TIME = 10			##本地实例故障认定时间

INST_OGUID = 453331 			##守护系统唯一OGUID值

INST_INI = /dm/data/DAMENG/dm.ini##dm.ini配置文件路径

INST_AUTO_RESTART = 1 			##打开实例的自动启动功能

INST_STARTUP_CMD = /dm/bin/dmserver ##命令行方式启动

RLOG_APPLY_THRESHOLD = 0 		##指定备库重演日志的时间阈值,默认关闭

启动备库,以 Mount 方式启动备库

./dmserver /dm/data/DAMENG/dm.ini mount

设置 OGUID,启动命令行工具 DIsql,登录备库设置 OGUID 值为 453331

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);

SQL>sp_set_oguid(453331);

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

修改数据库模式,启动命令行工具 DIsql,登录备库修改数据库为 Standby 模式。

如果当前数据库不是 Normal 模式,需要先修改 dm.ini 中 ALTER_MODE_STATUS 值为 1,允许修改数据库模式,修改 Standby 模式成功后再改回为 0。如果是 Normal 模式,请忽略下面的第 1 步和第 3 步。

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); ----第1步

SQL>alter database standby; ----第2步

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0); ----第3步
配置监视器
配置监视器时可以选择配置单实例监视器或配置多实例监视器,下面将分别介绍配置单实例监视器以及多实例监视器时 dmmonitor.ini 配置文件中的配置信息。

配置单实例监视器

由于主库和实时备库的守护进程配置为自动切换模式,因此这里选择配置确认监视器。和普通监视器相比,确认监视器除了相同的命令支持外,在主库发生故障时,能够自动通知实时备库接管为新的主库,具有自动故障处理的功能。

修改 dmmonitor.ini 配置确认监视器,其中 MON_DW_IP 中的 IP 和 PORT 和 dmmal.ini 中的 MAL_HOST 和 MAL_DW_PORT 配置项保持一致。

MON_DW_CONFIRM = 1 ##确认监视器模式

MON_LOG_PATH = /dm/data/log ##监视器日志文件存放路径

MON_LOG_INTERVAL = 60 ##每隔60s定时记录系统信息到日志文件

MON_LOG_FILE_SIZE = 32 ##每个日志文件最大32M

MON_LOG_SPACE_LIMIT = 0 ##不限定日志文件总占用空间

[GRP1]

MON_INST_OGUID = 453331 ##组GRP1的唯一OGUID值

##以下配置为监视器到组GRP1的守护进程的连接信息,以“IP:PORT”的形式配置

##IP对应dmmal.ini中的MAL_HOST,PORT对应dmmal.ini中的MAL_DW_PORT

MON_DW_IP = 192.168.0.141:52141

MON_DW_IP = 192.168.0.142:52142

启动守护进程
启动各个主备库上的守护进程:

./dmwatcher /dm/data/DAMENG/dmwatcher.ini

守护进程启动后,进入 Startup 状态,此时实例都处于 Mount 状态。守护进程开始广播自身和其监控实例的状态信息,结合自身信息和远程守护进程的广播信息,守护进程将本地实例 Open,并切换为 Open 状态。

启动监视器
./dmmonitor /dm/data/dmmonitor.ini

至此一主一备的实时数据守护系统搭建完毕,在搭建步骤和各项配置都正确的情况下,在监视器上执行 show 命令,可以监控到所有实例都处于 Open 状态,所有守护进程也都处于 Open 状态,即为正常运行状态。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服