dm实时主备说明
将主库产生的 Redo日志传输到备库,备库接收并重演Redo日志,从而实现备库与主库的数据同步。
一、环境准备
1.1、配置环境准备
首先搭建实时主备,要规划好机器的,我准备两台机器服务器
主服务器 master: 192.168.179.11
从服务器 slave: 192.168.179.12
主节点数据库测试实例名:TEST 端口:5236 dmwatcher守护 安装监视器
从节点数据库测试实例名:TEST 端口:5236 dmwatcher守护
1.2、资源环境查查
CPU :lscpu 内存:free -g 操作系统:cat /etc/os-release 磁盘:dd bs=32k count=20k if=/dev/zero of=test oflag=dsync 网络:ethtool +网卡名
1.3、文件目录规划
dm_ini 文件位置:/dmdata/data/DAMENG/dm.ini
dmmal.ini文件位置:/dmdata/data/DAMENG/dmmal.ini
dmarch.ini文件位置:/dmdata/data/DAMENG/dmarch.ini
dmwatcher.ini文件位置:/dmdata/data/DAMENG/dmwatcher.ini
back 备份位置:/opt/back
arch 归档文件存放路径:/dmdata/data/DAMENG/arch
二、主从数据库数据同步
主节点的数据备份,通过SCP到从节点,然后从节点回滚主节点的数据库备份文件,做到主从同步。
2.1、主数据库备份数据Master(192.168.179.11)
通过sql工具,进行联机备份数据库信息。 通过dmrman命令执行联机备份 ./dmrman |
2.2、从服务器对备份数据进行还原Salve(192.168.179.12)
脱机还原 ./dmrman ctlstmt="restore database to '/dmdata/data/DAMENG' from backupset '/bak/bak_full_01'" ./dmrman ctlstmt="recover database '/dmdata/data/DAMENG/dm.ini' from backupset '/bak/bak_full_01'" ./dmrman ctlstmt="recover database '/dmdata/data/DAMENG/dm.ini' update db_magic" |
三、主从服务器配置文件
3.1、dm.ini文件
3.1.1、修改主服务器上的dm.ini(192.168.179.11)
INSTANCE_NAME = TEST 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次的日志发送信息 |
3.1.2、修改从服务器上的dm.ini(192.168.179.12)
INSTANCE_NAME = TEST PORT_NUM = 5236 DW_INACTIVE_INTERVAL = 60 ALTER_MODE_STATUS = 0 ENABLE_OFFLINE_TS = 2 MAL_INI = 1 ARCH_INI = 1 RLOG_SEND_APPLY_MON = 64 |
3.2、dmmal.ini文件
3.2.1、主服务器,在/dmdata/data/DAMENG下创建文件dmmal.ini(192.168.179.11)
MAL_CHECK_INTERVAL = 5 #MAL链路检测时间间隔 MAL_CONN_FAIL_INTERVAL = 5 #判定MAL链路断开的时间 [MAL_INST1] MAL_INST_NAME = TEST #实例名,和dm.ini中的一致 MAL_HOST = 192.168.179.11 #MAL系统监听TCP连接的IP地址 MAL_PORT = 55101 #MAL系统监听TCP连接的端口 MAL_INST_HOST = 192.168.179.11 #实例的对外服务IP地址 MAL_INST_PORT = 5236 #实例的对外服务端口,和dm.ini中的PORT_NUM一致 MAL_DW_PORT = 65101 #实例对应的守护进程监听TCP连接的端口 MAL_INST_DW_PORT = 45101 [MAL_INST2] MAL_INST_NAME = TEST MAL_HOST = 192.168.179.12 MAL_PORT = 55121 MAL_INST_HOST = 192.168.179.12 MAL_INST_PORT = 5236 MAL_DW_PORT = 65121 MAL_INST_DW_PORT = 45121 |
3.2.2、从服务器上,在/dmdata/data/DAMENG下创建文件dmmal.ini(192.168.179.12)
MAL_CHECK_INTERVAL = 5 #MAL链路检测时间间隔 MAL_CONN_FAIL_INTERVAL = 5 #判定MAL链路断开的时间 [MAL_INST1] MAL_INST_NAME = TEST #实例名,和dm.ini中的一致 MAL_HOST = 192.168.179.11 #MAL系统监听TCP连接的IP地址 MAL_PORT = 55101 #MAL系统监听TCP连接的端口 MAL_INST_HOST = 192.168.179.11 #实例的对外服务IP地址 MAL_INST_PORT = 5236 #实例的对外服务端口,和dm.ini中的PORT_NUM一致 MAL_DW_PORT = 65101 #实例对应的守护进程监听TCP连接的端口 MAL_INST_DW_PORT = 45101 [MAL_INST2] MAL_INST_NAME = TEST MAL_HOST = 192.168.179.12 MAL_PORT = 55121 MAL_INST_HOST = 192.168.179.12 MAL_INST_PORT = 5236 MAL_DW_PORT = 65121 MAL_INST_DW_PORT = 45121 |
3.3、dmarch.ini文件
3.3.1、主服务器,在/dmdata/data/DAMENG下创建文件dmarch.ini(192.168.179.11)
[ARCHIVE_LOCAL2] ARCH_TYPE = LOCAL ##本地归档类型 ARCH_DEST = /dmdata/data/DAMENG/arch #本地归档文件存放路径 ARCH_FILE_SIZE = 1024 #单位Mb,本地单个归档文件最大值 ARCH_SPACE_LIMIT = 4096 ARCH_FLUSH_BUF_SIZE = 0 ##单位Mb,0表示无限制 ARCH_HANG_FLAG = 1 [ARCHIVE_REALTIME1] ARCH_TYPE = REALTIME ##实时归档类型 ARCH_DEST = TEST #实时归档目标实例名 |
3.3.2、从服务器,在/dmdata/data/DAMENG下创建文件dmarch.ini(192.168.179.12)
[ARCHIVE_LOCAL2] ARCH_TYPE = LOCAL ARCH_DEST = /dmdata/data/DAMENG/arch ARCH_FILE_SIZE = 1024 ARCH_SPACE_LIMIT = 4096 ARCH_FLUSH_BUF_SIZE = 0 ARCH_HANG_FLAG = 1 [ARCHIVE_REALTIME1] ARCH_TYPE = REALTIME ARCH_DEST = TEST |
3.4、dmwatcher.ini文件(192.168.179.11)
在主库/dmdata/data/DAMENG下创建文件dmwatcher.ini [GRP1] DW_TYPE = GLOBAL #全局守护类型 DW_MODE = AUTO #自动切换模式 DW_ERROR_TIME = 10 #远程守护进程故障认定时间 INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间 INST_ERROR_TIME = 10 #本地实例故障认定时间 INST_OGUID = 230330 #守护系统唯一OGUID值 INST_INI = /dmdata/data/DAMENG/dm.ini #dm.ini配置文件路径 INST_AUTO_RESTART = 1 #打开实例的自动拉起功能 INST_STARTUP_CMD = /dmdata/bin/dmserver |
3.5、以mount方式启动达梦服务
3.5.1、启动主库 (192.168.179.11)
./dmserver /dmdata/data/DAMENG/dm.ini mount
设置OGUID。登录disql执行 SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); sp_set_oguid(230330); SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0); |
3.5.2、启动从库(192.168.179.12)
./dmserver /dmdata/data/DAMENG/dm.ini mount
设置OGUID。登录disql执行修改状态 SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); sp_set_oguid(230330); SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0); |
3.6、数据库模式
3.6.1、修改主服务器数据库模式
启动命令行工具 DIsql,登录主库修改数据库为 Primary 模式 SQL>alter database primary; |
3.6.2、修改从服务器数据库模式
启动命令行工具 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步 |
3.7、启动守护进程
3.7.1、主库启动(192.168.179.11)
./dmwatcher /dmdata/data/DAMENG/dmwatcher.ini
3.7.2、从库启动(192.168.179.12)
./dmwatcher /dmdata/data/DAMENG/dmwatcher.ini
3.8、安装监视器(在主备服务器中任意一台或者第三台服务器上配置监视器)
3.8.1、dmmonitor.ini文件配置(192.168.179.11)
MON_DW_CONFIRM = 1 MON_LOG_PATH = /dmdata/data/log MON_LOG_INTERVAL = 60 MON_LOG_FILE_SIZE = 32 MON_LOG_SPACE_LIMIT = 0 [GRP1] MON_INST_OGUID = 230330 MON_DW_IP = 192.168.179.11:65101 MON_DW_IP = 192.168.179.12:65121 |
3.8.2、启动监视器(192.168.179.11)
./dmmonitor /dmdata/data/DAMENG/dmmonitor.ini |
3.9、注册服务
3.9.1、主库上以root用户登录创建服务(192.168.179.11)
/dmdata/script/root/dm_service_installer.sh -t dmwatcher -watcher_ini /dmdata/data/DAMENG/dmwatcher.ini -p TEST
3.9.2、从库上以root用户登录创建服务(192.168.179.12)
/dmdata/script/root/dm_service_installer.sh -t dmwatcher -watcher_ini /dmdata/data/DAMENG/dmwatcher.ini -p TEST
3.10、启动守护进程
3.10.1、主库启动守护进程(192.168.179.11)
systemctl start DmWatcherServiceTEST
3.10.2、从库启动守护进程(192.168.179.12)
systemctl start DmWatcherServiceTEST
四、关闭集群顺序
关闭监视器-->关闭备库守护进程-->关闭主库守护进程--->关闭主库-->关闭从库