(一)概念
DM 数据守护(Data Watch):是一种集成化的高可用、高性能数据库解决方案,是数据库异地容灾的首选方案;DW与常规的数据库备份、还原技术相比,数据守护可以更快地恢复数据库服务;DW基本不受数据规模的影响,只需数秒时间就可以将备库切换为主库对外提供数据库服务。
DW可提供多种解决方案,包括实时主备集群、读写分离集群、DMDSC主备集群等,本文讨论实时主备集群的搭建实战操作。
实时主备集群中,主库提供完整的数据库功能,备库提供只读服务。主库修改数据产生的 REDO 日志,通过实时归档机制,在写入联机 REDO 日志文件之前发送到备库,实时备库通过重演 REDO 日志与主库保持数据同步。当主库出现故障时,备库在将所有 REDO 日志重演结束后,就可以切换为主库对外提供数据库服务。
(二)配置方案
配置方案为一个主库和一个实时备库,一个确认监视器。
准备三台机器 DW_P、DW_S1、DW_M,DW_P 和 DW_S1 用来部署主备库,DW_M 用来部署确认监视器。
三台机器都事先安装了 DM8,安装路径为/dm,执行程序保存在/dm/dmdbms/bin目录中,数据存放路径为/dm/data。
2.1 配置环境
2.2 端口规划
(三)数据准备
3.1 初始化数据库
DW_P 机器上初始化主库至目录/dm/data:
./dminit path=/dm/data SYSDBA_PWD=Dameng6666 SYSAUDITOR_PWD=Dameng7777
DW_S1 机器上初始化主库至目录/dm/data:
./dminit path=/dm/data SYSDBA_PWD=Dameng6666 SYSAUDITOR_PWD=Dameng7777
3.2 数据备份和迁移恢复
采取主库脱机备份、对备库脱机还原的方式来准备数据。需要在主备机上都配置本地归档:
1)配置 dm.ini
ARCH_INI = 1
2)配置dmarch.ini
配置文件地址:按照如下约定;本文都放在 /dm/data/数据库实例名 目录下,如果没有该文件则新建一个
dmarch.ini配置内容
3)主机脱机备份
关闭数据库,进行脱机备份
./dmrman CTLSTMT="BACKUP DATABASE '/dm/data/GRP1_RT_01/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/dm/data/BACKUP_FILE_01'"
4)备份文件传输到备机
5)备机脱机还原
./dmrman CTLSTMT="RESTORE DATABASE '/dm/data/GRP1_RT_02/dm.ini' FROM BACKUPSET '/dm/data/BACKUP_FILE_01'"
6)备机数据库更新:
./dmrman CTLSTMT="RECOVER DATABASE '/dm/data/GRP1_RT_02/dm.ini' UPDATE DB_MAGIC"
(四)配置主库 GRP1_RT_01
4.1 配置 dm.ini
在 DW_P 机器上配置主库的实例名为 GRP1_RT_01,dm.ini 参数修改如下:
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次的日志发送信息
4.2 配置 dmmal.ini
配置 MAL 系统,各主备库的 dmmal.ini 配置必须完全一致!MAL_HOST 使用内部网络 IP,MAL_PORT 与 dm.ini 中 PORT_NUM 使用不同的端口值,MAL_DW_PORT 是各实例对应的守护进程之间,以及守护进程和监视器之间的通信端口,配置如下:
4.3 配置 dmarch.ini
除了本地归档外,其他归档配置项中的 ARCH_DEST 表示实例是 Primary 模式时,需要同步归档数据的目标实例名。
4.4 配置dmwatcher.ini
配置dmwatcher.ini 守护进程,配置为全局守护类型,使用自动切换模式。
4.5 启动主库
以 Mount 方式启动主库
/home/dm/dmdbms/bin/dmserver /dm/data/GRP1_RT_01/dm.ini mount
4.6 设置 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);
4.7 修改数据库模式
启动命令行工具 DIsql,登录主库修改数据库为 Primary 模式
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>ALTER DATABASE Primary;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
(五)配置备库 GRP1_RT_02
5.1 配置 dm.ini
在 DW_S1 机器上配置主库的实例名为 GRP1_RT_02,dm.ini 参数修改如下:
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次的日志发送信息
5.2 配置 dmmal.ini
与4.2 主库dmmal.ini配置完全一致
5.3 配置 dmarch.ini
GRP1_RT_02 是备库,守护系统配置完成后,可能在各种故障处理中,GRP1_RT_02 切换为新的主库,正常情况下,GRP1_RT_01 会切换为新的备库,需要向 GRP1_RT_01 同步数据,因此实时归档的 ARCH_DEST 配置为 GRP1_RT_01。
5.4 配置dmwatcher.ini
5.5 启动备库
以 Mount 方式启动备库
/home/dm/dmdbms/bin/dmserver /dm/data/GRP1_RT_02/dm.ini mount
5.6 设置 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);
5.7 修改数据库模式
启动命令行工具 DIsql,登录备库修改数据库为 Standby 模式
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>ALTER DATABASE Standby;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
(六)配置监视器
由于主库和实时备库的守护进程配置为自动切换模式,因此这里必须配置确认监视器。和普通监视器相比,确认监视器除了相同的命令支持外,在主库发生故障时,能够自动通知实时备库接管为新的主库,具有自动故障处理的功能。
6.1 配置单实例监视器
修改 dmmonitor.ini 配置确认监视器,其中 MON_DW_IP 中的 IP 和 PORT 和 dmmal.ini 中的 MAL_HOST 和 MAL_DW_PORT 配置项保持一致。
/home/dm/dmdbms/bin/dmwatcher /dm/data/M/dmwatcher.ini
(七)启动守护进程
启动主备库上的守护进程:
Home/dm/dmdbms/bin/dmwatcher /dm/data/GRP1_RT_01/dmwatcher.ini
Home/dm/dmdbms/bin/dmwatcher /dm/data/GRP1_RT_02/dmwatcher.ini
守护进程启动后,进入 Startup 状态,此时实例都处于 Mount 状态。守护进程开始广播自身和其监控实例的状态信息,结合自身信息和远程守护进程的广播信息,守护进程将本地实例 Open,并切换为 Open 状态。
(八)启动监视器
启动监视器命令:
Home/dm/dmdbms/bin/dmmonitor /dm/data/M/dmmonitor.ini
(九)测试
9.1 数据同步测试
主库
备库
主库插入一条数据
备库,可以查询到:数据已同步成功
9.2 主备自动切换测试
1)模拟主机故障,将主机关掉shutdown -h now,在监控器可以看到:
守护进程GRP1_RT_01超时,对GPR1进行接管,守护进程GRP1_RT_02接管
此时show可以看到:GRP1_RT_02已经切换为PRIMARY状态
将主机重新启动,打开守护服务后,可以看到原主库重新加入集群,并处于STANDBY模式。
原主库可重新登录进行查询
文章
阅读量
获赞
