DM 数据守护(Data Watch)是一种集成化的高可用、高性能数据库解决方案,是数据库异地容灾的首选方案。DM 数据守护的实现原理为:将主库(生产库)产生的 Redo日志传输到备库,备库接收并重新应用 Redo 日志,从而实现备库与主库的数据同步。
以下为数据守护集群搭建分享:
/dmdb/dmdbms/bin/dminit INI_FILE=/dmdb/dmdata/DAMENG/dm.ini PATH=/dmdb/dmdata/ DB_NAME=DAMENG INSTANCE_NAME=GRP1_RT_01 PAGE_SIZE=32 LOG_SIZE=2048 CASE_SENSITIVE=1 CHARSET=1 PORT_NUM=5237
./dminit path=/dmdb/dmdata page_size=16 charset=0 log_size=2048 db_name=DAMENG instance_name=DW0
/dmdb/dmdbms/bin/dminit INI_FILE=/dmdb/dmdata/DAMENG/dm.ini PATH=/dmdb/dmdata/ DB_NAME=DAMENG INSTANCE_NAME=GRP1_RT_02 PAGE_SIZE=32 LOG_SIZE=2048 CASE_SENSITIVE=1 CHARSET=1 PORT_NUM=5237
//打开归档配置
配置 dm.ini,打开 ARCH_INI参数;ARCH_INI = 1
并且建立归档文件: dmarch.ini
[ARCHIVE_LOCAL]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dmdb/dmarch/ #本地归档存放路径
ARCH_FILE_SIZE = 1024 #单个归档大小,单位 MB
ARCH_SPACE_LIMIT = 10240 #归档上限,单位 MB
./DmService stop
./dmrman CTLSTMT="BACKUP DATABASE '/dmdb/dmdata/DAMENG/dm.ini' FULL TO BACKUP_FILE
BACKUPSET '/dmdb/dmbak/BACKUP_FILE'"
scp -r /dmdb/dmbak/BACKUP_FILE dmdba@192.168.100.103:/dmdb/dmbak/
./dmrman CTLSTMT="RESTORE DATABASE '/dmdb/dmdata/DAMENG/dm.ini' FROM BACKUPSET
'/dmdb/dmbak/BACKUP_FILE'"
./dmrman CTLSTMT="RECOVER DATABASE '/dmdb/dmdata/DAMENG/dm.ini' FROM BACKUPSET
'/dmdb/dmbak/BACKUP_FILE'"
./dmrman CTLSTMT="RECOVER DATABASE '/dmdb/dmdata/DAMENG/dm.ini' UPDATE DB_MAGIC"
启动:/dmdb/dmdbms/bin/dmserver /dmdb/dmdata/DAMENG/dm.ini
连接:/dmdb/dmdbms/bin/disql SYSDBA/SYSDBA@192.168.100.102:5236
SQL> BACKUP DATABASE BACKUPSET '/dmdb/dmbak/BACKUP_FILE';
scp -r /dmdb/dmbak/BACKUP_FILE dmdba@192.168.100.103:/dmdb/dmbak/
/dmdb/dmdbms/bin/dmrman CTLSTMT="RESTORE DATABASE '/dmdb/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/dmdb/dmbak/'"
/dmdb/dmdbms/bin/dmrman CTLSTMT="RECOVER DATABASE '/dmdb/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/dmdb/dmbak/'"
/dmdb/dmdbms/bin/dmrman CTLSTMT="RECOVER DATABASE '/dmdb/dmdata/DAMENG/dm.ini' UPDATE DB_MAGIC"
//方式一:
INSTANCE_NAME = GRP1_RT_01
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
//方式二:
启动服务:/dmdb/dmdbms/bin/dmserver /dmdb/dmdata/DAMENG/dm.ini
连接:/dmdb/dmdbms/bin/disql SYSDBA/SYSDBA@192.168.100.102:5236
SP_SET_PARA_VALUE (2,'PORT_NUM',5236);
SP_SET_PARA_VALUE (1,'DW_INACTIVE_INTERVAL',60);
SP_SET_PARA_VALUE (1,'ALTER_MODE_STATUS',0);
SP_SET_PARA_VALUE (1,'ENABLE_OFFLINE_TS',2);
SP_SET_PARA_VALUE (2,'MAL_INI',1);
SP_SET_PARA_VALUE (2,'RLOG_SEND_APPLY_MON',64);
vim /dmdb/dmdata/DAMENG/dmarch.ini
ARCH_WAIT_APPLY = 0 #0:高性能 1:事务一致
[ARCHIVE_LOCAL]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dmdb/dmarch/ #本地归档存放路径
ARCH_FILE_SIZE = 2048 #单个归档大小,单位 MB
ARCH_SPACE_LIMIT = 10240 #归档上限,单位 MB
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = GRP1_RT_02 #实时归档目标实例名
/dmdb/dmdata/DAMENG/dmmal.ini
MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 15 #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME = GRP1_RT_01 #实例名,和 dm.ini 的 INSTANCE_NAME 一致
MAL_HOST = 192.168.200.102 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 61141 #MAL系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.100.102 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #实例对外服务端口,和 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.200.103
MAL_PORT = 61142
MAL_INST_HOST = 192.168.100.103
MAL_INST_PORT = 5236
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142
/dmdb/dmdata/DAMENG/dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = MANUAL #MANUAL:故障手切 AUTO:故障自切
DW_ERROR_TIME = 30 #远程守护进程故障认定时间
INST_ERROR_TIME = 20 #本地实例故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_OGUID = 453331 #守护系统唯一 OGUID 值
INST_INI = /dmdb/dmdata/DAMENG/dm.ini #dm.ini 文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dmdb/dmdbms/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
方式一:手动配置
cp /dmdb/dmdbms/bin/service_template/DmService /dmdb/dmdbms/bin/
vim /dmdb/dmdbms/bin/DmService
修改ini路径为: /dmdb/dmdata/DAMENG/dm.ini
修改START_MODE为mount
保存修改后,执行命令:./DmService start启动主库数据库后台服务
cp /dmdb/dmdbms/bin/service_template/DmWatcherService /dmdb/dmdbms/bin/
vim /dmdb/dmdbms/bin/DmWatcherService
修改ini路径为: /dmdb/dmdata/DAMENG/dmwatcher.ini
./DmWatcherService start
方式二:自动使用脚本注册服务并启动,需要使用root
/dmdb/script/root/dm_service_installer.sh -t dmserver -p GRP1_RT_01 -dm_ini /dmdb/dmdata/DAMENG/dm.ini -m mount
/dmdb/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dmdb/dmdata/DAMENG/dmwatcher.ini
// 若要删除自启服务,按照以下方式运行即可
(以root身份运行)
/dmdb/script/root/dm_service_uninstaller.sh -n DmServiceGRP1_RT_01
/dmdb/script/root/dm_service_uninstaller.sh -n DmWatcherServiceWatcher
./dmserver /dmdb/dmdata/DAMENG/dm.ini mount
/dmdb/dmdbms/bin/disql SYSDBA/SYSDBA@192.168.100.102:5236
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>SP_SET_OGUID(45331);
SQL>ALTER DATABASE PRIMARY;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
// 实时归档时,dmarch.ini 中的 ARCH_WAIT_APPLY 配置项默认值为 0,可以省略
vim /dmdb/dmdata/DAMENG/dmarch.ini
ARCH_WAIT_APPLY = 0 #0:高性能 1:事务一致
[ARCHIVE_LOCAL]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dmdb/dmarch/ #本地归档存放路径
ARCH_FILE_SIZE = 1024 #单个归档大小,单位 MB
ARCH_SPACE_LIMIT = 10240 #归档上限,单位 MB
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = GRP1_RT_01 #即时归档目标实例名
MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 15 #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME = GRP1_RT_01 #实例名,和dm.ini的 INSTANCE_NAME 一致
MAL_HOST =192.168.200.102 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 61141 #MAL系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.100.102 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #实例对外服务端口,和 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.200.103
MAL_PORT = 61142
MAL_INST_HOST = 192.168.100.103
MAL_INST_PORT = 5236
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = MANUAL #MANUAL:故障手切 AUTO:故障自切
DW_ERROR_TIME = 30 #远程守护进程故障认定时间
INST_ERROR_TIME = 20 #本地实例故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_OGUID = 453331 #守护系统唯一 OGUID 值
INST_INI = /dmdb/dmdata/DAMENG/dm.ini #dm.ini 文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dmdb/dmdbms/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
方式一:手动配置
cp /dmdb/dmdbms/bin/service_template/DmService /dmdb/dmdbms/bin/
vim /dmdb/dmdbms/bin/DmService
修改ini路径为: /dmdb/dmdata/DAMENG/dm.ini
修改START_MODE为mount
保存修改后,执行命令:./DmService start启动主库数据库后台服务
cp /dmdb/dmdbms/bin/service_template/DmWatcherService /dmdb/dmdbms/bin/
vim /dmdb/dmdbms/bin/DmWatcherService
修改ini路径为: /dmdb/dmdata/DAMENG/dmwatcher.ini
./DmWatcherService start
方式二:自动使用脚本注册服务并启动,需要使用root
/dmdb/script/root/dm_service_installer.sh -t dmserver -p GRP1_RT_02 -dm_ini /dmdb/dmdata/DAMENG/dm.ini -m mount
/dmdb/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dmdb/dmdata/DAMENG/dmwatcher.ini
//删除自启服务
/dmdb/script/root/dm_service_uninstaller.sh -n DmServiceGRP1_RT_02
/dmdb/script/root/dm_service_uninstaller.sh -n DmWatcherServiceWatcher
./dmserver /dmdb/dmdata/DAMENG/dm.ini mount
/dmdb/dmdbms/bin/disql SYSDBA/SYSDBA@192.168.100.103:5236
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>SP_SET_OGUID(45331);
SQL>ALTER DATABASE STANDBY;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
vim /dmdb/dmdbms/bin/dmmonitor.ini
MON_DW_CONFIRM = 0 #0:非确认(故障手切) 1:确认(故障自切)
MON_LOG_PATH = /dmdb/log #监视器日志文件存放路径 /dmdb/log
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 128 #单个日志大小,单位 MB
MON_LOG_SPACE_LIMIT = 2048 #日志上限,单位 MB
[GRP1]
MON_INST_OGUID = 45331 #组 GRP1 的唯一 OGUID 值
MON_DW_IP = 192.168.200.102:52141 #IP对应 MAL_HOST,PORT 对应 MAL_DW_PORT
MON_DW_IP = 192.168.200.103:52141
//为每个实例配置一个 dmmonitor.ini。众多 dmmonitor.ini 中,除 MON_ID 参数不同以外,其他参数应完全一致。
MON_DW_CONFIRM = 0 #0:非确认(故障手切) 1:确认(故障自切)
MON_LOG_PATH = /dmdb/log #监视器日志文件存放路径 /dmdb/log
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 128 #单个日志大小,单位 MB
MON_LOG_SPACE_LIMIT = 2048 #日志上限,单位 MB
MON_INST_NUM = 2 #实例总个数
MON_HB_INTERVAL = 60 #通信心跳校验间隔
MON_BRO_INTERVAL = 100 #raft协议中实例通信心跳间隔
MON_VOTE_INTERVAL = 100 #raft协议中基础投票间隔
MON_ID = 1 #当前监视器在监视器系统中的ID
MON_MID = 45614 #当前监视器系统的唯一标识
[GRP1]
MON_INST_OGUID = 45331 #组 GRP1 的唯一 OGUID 值
MON_DW_IP = 192.168.200.102:5436 #IP 对应 MAL_HOST,PORT 对应 MAL_DW_PORT
MON_DW_IP = 192.168.200.103:5436
[MON1]
MON_HOST = 192.168.200.102 ##系统监听TCP连接的IP地址
MON_PORT = 5336 ##系统监听TCP连接的端口号
MON_INST_ID = 1 ##监视器实例在监视器系统中的ID
[MON2]
MON_HOST = 192.168.200.103 ##系统监听TCP连接的IP地址
MON_PORT = 5336 ##系统监听TCP连接的端口号
MON_INST_ID = 2 ##监视器实例在监视器系统中的ID
方式一:手动配置
cp /dmdb/dmdbms/bin/service_template/DmMonitorService /dmdb/dmdbms/bin/
vim /dmdb/dmdbms/bin/DmMonitorService
修改ini路径为: /dmdb/dmdata/DAMENG/dmmonitor.ini
./DmMonitorService start
方式二:自动使用脚本注册服务并启动,需要使用root
/dmdb/script/root/dm_service_installer.sh -t dmmonitor -p Monitor -monitor_ini /dmdb/dmdbms/bin/dmmonitor.ini
//删除:
/dmdb/script/root/dm_service_uninstaller.sh -n DmMonitorServiceMonitor
开启集群顺序为: 备库实例(DmService2)——>主库实例(DmService1)——>主库守护进程(DmWatcherService1)——>备库守护进程(DmWatcherService2)——>监视器服务(DmMonitorService)
./DmService start
主库:./DmWatcherService start 备库:./DmWatcherService start
前台启动:
/dmdb/dmdbms/bin/dmmonitor /dmdb/dmdbms/bin/dmmonitor.ini
后台启动:
/dmdb/dmdbms/bin/DmMonitorService start
A/B机器: 备库:./DmWatcherService stop 主库:./DmWatcherService stop 主库:./DmServiceGRP1_RT_01 stop 备库:./DmServiceGRP1_RT_02 stop 关闭集群的顺序为: 监视器服务(DmMonitorService)——>备库守护进程(DmWatcherService2)——>主库守护进程(DmWatcherService1)——>主库实例(DmService1)——>备库实例(DmService2)
以上就是DM数据守护集群的搭建过程。
文章
阅读量
获赞