一、守护集群
- 环境说明
本地三台虚拟机如下
机器 | 初始状态 | 操作系统 | 实例 |
192.168.43.128 | 主库 | Centos 7 | DMOA_P |
192.168.43.129 | 备库 | Centos 7 | DMOA_S |
192.168.43.130 | 监视服务器 | Centos 7 |
2.数据准备
1.对192.168.43.128(前面DM8安装实验的实例机器)进行联机备份操作
另开窗口使用disql连接
./disql SYSDBA/SYSDBA@192.168.43.128:5234
SQL>BACKUP DATABASE BACKUPSET '/home/dmdba/dmdbms/BACKUP_FILE_01';
拷贝备份文件到备库所在机器, 并执行脱机数据库还原与恢复
拷贝备份文件: su - dmdba scp -rp BACKUP_FILE_01/ 192.168.43.129:/home/dmdba/dmdbms/ 192.168.43.129上执行如下: dmdba初始化DMOA_S实例 ./dminit PATH=/home/dmdba/dmdbms/ INSTANCE_NAME=DMOA_S DB_NAME=DMOA PORT_NUM=5234 PAGE_SIZE=16 CASE_SENSITIVE=Y CHARSET=0 还原: ./dmrman CTLSTMT="RESTORE DATABASE '/home/dmdba/dmdbms/DMOA/dm.ini' FROM BACKUPSET '/home/dmdba/dmdbms/BACKUP_FILE_01'" 恢复: ./dmrman CTLSTMT="RECOVER DATABASE '/home/dmdba/dmdbms/DMOA/dm.ini' FROM BACKUPSET '/home/dmdba/dmdbms/BACKUP_FILE_01'" 更新: ./dmrman CTLSTMT="RECOVER DATABASE '/home/dmdba/dmdbms/DMOA/dm.ini' UPDATE DB_MAGIC" |
恢复时屏幕输出如下:
3.配置主库
dm.ini
INSTANCE_NAME= DMOA_P PORT_NUM= 5234 #数据库实例监听端口 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_CHECK_INTERVAL = 5 #MAL链路检测时间间隔 MAL_CONN_FAIL_INTERVAL = 5 #判定MAL链路断开的时间 [MAL_INST1] MAL_INST_NAME = DMOA_P #实例名,和dm.ini中的INSTANCE_NAME一致 MAL_HOST = 192.168.43.128 #MAL系统监听TCP连接的IP地址 MAL_PORT = 61141 #MAL系统监听TCP连接的端口 MAL_INST_HOST = 192.168.43.128 #实例的对外服务IP地址 MAL_INST_PORT = 5234 #实例的对外服务端口,和dm.ini中的PORT_NUM一致 MAL_DW_PORT = 52141 #实例本地的守护进程监听TCP连接的端口 MAL_INST_DW_PORT = 33141 #实例监听守护进程TCP连接的端口 [MAL_INST2] MAL_INST_NAME = DMOA_S MAL_HOST = 192.168.43.129 MAL_PORT = 61141 MAL_INST_HOST = 192.168.43.129 MAL_INST_PORT = 5234 MAL_DW_PORT = 52141 MAL_INST_DW_PORT = 33141 |
dmarch.ini
[ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = /home/dmdba/dmdbms/DMOA/arch_DMOA ARCH_FILE_SIZE = 256 ARCH_SPACE_LIMIT = 10240 ARCH_FLUSH_BUF_SIZE = 0 [ARCHIVE_REALTIME] ARCH_TYPE = REALTIME ARCH_DEST = DMOA_S |
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 = /home/dmdba/dmdbms/DMOA/dm.ini #dm.ini配置文件路径 INST_AUTO_RESTART = 1 #打开实例的自动启动功能 INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver #命令行方式启动 RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭 RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭 |
设置OGUID
./disql SYSDBA/SYSDBA@192.168.43.128:5234 SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS',1); SQL>sp_set_oguid(453331); SQL>alter database primary; SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0); |
4.配置备库
dm.ini
INSTANCE_NAME= DMOA_P PORT_NUM= 5234 #数据库实例监听端口 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
与主库一致从主库copye一份即可
dmarch.ini
[ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = /home/dmdba/dmdbms/DMOA/arch_DMOA ARCH_FILE_SIZE = 256 ARCH_SPACE_LIMIT = 10240 ARCH_FLUSH_BUF_SIZE = 0 [ARCHIVE_REALTIME] ARCH_TYPE = REALTIME ARCH_DEST = DMOA_P |
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 = /home/dmdba/dmdbms/DMOA/dm.ini #dm.ini配置文件路径 INST_AUTO_RESTART = 1 #打开实例的自动启动功能 INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver #命令行方式启动 RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值, |
以mount方式启动
./dmserver /home/dmdba/dmdbms/DMOA/dm.ini mount
设置OGUID
另开窗口使用disql ./disql SYSDBA/SYSDBA@192.168.43.129:5234 SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS',1); SQL>sp_set_oguid(453331); SQL>alter database standby; SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0); |
5.开启守护进程
主备库都要执行: cd /home/dmdba/dmdbms/bin ./dmwatcher /home/dmdba/dmdbms/DMOA/dmwatcher.ini |
注册并启动守护进程服务
./dm_service_installer.sh -t dmwatcher -p DMOA_P -watcher_ini /home/dmdba/dmdbms/DMOA/dmwatcher.ini ./dm_service_installer.sh -t dmwatcher -p DMOA_S -watcher_ini /home/dmdba/dmdbms/DMOA/dmwatcher.ini 启动守护服务 service DmWatcherServiceDMOA_P start service DmWatcherServiceDMOA_S start |
6. 开启监视器
配置监视器(192.168.43.130已安装dm软件 无库实例)dmmonitor.ini
MON_DW_CONFIRM = 1 #确认监视器模式 MON_LOG_PATH = /home/dmdba/dmdbms/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.43.128:52141 MON_DW_IP = 192.168.43.129:52141 |
启动监视器
./dmmonitor /home/dmdba/dmdbms/dmmonitor.ini
7.测试建表和插入数据备机是否能及时同步
主库执行的一系列DDL及DML更新插入都会同步到备库
8.模拟主库故障
断开(192.168.43.128)网络 关闭网卡后确认监视器进行了自动主备切换
192.168.43 129即DMOA_S可以继续提供服务,作为主库可以进行读写操作
恢复网络后(ifup ens33)DMOA_P作为standby加入集群
9.手动切换
192.168.43.130监视服务器上login 登陆监视器运行并执行switchover
二、读写分离集群
读写分离集群部署步骤同守护集群大致相同,不再复述。区别点在于归档的配置是实时归档和即时归档的区别(dmarch.ini配置参数的不同)
三、异步备库
本部署流程是在已有2节点数据守护集群的前提下添加一台异步备库
- 环境说明
机器 | 初始状态 | 操作系统 | 实例 |
192.168.43.121 | 异步备库 | Centos 7 | DMOA_ST |
2.数据准备
192.168.43.128(主库)进行联机备份操作
另开窗口使用disql连接
./disql SYSDBA/SYSDBA@192.168.43.128:5234
SQL>BACKUP DATABASE BACKUPSET '/home/dmdba/dmdbms/BACKUP_FILE_01';
拷贝备份文件到备库所在机器, 并执行脱机数据库还原与恢复
拷贝备份文件: su - dmdba scp -rp BACKUP_FILE_01/ 192.168.43.131:/home/dmdba/dmdbms/ 192.168.43.131上执行如下: dmdba初始化DMOA_ST实例 ./dminit PATH=/home/dmdba/dmdbms/ INSTANCE_NAME=DMOA_ST DB_NAME=DMOA_ST PORT_NUM=5234 PAGE_SIZE=16 CASE_SENSITIVE=Y CHARSET=0 还原: ./dmrman CTLSTMT="RECOVER DATABASE '/home/dmdba/dmdbms/DMOA/dm.ini' FROM BACKUPSET '/home/dmdba/dmdbms/BACKUP_FILE_01'" 恢复: ./dmrman CTLSTMT="RECOVER DATABASE '/home/dmdba/dmdbms/DMOA/dm.ini' FROM BACKUPSET '/home/dmdba/dmdbms/BACKUP_FILE_01'" 更新: ./dmrman CTLSTMT="RECOVER DATABASE '/home/dmdba/dmdbms/DMOA/dm.ini' UPDATE DB_MAGIC" |
3.配置主库
dm.ini
#配置有异步归档时,打开定时器,定时同步归档到异备库 TIMER_INI= 1 |
dmmal.ini 增加异步备库DMOA_ST的配置项如下
[MAL_INST3] MAL_INST_NAME = DMOA_ST #实例名,和dm.ini中的INSTANCE_NAME一致 MAL_HOST = 192.168.43.131 #MAL系统监听TCP连接的IP地址 MAL_PORT = 61141 #MAL系统监听TCP连接的端口 MAL_INST_HOST = 192.168.43.131 #实例的对外服务IP地址 MAL_INST_PORT = 5234 #实例的对外服务端口,和dm.ini中的PORT_NUM一致 MAL_DW_PORT = 52141 #实例对应的守护进程监听TCP连接的端口 MAL_INST_DW_PORT = 33141 #实例监听守护进程TCP连接的端 |
dmarch.ini添加如下增加异步归档配置
[ARCHIVE_ASYNC] ARCH_TYPE = ASYNC #异步归档类型 ARCH_DEST = DMOA_ST #异步归档目标实例名 ARCH_TIMER_NAME = RT_TIMER #定时器名称,和dmtimer.ini中的名称 |
配置dmtimer.ini,用于定时触发实例发送归档日志到异步备库。
[RT_TIMER] #和dmarch.ini中的ARCH_TIMER_NAME一致 TYPE = 2 FREQ_MONTH_WEEK_INTERVAL = 1 FREQ_SUB_INTERVAL = 0 FREQ_MINUTE_INTERVAL = 0 START_TIME = 14:00:00 END_TIME = 15:00:00 DURING_START_DATE = 2021-08-05 13:00:00 DURING_END_DATE = 9999-12-31 23:59:59 NO_END_DATE_FLAG = 1 DESCRIBE = RT TIMER IS_VALID = 1 |
4.配置备库
dm.ini
#配置有异步归档时,打开定时器,定时同步归档到异备库 TIMER_INI= 1 |
dmmal.ini 增加异步备库DMOA_ST的配置项如下
[MAL_INST3] MAL_INST_NAME = DMOA_ST #实例名,和dm.ini中的INSTANCE_NAME一致 MAL_HOST = 192.168.43.131 #MAL系统监听TCP连接的IP地址 MAL_PORT = 61141 #MAL系统监听TCP连接的端口 MAL_INST_HOST = 192.168.43.131 #实例的对外服务IP地址 MAL_INST_PORT = 5234 #实例的对外服务端口,和dm.ini中的PORT_NUM一致 MAL_DW_PORT = 52141 #实例对应的守护进程监听TCP连接的端口 MAL_INST_DW_PORT = 33141 #实例监听守护进程TCP连接的端 |
dmarch.ini添加如下增加异步归档配置
[ARCHIVE_ASYNC] ARCH_TYPE = ASYNC #异步归档类型 ARCH_DEST = DMOA_ST #异步归档目标实例名 ARCH_TIMER_NAME = RT_TIMER #定时器名称,和dmtimer.ini中的名称 |
配置dmtimer.ini,用于定时触发实例发送归档日志到异步备库。
[RT_TIMER] #和dmarch.ini中的ARCH_TIMER_NAME一致 TYPE = 2 FREQ_MONTH_WEEK_INTERVAL = 1 FREQ_SUB_INTERVAL = 0 FREQ_MINUTE_INTERVAL = 0 START_TIME = 14:00:00 END_TIME = 15:00:00 DURING_START_DATE = 2021-08-05 13:00:00 DURING_END_DATE = 9999-12-31 23:59:59 NO_END_DATE_FLAG = 1 DESCRIBE = RT TIMER IS_VALID = 1 |
5.配置异步备库
dm.ini修改如下
#实例名,建议使用―组名_守护环境_序号的命名方式,总长度不能超过16 INSTANCE_NAME= DMOA_ST PORT_NUM= 5234 #数据库实例监听端口 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复制到异步备库上
cd /home/dmdba/dmdbms/DMOA
scp dmmal.ini 192.168.43.131:/home/dmdba/dmdbms/DMOA
dmarch.ini如下(异步备库只需要本地归档)
[ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = /home/dmdba/dmdbms/DMOA/arch_DMOA ARCH_FILE_SIZE = 256 ARCH_SPACE_LIMIT = 10240 ARCH_FLUSH_BUF_SIZE = 0 |
dmwatcher.ini
[GRP1] DW_TYPE = GLOBAL #全局守护类型 DW_MODE = MANUAL #自动切换模式 DW_ERROR_TIME = 10 #远程守护进程故障认定时间 INST_ERROR_TIME =10#本地实例故障认定时间 INST_OGUID = 453331 #守护系统唯一OGUID值 INST_INI = /home/dmdba/dmdbms/DMOA/dm.ini #dm.ini配置文件路径 INST_AUTO_RESTART = 1 #打开实例的自动启动功能 INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver #命令行方式启动 |
以Mount方式启动异步备库
su - dmdba
cd /home/dmdba/dmdbms/bin
./dmserver /home/dmdba/dmdbms/DMOA/dm.ini mount
设置OGUID
./disql SYSDBA/SYSDBA@192.168.43.131:5234 SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS',1); SQL>sp_set_oguid(453331); SQL>alter database standby; SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0); |
配置监视器dmmonitor.ini,增加到DMOA_ST守护进程的MON_DW_IP配置项
MON_DW_IP = 192.168.43.131:52141
6.启动异步备库守护进程
./dmwatcher /home/dmdba/dmdbms/DMOA/dmwatcher.in
7.开启监视器
./dmmonitor /home/dmdba/dmdbms/dmmonitor.ini
显示如下
- 注册服务
如果想让dmserver、dmwatcher和dmmonitor服务开机自启动,需要手动注册服务,注册步骤必须用root用户进行,注册完成后重启机器时,就会自动启动dmserver、dmwatcher和dmmonitor服务。其中,因为确认监视器一直处于工作状态,所以确认监视器需要注册dmmonitor服务,自动启动;非确认监视器是在查看信息时才使用,届时手动启动控制台dmmonitor服务即可,可以不用注册dmmonitor服务。详细的配置请参考《DM8_Linux服务脚本使用手册》。
以下为本次实验注册的守护进程服务和监视进程服务(除了创建服务时使用root用户其他操作都在dmdba用户下进行)
./dm_service_installer.sh -t dmwatcher -p DMOA_P -watcher_ini /home/dmdba/dmdbms/DMOA/dmwatcher.ini ./dm_service_installer.sh -t dmwatcher -p DMOA_S -watcher_ini /home/dmdba/dmdbms/DMOA/dmwatcher.ini ./dm_service_installer.sh -t dmwatcher -p DMOA_ST -watcher_ini /home/dmdba/dmdbms/DMOA/dmwatcher.ini ./dm_service_installer.sh -t dmmonitor -p monitor -watcher_ini /home/dmdba/dmdbms/DMOA/dmwatcher.ini |
更多资讯请上达梦技术社区了解: https://eco.dameng.com