DM实时主备搭建
环境说明
机器名IP地址初始状态操作系统略10.12.21.190主库Centos7略10.12.21.191备库Centos7
实例名PORT_NUMMAL_INST_DW_PORTMAL_HOSTMAL_PORTMAL_DW_PORTGRP1_RT_0152363314110.12.21.1906114152141GRP1_RT_0252363314210.12.21.1916114252142
二、数据准备
配置归档参数
配置dm.ini,打开 ARCH_INI 参数
ARCH_INI = 1 #打开归档配置
配置 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~4294967294M
初始化目录./dminit path=/data
备份
脱机备份
①正常关闭数据库
②进行脱机备份
./dmrman CTLSTMT=“BACKUP DATABASE ‘/data/dmdbms/DAMENG/dm.ini’ FULL TO BACKUP_FILE1 BACKUPSET ‘/data/dmdbms/BACKUP_FILE_01’”
③拷贝备份文件到备库所在机器(主–>备)
scp -r /data/dmdbms/BACKUP_FILE_01 10.12.21.191:/data/dmdbms
④执行脱机数据库还原与恢复(备)
还原:
./dmrman ctlstmt=“RESTORE DATABASE ‘/data/dmdbms/DAMENG/dm.ini’ FROM BACKUPSET ‘/data/dmdbms/BACKUP_FILE_01’”
恢复:
./dmrman ctlstmt=“RECOVER DATABASE ‘/data/dmdbms/DAMENG/dm.ini’ FROM BACKUPSET ‘/data/dmdbms/BACKUP_FILE_01’”
./dmrman ctlstmt=“RECOVER DATABASE ‘/data/dmdbms/DAMENG/dm.ini’ UPDATE DB_MAGIC”
联机备份
①对主库进行联机备份
SQL> BACKUP DATABASE BACKUPSET ‘/data/BACKUP_FILE_01’;
②拷贝备份文件到备库所在机器
scp -r /data/dmdbms/BACKUP_FILE_01 10.12.21.191:/data/dmdbms
③执行脱机数据库还原与恢复
./dmrman CTLSTMT=“RESTORE DATABASE ‘/data/dmdbms/DAMENG/dm.ini’ FROM BACKUPSET ‘/data/BACKUP_FILE_01’”
./dmrman CTLSTMT=“RECOVER DATABASE ‘/data/dmdbms/DAMENG/dm.ini’ FROM BACKUPSET ‘/data/BACKUP_FILE_01’”
./dmrman CTLSTMT=“RECOVER DATABASE ‘/data/dmdbms/DAMENG/dm.ini’ UPDATE DB_MAGIC”
二、配置实时主备
环境说明:准备2台机器,备库部署在了备库上,均为内部网络。
主:IP 10.12.21.190 操作系统CentOS-7-x86_64-DVD-1810.iso PORT_NUM 5236 MAL_PORT 61141 MAL_INST_DW_PORT 33141 MAL_PORT 61141 MAL_DW_PORT 52141
备:IP 10.12.21.191 操作系统CentOS-7-x86_64-DVD-1810.iso PORT_NUM 5236 MAL_PORT 61142 MAL_INST_DW_PORT 33142 MAL_PORT 61142 MAL_DW_PORT 52142
1、配置主库GRP1_RT_01
配置文件修改与创建:
1)配置 dm.ini
配置主库的实例名为 GRP1_RT_01,dm.ini 参数修改如下:
#实例名,建议使用―组名_守护环境_序号‖的命名方式,总长度不能超过 16
INSTANCE_NAME = GRP1_RT_01
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 次的日志发送信息
2)配置 dmmal.ini
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 = 10.12.21.190 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口
#MAL_PORT 与 dm.ini 中 PORT_NUM 使用不同的端口值
MAL_INST_HOST = 10.12.21.190 #实例的对外服务 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 = 10.12.21.191
MAL_PORT = 61142
MAL_INST_HOST = 10.12.21.191
MAL_INST_PORT = 32142
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142
3)配置 dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = GRP1_RT_02 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /data/dmdbms/DAMENG/arch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位 Mb,0 表示无限制,范围 1024~4294967294M
4)修改 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 = /data/dmdbms/DAMENG/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /data/dmdbms/dmdbms/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭
启动主库
1)修改DMService_5236文件START_MODE=mount
2)启动主库到mount状态
./dmserver /data/dmdbms/DAMENG/dm.ini mount
设置 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);
SQL>alter database primary;
./dmserver /data/dmdbms/DAMENG/dm.ini mount
3)设置 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);
修改数据库模式
SQL>SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 1);
SQL>alter database standby;
SQL>SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 0);
配置监视器(备,正常情况下是搭建在第三台上)
修改 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 =10.12.21.190:52141
MON_DW_IP = 10.12.21.191:52142
启动守护进程
先主后备:
./dmwatcher /data/dmdbms/DAMENG/dmwatcher.ini
守护进程启动后,进入 Startup 状态,此时实例都处于 Mount 状态。守护进程开始广播自身和其监控实例的状态信息,结合自身信息和远程守护进程的广播信息,守护进程将
本地实例 Open,并切换为 Open 状态。
启动监视器
./dmmonitor /data/dmdbms/DAMENG/dmmonitor.ini
至此一主一备的实时数据守护系统搭建完毕,在搭建步骤和各项配置都正确的情况下,在监视器上执行 show 命令,可以监控到所有实例都处于 Open 状态,所有守护进程也都处于 Open 状态,即为正常运行状态。
注册服务脚本
说明:
如果想让dmserver、dmwatcher和dmmonitor服务开机自启动,需要手动注册服 务,注册步骤必须用root用户进行,注册完成后重启机器时,就会自动启动dmserver、 dmwatcher和dmmonitor服务。其中,因为确认监视器一直处于工作状态,所以确认监 视器需要注册dmmonitor服务,自动启动;非确认监视器是在查看信息时才使用,届时手 动启动控制台dmmonitor服务即可,可以不用注册dmmonitor服务。
注册服务目录:cd /home/dmdba/dmdbms/script/root/
主库注册服务进程:
./dm_service_installer.sh -t dmserver -dm_ini /data/dmdbms/DAMENG/dm.ini -p mount
主库注册守护进程:
./dm_service_installer.sh -t dmwatcher -watcher_ini /data/dmdbms/DAMENG/dmwatcher.ini -p dmwatcher
./dm_service_installer.sh -t dmserver -dm_ini /data/dmdbms/DAMENG/dm.ini -p mount
备库注册守护进程:
./dm_service_installer.sh -t dmwatcher -watcher_ini /data/dmdbms/DAMENG/dmwatcher.ini -p dmwatcher
备库注册监控进程:
./dm_service_installer.sh -t dmmonitor -monitor_ini /data/dmdbms/DAMENG/dmmonitor.ini -p dmmonitor