1. RWC概述
达梦读写分离集群(DMRWC)是DM8提供的一个用于提升并发事务处理性能的集群组件。在一个高并发的事务型系统中,当写事务占的比例相对读事务较小时,DM8提供的这种独具创新的方案DMRWC,可通过客户端来实现读、写事务的自动分离,读事务在备机执行,写事务在主机执行,减轻主机的负载。也适用于读多写少的并发事务处理类系统,通过增加从节点提升整体性能水平。
读写分离集群由一个主库以及一个或多个配置了即时(Timely)归档的备库组成。主要目标是保障数据库可用性的基础上,实现了读、写操作的自动分离,进一步提升数据库的业务支撑能力。
读写分离集群通过即时归档机制保证主、备库数据一致性,并配合达梦数据库系统的各种接口(JDBC、DPI等),将只读操作自动分流到备库,有效降低主库的负载,提升系统吞吐量。
2. 集群规划
节点 |
node1 |
node2 |
node3 |
---|---|---|---|
服务器角色 |
primary |
standby,monitor |
standby |
业务IP |
192.168.88.161 |
192.168.88.162 |
192.168.88.163 |
对外服务IP |
192.168.88.161 |
192.168.88.162 |
192.168.88.163 |
实例名 |
RWC_01 |
RWC_02 |
RWC_03 |
OGUID |
|||
PORT_NUM |
5236 |
5236 |
5236 |
MAL_INST_DW_PORT |
33141 |
33142 |
33143 |
MAL_PORT |
61141 |
61142 |
61143 |
MAL_DW_PORT |
52141 |
52142 |
52143 |
安装目录 |
/dm8/dmdba/dmdbms |
/dm8/dmdba/dmdbms |
/dm8/dmdba/dmdbms |
实例目录 |
/dm8/dmdba/dmdata |
/dm8/dmdba/dmdata |
/dm8/dmdba/dmdata |
归档文件存放路径 |
/dm8/dmdba/dmdata/DAMENG/arch |
/dm8/dmdba/dmdata/DAMENG/arch |
/dm8/dmdba/dmdata/DAMENG/arch |
3. 安装达梦数据库程序
三台服务器分别安装达梦数据库程序
DMRWC集群部署
4. 初始化数据库实例
三台服务器分别初始化数据库实例
初始化数据库实例:#页大小32 #簇大小32 #字符集utf-8,#大小写敏感 #重做日志文件大小2048 #varchar类型对象的长度以字符为单位 使用dmdba用户 # su - dmdba $ mkdir /dm8/dmdba/dmdata $ cd /dm8/dmdba/dmdbms/bin/ $ ./dminit PATH=/dm8/dmdba/dmdata page_size=32 extent_size=32 CASE_SENSITIVE=1 CHARSET=1 LOG_SIZE=2048 LENGTH_IN_CHAR=1
命令行启停一次数据库实例服务 $ cd /dm8/dmdba/dmdbms/bin/ $ ./dmserver /dm8/dmdba/dmdata/DAMENG/dm.ini 日志界面显示 system is ready SYSTEM IS READY 说明数据库实例已经启动成功啦 输入: exit 正常关闭数据库实例服务。
5. 准备集群配置文件
5.1 创建目录
-- 三节点均操作 $ mkdir -p /dm8/dmdba/dmdata/DAMENG/arch #本地归档文件存放路径
5.2 dm.ini 数据库实例配置
修改文件dm.ini
192.168.88.161操作
$ vim /dm8/dmdba/dmdata/DAMENG/dm.ini #实例名,建议使用―组名_守护环境_序号‖的命名方式,总长度不能超过 16 INSTANCE_NAME = RWC_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 次的日志发送信息
192.168.88.162操作
$ vim /dm8/dmdba/dmdata/DAMENG/dm.ini #实例名,建议使用―组名_守护环境_序号‖的命名方式,总长度不能超过 16 INSTANCE_NAME = RWC_02 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 次的日志重演信息
192.168.88.163操作
$ vim /dm8/dmdba/dmdata/DAMENG/dm.ini #实例名,建议使用―组名_守护环境_序号‖的命名方式,总长度不能超过 16 INSTANCE_NAME = RWC_03 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 次的日志重演信息
5.3 dmarch.ini 配置本地归档和实时归档
创建新文件dmarch.ini
192.168.88.161操作
$ vim /dm8/dmdba/dmdata/DAMENG/dmarch.ini ARCH_WAIT_APPLY=1 [ARCHIVE_REALTIME1] ARCH_TYPE = REALTIME #远程实时归档 ARCH_DEST = RWC_02 #实时归档目标实例名(当数据库GRP1_RWW_01是主库时同步到其他目标实例) [ARCHIVE_REALTIME2] ARCH_TYPE = REALTIME #远程实时归档 ARCH_DEST = RWC_03 #实时归档目标实例名 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL #本地归档类型 ARCH_DEST = /dm8/dmdba/dmdata/DAMENG/arch #本地归档文件存放路径 ARCH_FILE_SIZE = 1024 #单位 Mb,本地单个归档文件最大值 ARCH_SPACE_LIMIT = #单位 Mb,0 表示无限制,范围 1024~M
192.168.88.162操作
$ vim /dm8/dmdba/dmdata/DAMENG/dmarch.ini ARCH_WAIT_APPLY=1 [ARCHIVE_REALTIME1] ARCH_TYPE = REALTIME #远程实时归档 ARCH_DEST = RWC_01 #实时归档目标实例名(当数据库RWC_02是主库时同步到其他目标实例) [ARCHIVE_REALTIME2] ARCH_TYPE = REALTIME #远程实时归档 ARCH_DEST = RWC_03 #实时归档目标实例名 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL #本地归档类型 ARCH_DEST = /dm8/dmdba/dmdata/DAMENG/arch #本地归档文件存放路径 ARCH_FILE_SIZE = 1024 #单位 Mb,本地单个归档文件最大值 ARCH_SPACE_LIMIT = #单位 Mb,0 表示无限制,范围 1024~M
192.168.88.163操作
$ vim /dm8/dmdba/dmdata/DAMENG/dmarch.ini ARCH_WAIT_APPLY=1 [ARCHIVE_REALTIME1] ARCH_TYPE = REALTIME #远程实时归档 ARCH_DEST = RWC_01 #实时归档目标实例名 [ARCHIVE_REALTIME2] ARCH_TYPE = REALTIME #远程实时归档 ARCH_DEST = RWC_02 #实时归档目标实例名 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL #本地归档类型 ARCH_DEST = /dm8/dmdba/dmdata/DAMENG/arch #本地归档文件存放路径 ARCH_FILE_SIZE = 1024 #单位 Mb,本地单个归档文件最大值 ARCH_SPACE_LIMIT = #单位 Mb,0 表示无限制,范围 1024~M
5.4 dmmal.ini 配置 MAL 系统
创建新文件dmmal.ini
三节点均操作
$ vim /dm8/dmdba/dmdata/DAMENG/dmmal.ini MAL_CHECK_INTERVAL = 60 #MAL 链路检测时间间隔 MAL_CONN_FAIL_INTERVAL = 60 #判定 MAL 链路断开的时间 [MAL_INST1] MAL_INST_NAME = RWC_01 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致 MAL_HOST = 192.168.88.161 #MAL 系统监听 TCP 连接的 IP 地址 MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口 MAL_INST_HOST = 192.168.88.161 #实例的对外服务 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 = RWC_02 MAL_HOST = 192.168.88.162 MAL_PORT = 61142 MAL_INST_HOST = 192.168.88.162 MAL_INST_PORT = 5236 MAL_DW_PORT = 52142 MAL_INST_DW_PORT = 33142 [MAL_INST3] MAL_INST_NAME = RWC_03 MAL_HOST = 192.168.88.163 MAL_PORT = 61143 MAL_INST_HOST = 192.168.88.163 MAL_INST_PORT = 5236 MAL_DW_PORT = 52143 MAL_INST_DW_PORT = 33143
5.5 dmwatcher.ini 配置守护进程
创建新文件dmwatcher.ini
三节点均操作
$ vim /dm8/dmdba/dmdata/DAMENG/dmwatcher.ini [GRP1] DW_TYPE = GLOBAL #全局守护类型 DW_MODE = AUTO #自动切换模式 DW_ERROR_TIME = 10 #远程守护进程故障认定时间 INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间 INST_ERROR_TIME = 10 #本地实例故障认定时间 INST_OGUID = #守护系统唯一 OGUID 值 INST_INI = /dm8/dmdba/dmdata/DAMENG/dm.ini #dm.ini 实例配置文件路径 INST_AUTO_RESTART = 1 #打开实例的自动启动功能 INST_STARTUP_CMD = /dm8/dmdba/dmdbms/bin/dmserver #命令行方式启动 RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭 RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
6. 准备数据
将192.168.88.161创建好的数据库实例,同步到另外两台服务器
6.1 脱机备份数据库
$ cd /dm8/dmdba/dmdbms/bin/ $ ./dmrman CTLSTMT="BACKUP DATABASE '/dm8/dmdba/dmdata/DAMENG/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/dm8/dmdba/dmdata/BACKUP_FILE_01' COMPRESSED"
日志打印如下:
dmrman V8 BACKUP DATABASE '/dm8/dmdba/dmdata/DAMENG/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/dm8/dmdba/dmdata/BACKUP_FILE_01' COMPRESSED file dm.key not found, use default license! Database mode = 0, oguid = 0 Normal of FAST Normal of DEFAULT Normal of RECYCLE Normal of KEEP Normal of ROLL EP[0]'s cur_lsn[38074], file_lsn[38074] Processing backupset /dm8/dmdba/dmdata/BACKUP_FILE_01 [Percent:100.00%][Speed:0.00M/s][Cost:00:00:03][Remaining:00:00:00] backup successfully! time used: 00:00:06.015
备份成功以后,在/dm8/dmdba/dmdata/路径下会生成一个BACKUP_FILE_01备份文件夹
将整个备份文件夹发送到备库
6.2 实例打压缩包并拷贝到备机
- 将备份文件打压缩包,并拷贝到备库所在机器
- 使用dmdba用户进入目录
$ cd /dm8/dmdba/ $ tar -czvf BACKUP_FILE_01.tar.gz BACKUP_FILE_01
- 拷贝文件
$ scp BACKUP_FILE_01.tar.gz dmdba@192.168.88.162:/dm8/dmdba/ $ scp BACKUP_FILE_01.tar.gz dmdba@192.168.88.163:/dm8/dmdba/
6.3 脱机数据库还原
- 分别进入两台备机服务器使用 dmdba用户执行命令
$ cd /dm8/dmdba/ $ tar -zxvf BACKUP_FILE_01.tar.gz
$ cd /dm8/dmdba/dmdbms/bin/ --RESTORE还原数据库 $ ./dmrman CTLSTMT="RESTORE DATABASE '/dm8/dmdba/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/dm8/dmdba/dmdata/BACKUP_FILE_01'" --RECOVER恢复数据库(因为脱机备份没有产生任何 REDO 日志,所以 恢复 可以跳过) $ ./dmrman CTLSTMT="RECOVER DATABASE '/dm8/dmdba/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/dm8/dmdba/dmdata/BACKUP_FILE_01'" --更新数据库魔数db_magic: $ ./dmrman CTLSTMT="RECOVER DATABASE '/dm8/dmdba/dmdata/DAMENG/dm.ini' UPDATE DB_MAGIC"
7. mount启动主库/备库并配置
在三台服务器分别执行: 使用dmdba用户,以mount方式启动数据库:
注意:启动后窗口不要关闭,需要继续配置数据库
$ cd /dm8/dmdba/dmdbms/bin/ $ ./dmserver /dm8/dmdba/dmdata/DAMENG/dm.ini mount
# su - dmdba $ cd /dm8/dmdba/dmdbms/bin/ $ ./disql SYSDBA/SYSDBA SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); SQL> sp_set_oguid(); SQL> alter database primary; SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0); SQL> COMMIT; SQL> EXIT
MAL 系统:MAL 系统是基于 TCP 协议实现的一种内部通信机制,具有可靠、灵活、高效的特性。DM 通过 MAL 系统实现 Redo 日志传输,以及其他一些实例间的消息通讯。
OGUID:
数据守护唯一标识码,配置数据守护时,需要由用户指定 OGUID 值。其中数据库的OGUID在 MOUNT 状态下由系统函数 SP_SET_OGUID 设置,守护进程和监视器的 OGUID值在配置文件中设定。
系统通过 OGUID 值确定一个守护进程组,由用户保证 OGUID 值的唯一性,并确保数据守护系统中,数据库、守护进程和监视器配置相同的 OGUID 值
primary 为主库,standby 为备库
打开新窗口执行命令,在192.168.88.162:服务器执行
# su - dmdba $ cd /dm8/dmdba/dmdbms/bin/ $ ./disql SYSDBA/SYSDBA SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); SQL> sp_set_oguid(); SQL> alter database standby; SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0); SQL> COMMIT; SQL> EXIT
打开新窗口执行命令,在192.168.88.163:服务器执行
# su - dmdba $ cd /dm8/dmdba/dmdbms/bin/ $ ./disql SYSDBA/SYSDBA SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); SQL> sp_set_oguid(); SQL> alter database standby; SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0); SQL> COMMIT; SQL> EXIT
8. 配置监视器
将监视器配置在备库,使用dmdba用户进入目录
在192.168.88.162操作
mkdir /dm8/dmdba/dmdata/DAMENG/dmmonitorlog
8.1 dmmonitor_auto.ini 配置确认监视器
$ cd /dm8/dmdba/dmdata/DAMENG/ $ vim dmmonitor_auto.ini MON_DW_CONFIRM = 1 #确认监视器模式 MON_LOG_PATH = /dm8/dmdba/dmdata/DAMENG/dmmonitorlog #监视器日志文件存放路径 MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件 MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间 [GRP1] MON_INST_OGUID = #组 GRP1 的唯一 OGUID 值 #以下配置为监视器到组 GRP1 的守护进程的连接信息,以―IP:PORT‖的形式配置 #IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT MON_DW_IP = 192.168.88.161:52141 MON_DW_IP = 192.168.88.162:52142 MON_DW_IP = 192.168.88.163:52143
8.2 dmmonitor_manual.ini 配置普通监视器
$ vim dmmonitor_manual.ini MON_DW_CONFIRM = 0 #普通监视器模式 MON_LOG_PATH = /dm8/dmdba/dmdata/DAMENG/dmmonitorlog #监视器日志文件存放路径 MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件 MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间 [GRP1] MON_INST_OGUID = #组 GRP1 的唯一 OGUID 值 #以下配置为监视器到组 GRP1 的守护进程的连接信息,以―IP:PORT‖的形式配置 #IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT MON_DW_IP = 192.168.88.161:52141 MON_DW_IP = 192.168.88.162:52142 MON_DW_IP = 192.168.88.163:52143
8.3 新建打开普通监视器的脚本
$ cd /dm8/dmdba/dmdbms/ $ vim show.sh #!/bin/sh cd /dm8/dmdba/dmdbms/bin; ./dmmonitor /dm8/dmdba/dmdata/DAMENG/dmmonitor_manual.ini;
8.4 启动普通监视器
$ cd /dm8/dmdba/dmdbms/ $ chmod 777 show.sh $ ./show.sh $ 注意打印的日志会报未收到守护进程消息(是因为下一步才启动守护进程,可以看到交互的日志)
9. 前台启动数据守护进程
- 在三台服务器分别执行
- 使用dmdba用户
$ cd /dm8/dmdba/dmdbms/bin/ $ ./dmwatcher /dm8/dmdba/dmdata/DAMENG/dmwatcher.ini
观察dmmonitor普通监视器的日志信息,
查看数据库为OPEN状态:在监视器日志输入 show
数据库状态自动从 MOUNT 转换为 OPEN,为正常
在三台服务器分别执行(先备库):结束守护进程,第 9 步的守护进程窗口 输入:exit
在三台服务器分别执行(先主库):结束mount状态,第 7 步的实例进程窗口 输入: exit
10. 注册数据库后台服务
- 注意:数据库确认监视器服务(最后启动)若检测到主库不在,则将备库切换为主库
- 使用root 用户注册服务,先查看帮助
# cd /dm8/dmdba/dmdbms/script/root/ # ./dm_service_installer.sh -h Usage: dm_service_installer.sh -t service_type [-p service_name_postfix] [-dm_ini dm_ini_file] [-watcher_ini watcher_ini_file ] [-monitor_ini monitor_ini_file] [-cssm_ini cssm_ini_file] [-dfs_ini dfs_ini_file] [-dcr_ini dcr_ini_file] [-dss_ini dss_ini_file] [-drs_ini drs_ini_file] [-dras_ini dras_ini_file] [-dcs_ini dcs_ini_file] [-server server_info] [-dmap_ini dmap_ini_file] [-m open|mount] [-y dependent_service] [-auto true|false] or dm_service_installer.sh [-s service_file_path] or dm_service_installer.sh -h -t 服务类型,包括dmimon,dmap,dmserver,dmwatcher,dmmonitor,dmcss,dmcssm,dmasmsvr,dmdcs,dmdrs,dmdras,dmdss -p 服务名后缀,对于dmimon,dmap服务类型无效 -dm_ini dm.ini文件路径 -watcher_ini dmwatcher.ini文件路径. -monitor_ini dmmonitor.ini文件路径. -dcr_ini dmdcr.ini文件路径. -cssm_ini dmcssm.ini文件路径. -dss_ini dss.ini文件路径. -drs_ini drs.ini文件路径. -dras_ini dras.ini文件路径. -dcs_ini dcs.ini文件路径. -dfs_ini dfs.ini文件路径. -dmap_ini dmap.ini文件路径. -server 服务器信息(IP:PORT) -auto 设置服务是否自动启动,值为true或false,默认true. -m 设置服务器启动模式open或mount,只针对dmserver服务类型生效,可选 -y 设置依赖服务,此选项只针对systemd服务环境下的dmserver和dmasmsvr服务生效 -s 服务脚本路径,设置则忽略除-y外的其他参数选项 -h 帮助
10.1 注册数据库实例服务
- 分别在三台服务器执行
- 创建数据库实例服务并设置为开机自启
- 注意:实例名与服务名需要对应,容易区分
- 161:RWC_01
- 162:RWC_02
- 163:RWC_03
# ./dm_service_installer.sh -t dmserver -p RWC_01 -dm_ini /dm8/dmdba/dmdata/DAMENG/dm.ini -auto true -m mount Created symlink from /etc/systemd/system/multi-user.target.wants/DmServiceDMSERVER.service to /usr/lib/systemd/system/DmService_RWC_01.service. 创建服务(DmServiceRWC_01)完成
10.2 注册数据库实例数据守护服务
- 创建数据库守护进程服务并设置为开机自启
- 161:DmWatcherServiceDMWATCHER
- 162:DmWatcherServiceDMWATCHER
- 163:DmWatcherServiceDMWATCHER
# ./dm_service_installer.sh -t dmwatcher -p DMWATCHER -watcher_ini /dm8/dmdba/dmdata/DAMENG/dmwatcher.ini -auto true Created symlink from /etc/systemd/system/multi-user.target.wants/DmWatcherServiceGRP1_DMWH_01 .service to /usr/lib/systemd/system/DmWatcherServiceGRP1_DMWH_01 .service. 创建服务(DmWatcherServiceDMWATCHER)完成
10.3 注册确认监视器服务
- 在192.168.88.162:注册确认监视器服务
# ./dm_service_installer.sh -t dmmonitor -p DMMONITOR_AUTO -monitor_ini /dm8/dmdba/dmdata/DAMENG/dmmonitor_auto.ini Created symlink from /etc/systemd/system/multi-user.target.wants/DmMonitorServiceDMMONITOR_AUTO.service to /usr/lib/systemd/system/DmMonitorServiceDMMONITOR_AUTO.service. 创建服务(DmMonitorServiceDMMONITOR_AUTO)完成
- 在三台服务器分别启动数据库实例服务
- 三台服务器的数据库目录相同
# cd /dm8/dmdba/dmdbms/bin
- 三台服务器的数据库实例服务名不同
# ./DmServiceRWC_01 start # ./DmServiceRWC_02 start # ./DmServiceRWC_03 start
- 在三台服务器分别启动守护进程服务:(并查看普通监视器日志)
- 三台服务器的数据库目录相同
- 三台服务器的数据库守护进程服务名相同
# cd /dm8/dmdba/dmdbms/bin # ./DmWatcherServiceDMWATCHER start
普通监视器日志
在监视器输入:show
10.4 验证集群功能
- 在主库创建表,查看备库是否同步
- 查看dmmonitor监视器日志, LSN 码是否一致
- 确认没问题,启动确认监视器服务
--后台启动 # cd /dm8/dmdba/dmdbms/bin/ # ./DmMonitorServiceDMMONITOR_AUTO start --前台启动 $ /dm8/dmdba/dmdbms/bin/dmmonitor path=/dm8/dmdba/dmdata/DAMENG/dmmonitor_auto.ini $ exit (退出后服务停止)
- 在普通监视器窗口输入 : exit
11. 搭建完成
12. 故障模拟
--状态查询 SELECT * FROM v$database ; --注释: --open状态(status = 4)下: ROLE 1 代表主库;2代表备库 ;0 代表普通库
12.1 主库161直接挂掉,reboot
开启确认监视器监视器
将主库161reboot,查看监视器状态
再次登陆161发现变成了备库,登录原备库162服务器,发现自动切换为主库
12.2 无故障情况下主备手动切换
choose switchover grp1 switchover grp1.RWC_01(这里需要先登录一下,然后再switchover)
12.3 故障情况下切换
choose takeover grp1 takeover RWC_01
13. 主备日常维护启停流程
启动集群顺序:
主库实例服务-备库实例服务-主库守护服务-备库守护服务-监视器服务
停止集群顺序:
停监视器-主库守护进程服务-备库守护进程服务-主库实例服务-备库实例服务
ps -ef|grep dmserver ps -ef|grep dmwatcher ps -ef|grep dmmonitor
--查看状态 # 数据库实例 systemctl status DmServiceRWC_01 --161 systemctl status DmServiceRWC_02 --162 systemctl status DmServiceRWC_03 --163 # 守护进程 systemctl status DmWatcherServiceDMWATCHER --161,162,163 # 监视器 systemctl status DmMonitorServiceDMMONITOR_AUTO --162 # 停止集群 --1、停止监视器服务(162) systemctl stop DmMonitorServiceDMMONITOR_AUTO --2、停止主库守护进程 systemctl stop DmWatcherServiceDMWATCHER --3、停止备库守护进程 systemctl stop DmWatcherServiceDMWATCHER --4、停止主库实例服务 systemctl stop DmServiceRWC_01 --5、停止备库实例服务 systemctl stop DmServiceRWC_02 systemctl stop DmServiceRWC_03 # 启动集群 --1、启动主库实例服务 systemctl start DmServiceRWC_01 --2、启动备库实例服务 systemctl start DmServiceRWC_02 systemctl start DmServiceRWC_03 --3、启动主库守护服务 systemctl start DmWatcherServiceDMWATCHER --4、启动备库守护服务 systemctl start DmWatcherServiceDMWATCHER --5、启动监视器服务 systemctl start DmMonitorServiceDMMONITOR_AUTO
今天的文章
DMRWC集群部署分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/78681.html