注册
达梦第五课-数据库一主两备守护集群部署
技术分享/ 文章详情 /

达梦第五课-数据库一主两备守护集群部署

WXY是对称的 2025/06/06 307 0 0

数据守护集群概念

DM 数据守护(Data Watch)是一种集成化的高可靠性解决方案,满足用户对数据

安全性和高可用性的要求。主要解决由于硬件故障、自然灾害等原因导致的数据库

服务长时间中断问题,提供不间断数据库服务。

一、     数据守护集群架构及原理

1.    守护进程

主要功能:监控数据库状态、发送状态信息、监控其他守护进程消息、接收监视器消息、主备库启动运行、备库故障处理、备库异常处理、主库故障处理、故障修复处理

故障自动切换:主库发生故障时,确认监视器自动选择一个备库,切换为主库对外提供服务,故障自动切换模式,要求必须配置且只能配置一个确认监视器

故障手动切换:由用户根据实际情况,通过监视器命令将备库切换为主库。在用户干预之前,备库可以继续提供只读服务,但修改非临时表数据的操作将会失败。

2.    监视器作用及类型

监视器作用:监视数据守护状态、状态信息确认(配置为故障自动切换的确认监视器的情况下)、管理数据守护状态、发起故障自动接管命令

监视器类型:

监控模式(dmmonitor.ini:MON_DW_CONFIRM=0)

确认模式(dmmonitor.ini:MON_DW_CONFIRM=1)

区别:确认模式除了具备监控模式所有功能外,还具有状态确认和自动接管两个功能。

状态确认:主库守护进程监测到备库故障时,需要向监视器求证,确认备库是真的故障了,再启动故障处理流程将归档失效,避免脑裂。状态确认只对故障自动切换数据守护系统有效,主库守护进程在满足一定条件时,会切换到 Confirm 状态,然后根据不同的场景决定是否切换为 Failover 状态并启动故障处理流程。

自动接管:故障自动切换模式下,确认监视器检测到主库故障后,根据收到的主备 LSN、归档状态、MAL 链路状态等信息,确定一个接管备库,并将其切换为主库。

二、     实战演练

1.    环境准备

模拟生产环境一主一备一灾备,监视器放在灾备环境进行部署。

1.1        服务器及IP规划

主机类型 IP地址 实例名 操作系统 其他
主库 192.168.20.31(内部通讯) DM1 centos7
备库 192.168.20.32(内部通讯) DM2 centos7
灾备库/监视器 192.168.20.33(内部通讯) DM3 centos7 监视器和灾备库共同部署

1.2        端口规划

实例名 OGUID PORT_NUM MAL_INST_DW_PORT MAL_HOST MAL_PORT MAL_DW_PORT
DM1 45331 5236 5237 192.168.20.31 5238 5239
DM2 45331 5236 5237 192.168.20.32 5238 5239
DM3 45331 5236 5237 192.168.20.33 5238 5239

2.    数据库准备

伪代码流程类似如下

./DMInstall.bin -i <\<EOF
1
n
y
21
1
/home/dmdba/dmdbms
y
y
EOF

2.1        实例初始化

DM1节点
cd /home/dmdba/dmdbms/bin
./dminit path=/home/dmdba/dmdbms/data/  PAGE\_SIZE=32  EXTENT\_SIZE=32  CASE\_SENSITIVE=Y DB\_NAME=DM1  INSTANCE\_NAME=DM1 PORT\_NUM=5236 LOG\_SIZE=256 BUFFER=512 SYSDBA\_PWD=Dameng123  SYSAUDITOR\_PWD=Dameng123
DM2节点
cd /home/dmdba/dmdbms/bin
./dminit path=/home/dmdba/dmdbms/data/  PAGE\_SIZE=32  EXTENT\_SIZE=32  CASE\_SENSITIVE=Y DB\_NAME=DM2  INSTANCE\_NAME=DM2 PORT\_NUM=5236 LOG\_SIZE=256 BUFFER=512 SYSDBA\_PWD=Dameng123 SYSAUDITOR\_PWD=Dameng123
DM3节点
cd /home/dmdba/dmdbms/bin
./dminit path=/home/dmdba/dmdbms/data/  PAGE\_SIZE=32  EXTENT\_SIZE=32  CASE\_SENSITIVE=Y DB\_NAME=DM3  INSTANCE\_NAME=DM3 PORT\_NUM=5236 LOG\_SIZE=256 BUFFER=512 SYSDBA\_PWD=Dameng123  SYSAUDITOR\_PWD=Dameng123

2.2        三个节点注册分别服务,注册的服务为DMSERVER,启动状态为open

#DM1 
su root
cd /home/dmdba/dmdbms/script/root
 sh dm\_service\_installer.sh -t dmserver -dm\_ini /home/dmdba/dmdbms/data/DM1/dm.ini -p DMSERVER
#DM2
su root
cd /home/dmdba/dmdbms/script/root
 sh dm\_service\_installer.sh -t dmserver -dm\_ini /home/dmdba/dmdbms/data/DM2/dm.ini -p DMSERVER
#DM3
su root
cd /home/dmdba/dmdbms/script/root
 sh dm\_service\_installer.sh -t dmserver -dm\_ini /home/dmdba/dmdbms/data/DM3/dm.ini -p DMSERVER

2.3        配置环境变量

vi .bash\_profile
export LD\_LIBRARY\_PATH="\$LD\_LIBRARY\_PATH:/home/dmdba/dmdbms/bin"
export DM\_HOME="/home/dmdba/dmdbms"
export PATH=\$PATH:\$DM\_HOME/bin

3.    集群部署

3.1        完成后分别启动数据库

DmServiceDM1 start
DmServiceDM2 start
DmServiceDM3 start

3.2        归档设置(三个节点均添加)

\[dmdba\@localhost \~]\$ disql sysdba
password:
Server\[LOCALHOST:5236]\:mode is normal, state is open
login used time : 5.758(ms)
disql V8
SQL> alter database mount ;

executed successfully

used time: 157.325(ms). Execute id is 0.

SQL> alter database archivelog;

executed successfully

used time: 34.430(ms). Execute id is 0.

SQL>  alter database add archivelog  'DEST=/home/dmdba/dmdbms/arch,type=local,file\_size=100,space\_limit=1024';

executed successfully

used time: 2.368(ms). Execute id is 0.

SQL>



SQL> alter database open ;

executed successfully

used time: 25.258(ms). Execute id is 0.

SQL>

3.2.1          修改主库DM1的归档配置文件

vi /home/dmdba/dmdbms/data/DM1/dmarch.ini
#DaMeng Database Archive Configuration file
#0:高性能,1:事务一致
ARCH_WAIT_APPLY      	 = 0        
[ARCHIVE_LOCAL1]
#本地归档类型
	ARCH_TYPE            = LOCAL        
#本地归档存放路径 
	ARCH_DEST            = /home/dmdba/dmdbms/data/DM1/arch  
    ARCH_FILE_SIZE       = 100
    ARCH_SPACE_LIMIT     = 1024
    ARCH_FLUSH_BUF_SIZE  = 2
    ARCH_HANG_FLAG       = 1

[ARCHIVE_REALTIME1]
#实时归档类型
	ARCH_TYPE            = REALTIME
#实时归档目标实例名
	ARCH_DEST            = DM2

[ARCHIVE_REALTIME2]
#实时归档类型
	ARCH_TYPE            = REALTIME
#实时归档目标实例名
	ARCH_DEST            = DM3

3.2.2          修改备库DM2的归档配置文件

vi /home/dmdba/dmdbms/data/DM2/dmarch.ini
#DaMeng Database Archive Configuration file
#0:高性能,1:事务一致
ARCH_WAIT_APPLY      	 = 0        
[ARCHIVE_LOCAL1]
#本地归档类型
	ARCH_TYPE            = LOCAL        
#本地归档存放路径 
	ARCH_DEST            = /home/dmdba/dmdbms/data/DM2/arch  
	ARCH_FILE_SIZE       = 1024
	ARCH_SPACE_LIMIT     = 51200
	ARCH_FLUSH_BUF_SIZE  = 2    
	ARCH_HANG_FLAG       = 1
[ARCHIVE_REALTIME1]
#实时归档类型
	ARCH_TYPE            = REALTIME
#实时归档目标实例名
	ARCH_DEST            = DM1

[ARCHIVE_REALTIME2]
#实时归档类型
	ARCH_TYPE            = REALTIME
#实时归档目标实例名
	ARCH_DEST            = DM3

3.2.3          修改备库DM3的归档配置文件

vi /home/dmdba/dmdbms/data/DM3/dmarch.ini
#DaMeng Database Archive Configuration file
#0:高性能,1:事务一致
ARCH_WAIT_APPLY      	 = 0        
[ARCHIVE_LOCAL1]
#本地归档类型
	ARCH_TYPE            = LOCAL        
#本地归档存放路径 
	ARCH_DEST            = /home/dmdba/dmdbms/data/DM2/arch  
	ARCH_FILE_SIZE       = 1024
	ARCH_SPACE_LIMIT     = 51200
	ARCH_FLUSH_BUF_SIZE  = 2    
	ARCH_HANG_FLAG       = 1
[ARCHIVE_REALTIME1]
#实时归档类型
	ARCH_TYPE            = REALTIME
#实时归档目标实例名
	ARCH_DEST            = DM1

[ARCHIVE_REALTIME2]
#实时归档类型
	ARCH_TYPE            = REALTIME
#实时归档目标实例名
	ARCH_DEST            = DM2

3.3        主库模拟具备数据的生产环境,创建一个表

SQL> create table t1(id int,name varchar(20));
executed successfully
used time: 21.249(ms). Execute id is 66601.
SQL> insert into t1 values(1,'a') ;
affect rows 1
used time: 4.601(ms). Execute id is 66602.
SQL> commit ;
executed successfully
used time: 1.122(ms). Execute id is 66603.

3.4        所有节点都调整参数

vi /home/dmdba/dmdbms/data/DM1/dm.ini
vi /home/dmdba/dmdbms/data/DM2/dm.ini
vi /home/dmdba/dmdbms/data/DM3/dm.ini
                MAL_INI                         = 1         #dmmal.ini
                ARCH_INI                        = 1         #dmarch.ini
#data watch
                ALTER_MODE_STATUS               = 0         #Whether to permit database user to alter database mode
                ENABLE_OFFLINE_TS               = 2         #Whether tablespace can be offline

3.5        所有节点都编辑mal参数文件

vi /home/dmdba/dmdbms/data/DM1/dmmal.ini
vi /home/dmdba/dmdbms/data/DM2/dmmal.ini
vi /home/dmdba/dmdbms/data/DM3/dmmal.ini
MAL_CHECK_INTERVAL         = 5  #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL     = 5  #判定 MAL 链路断开的时间
MAL_TEMP_PATH              = /home/dmdba/dmdbms/data/malpath/  #临时文件目录
MAL_BUF_SIZE               = 256  #单个 MAL 缓存大小,单位 MB
MAL_SYS_BUF_SIZE           = 2048  #MAL 总大小限制,单位 MB
MAL_COMPRESS_LEVEL         = 0  #MAL 消息压缩等级,0 表示不压缩

[MAL_INST1]
MAL_INST_NAME            = DM1  #实例名,和 dm.ini 的 INSTANCE_NAME 一致
MAL_HOST                 = 192.168.20.31  #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT                 = 5238  #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST            = 192.168.30.31  #实例的对外服务 IP 地址
MAL_INST_PORT            = 5236  #实例对外服务端口,和 dm.ini 的 PORT_NUM 一致
MAL_DW_PORT              = 5239  #实例对应的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT         = 5237  #实例监听守护进程 TCP 连接的端口

[MAL_INST2]
MAL_INST_NAME            = DM2
MAL_HOST                 = 192.168.20.32
MAL_PORT                 = 5238
MAL_INST_HOST            = 192.168.30.32
MAL_INST_PORT            = 5236
MAL_DW_PORT              = 5239
MAL_INST_DW_PORT         = 5237

[MAL_INST3]
MAL_INST_NAME            = DM3
MAL_HOST                 = 192.168.20.33
MAL_PORT                 = 5238
MAL_INST_HOST            = 192.168.30.33
MAL_INST_PORT            = 5236
MAL_DW_PORT              = 5239
MAL_INST_DW_PORT         = 5237

3.6        所有节点都编辑dmwatcher参数文件(注意路径)

vi /home/dmdba/dmdbms/data/DM1/dmwatcher.ini
vi /home/dmdba/dmdbms/data/DM2/dmwatcher.ini
vi /home/dmdba/dmdbms/data/DM3/dmwatcher.ini
 [GRP1]
DW_TYPE                  = GLOBAL  #全局守护类型
DW_MODE                  = AUTO  #MANUAL:故障手切 AUTO:故障自切
DW_ERROR_TIME            = 10  #远程守护进程故障认定时间
INST_ERROR_TIME          = 10  #本地实例故障认定时间
INST_RECOVER_TIME        = 60  #主库守护进程启动恢复的间隔时间
INST_OGUID               = 45331  #守护系统唯一 OGUID 值
INST_INI                 = /home/dmdba/dmdbms/data/DM1/dm.ini  #dm.ini 文件路径
INST_AUTO_RESTART        = 1  #打开实例的自动启动功能
INST_STARTUP_CMD         = /home/dmdba/dmdbms/bin/dmserver  #命令行方式启动
RLOG_SEND_THRESHOLD      = 0  #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD     = 0  #指定备库重演日志的时间阈值,默认关闭

3.8        备份还原数据

3.8.1          主库联机备份

cd /home/dmdba/dmdbms/bin

disql  sysdba  -E "backup database  backupset  '/home/dmdba/dmdbms/data/DM1/bak/full\_dmbackup'; "

disql sysdba/Dameng123  -E 'select \* from v\$backupset;';

3.8.2          将备份文件传输到两个备库

scp -r /home/dmdba/dmdbms/data/DM1/bak/full\_dmbackup root\@192.168.20.32:/home/dmdba/dmdbms/data/DM2/bak

scp -r /home/dmdba/dmdbms/data/DM1/bak/full\_dmbackup root\@192.168.20.33:/home/dmdba/dmdbms/data/DM3/bak

3.8.3          备库分别进行关闭

DmServiceDM2 stop

DmServiceDM3 stop

3.8.4          恢复备库

#DM2
cd /home/dmdba/dmdbms/bin
./dmrman
restore database '/home/dmdba/dmdbms/data/DM2/dm.ini' from backupset '/home/dmdba/dmdbms/data/DM2/bak/full\_dmbackup';
recover database '/home/dmdba/dmdbms/data/DM2/dm.ini' from backupset '/home/dmdba/dmdbms/data/DM2/bak/full\_dmbackup';
recover database '/home/dmdba/dmdbms/data/DM2/dm.ini' update db\_magic;
#DM3
cd /home/dmdba/dmdbms/bin
./dmrman
restore database '/home/dmdba/dmdbms/data/DM3/dm.ini' from backupset '/home/dmdba/dmdbms/data/DM3/bak/full\_dmbackup';
recover database '/home/dmdba/dmdbms/data/DM3/dm.ini' from backupset '/home/dmdba/dmdbms/data/DM3/bak/full\_dmbackup ';
recover database '/home/dmdba/dmdbms/data/DM3/dm.ini' update db\_magic;

3.9        主备库分别注册服务,server以mount模式注册

3.9.1          DM1主库注册服务

su -  root
/home/dmdba/dmdbms/script/root/dm\_service\_installer.sh -t dmserver -p DM1 -dm\_ini /home/dmdba/dmdbms/data/DM1/dm.ini -m mount
/home/dmdba/dmdbms/script/root/dm\_service\_installer.sh -t dmwatcher -p Watcher -watcher\_ini /home/dmdba/dmdbms/data/DM1/dmwatcher.ini

3.9.2          DM2备库注册服务

su -  root
/home/dmdba/dmdbms/script/root/dm\_service\_installer.sh -t dmserver -p DM2 -dm\_ini /home/dmdba/dmdbms/data/DM2/dm.ini -m mount
/home/dmdba/dmdbms/script/root/dm\_service\_installer.sh -t dmwatcher -p Watcher -watcher\_ini /home/dmdba/dmdbms/data/DM2/dmwatcher.ini

3.9.3          DM3备库注册服务

su -  root
/home/dmdba/dmdbms/script/root/dm\_service\_installer.sh -t dmserver -p DM3 -dm\_ini /home/dmdba/dmdbms/data/DM3/dm.ini -m mount
/home/dmdba/dmdbms/script/root/dm\_service\_installer.sh -t dmwatcher -p Watcher -watcher\_ini /home/dmdba/dmdbms/data/DM3/dmwatcher.ini

3.10        启动数据库,修改状态

3.10.1      Mount模式启动主库,调整OGUID以及数据库状态

/home/dmdba/dmdbms/bin/DmServiceDM1 start
/home/dmdba/dmdbms/bin/disql SYSDBA/Dameng123
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SP_SET_OGUID(45331);
ALTER DATABASE STANDBY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

3.10.2      Mount模式启动备库DM2,调整OGUID以及数据库状态

/home/dmdba/dmdbms/bin/DmServiceDM2 start
/home/dmdba/dmdbms/bin/disql SYSDBA/Dameng123
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SP_SET_OGUID(45331);
ALTER DATABASE STANDBY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

3.10.3      Mount模式启动备库DM3,调整OGUID以及数据库状态

/home/dmdba/dmdbms/bin/DmServiceDM3 start
/home/dmdba/dmdbms/bin/disql SYSDBA/Dameng123
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SP_SET_OGUID(45331);
ALTER DATABASE STANDBY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

3.11        查看配置信息

Select  arch_mode  from v$database ;
Select  arch_name,arch_type,arch_dest from v$dm_arch_ini;
Select  oguid  from v$instance ;
Select  *  from v$dm_mal_ini ; 

3.12        在监视器服务器上编辑监视器参数文件

3.12.1      确认模式参数文件

vi /home/dmdba/dmdbms/data/DM3/dmmonitor.ini
MON_DW_CONFIRM    = 1                    #确认监视器模式(0非确认监视器)
MON_LOG_PATH    = /home/dmdba/dmdbms/log     		     #监视器日志文件存放路径
MON_LOG_INTERVAL  = 60                   #每隔60秒定时记录系统信息到日志文件
MON_LOG_FILE_SIZE   = 512                #日志文件最大512M
MON_LOG_SPACE_LIMIT  = 2048              #不限定日志文件总占用空间
[GRP1] 
MON_INST_OGUID    = 45331               #组GRP1的唯一OGUID值
MON_DW_IP     = 192.168.20.31:5239     #集群内部节点1
MON_DW_IP     = 192.168.20.32:5239     #集群内部节点2
MON_DW_IP     = 192.168.20.33:5239     #集群内部节点3

3.12.2      非确认模式参数文件(监控模式)

vi /home/dmdba/dmdbms/data/DM3/dmmonitor\_manual.ini
MON_DW_CONFIRM    = 0                    #确认监视器模式(0非确认监视器)
MON_LOG_PATH    = /home/dmdba/dmdbms/log     		     #监视器日志文件存放路径
MON_LOG_INTERVAL  = 60                   #每隔60秒定时记录系统信息到日志文件
MON_LOG_FILE_SIZE   = 512                #日志文件最大512M
MON_LOG_SPACE_LIMIT  = 2048              #不限定日志文件总占用空间
[GRP1] 
MON_INST_OGUID    = 45331               #组GRP1的唯一OGUID值
MON_DW_IP     = 192.168.20.31:5239     #集群内部节点1
MON_DW_IP     = 192.168.20.32:5239     #集群内部节点2
MON_DW_IP     = 192.168.20.33:5239     #集群内部节点3

3.13        所有节点启动守护进程

/home/dmdba/dmdbms/bin/DmWatcherServiceWatcher start

3.14        所有节点查看端口状态

netstat  -anop|grep -E  '5236|5237|5238|5239'

3.15        监视器服务器使用root注册服务

/home/dmdba/dmdbms/script/root/dm\_service\_installer.sh -t dmmonitor -p Monitor -monitor\_ini /home/dmdba/dmdbms/data/DM3/dmmonitor.ini

3.16        启动确认监视器

su - dmdba
/home/dmdba/dmdbms/bin/DmMonitorServiceMonitor start

使用非确认监视器查看集群状态

/home/dmdba/dmdbms/bin/dmmonitor  /home/dmdba/dmdbms/data/DM3/dmmonitor\_manual.ini

3.17        主从同步验证

3.17.1      主库插入数据

Server[LOCALHOST:5236]:mode is primary, state is open
login used time : 22.142(ms)
disql V8
SQL> insert into t1 values(2,'3') ;
affect rows 1

used time: 5.680(ms). Execute id is 802.
SQL> commit ;
executed successfully
used time: 2.741(ms). Execute id is 803.
SQL> select * from t1;

LINEID     ID          NAME
---------- ----------- ----
1          1           a
2          2           3

used time: 2.168(ms). Execute id is 804

3.17.2      从库查看数据

[dmdba@localhost dmdbms]$ disql sysdba/Dameng123

服务器[LOCALHOST:5236]:处于备库打开状态
登录使用时间 : 14.245(ms)
disql V8
SQL> select * from t1;

行号     ID          NAME
---------- ----------- ----
1          1           a
2          2           3

已用时间: 12.207(毫秒). 执行号:1.
SQL>

3.18        客户端配置dm_svc.conf

##全局配置区
TIME_ZONE=(480)
LANGUAGE=(cn)
DMHA=(192.168.30.31:5236, 192.168.30.32:5236,192.168.30.33:5236)

##服务配置
[DMHA]
SWITCH_TIMES=(3)
SWITCH_INTERVAL=(100)
LOGIN_MODE=(1)

3.19        参数优化

参数 默认值 调整模式 注释
REDOS_PARALLEL_NUM 1 静态 REDO日志重演的线程数量,有效值1-64
REDOS_BUF_SIZE 1024 静态 待重演日志堆积的内存限制,堆积的日志缓冲区占用内存超过则将会被延迟加入重演队列,内存释放后再进入队列。
REDOS_BUF_NUM 4096 静态 待重演日志缓冲区允许堆积的数据限制。
REDOS_MAX_DELAY 1800 静态 备库重演日志缓冲区的时间限制,超过限制则认为重演异常。

建议使用自动优化脚本,根据实际服务器进行调整优化。

4. 集群启停

4.1 集群关闭

4.1.1 关闭监视器

DmMonitorServiceMonitor stop

4.1.2 关闭主库守护进程

DmWatcherServiceWatcher stop

4.1.3 关闭备库守护进程

DmWatcherServiceWatcher stop

4.1.4 关闭主库数据库实例

DmServiceDMSERVER stop

4.1.5 关闭备库数据库实例

DmServiceDMSERVER stop

4.2 集群启动

4.2.1 启动备库守护进程

[dmdba@localhost tmp]$ DmWatcherServiceWatcher start
Starting DmWatcherServiceWatcher:                          [ OK ]
[dmdba@localhost tmp]$ ps -ef|grep dmse
dmdba      2962      1  6 10:27 ?        00:00:00 /home/dmdba/dmdbms/bin/dmserver /home/dmdba/dmdbms/data/DM3/dm.ini mount
dmdba      3111   2380  0 10:27 pts/0    00:00:00 grep --color=auto dmse

4.2.2 启动主库守护进程

[dmdba@localhost ~]$ DmWatcherServiceWatcher start
Starting DmWatcherServiceWatcher:                          [ OK ]
[dmdba@localhost ~]$ ps -ef|grep dms
dmdba      4015      1 10 10:28 ?        00:00:00 /home/dmdba/dmdbms/bin/dmserver /home/dmdba/dmdbms/data/DM1/dm.ini mount
dmdba      4146   3057  0 10:28 pts/0    00:00:00 grep --color=auto dms

4.2.3 启动监视器

[dmdba@localhost tmp]$ DmMonitorServiceMonitor start
Starting DmMonitorServiceMonitor:                          [ OK ]
[dmdba@localhost tmp]$

4.2.4 查看集群状态

dmmonitor  /home/dmdba/dmdbms/data/DM3/dmmonitor_manual.ini
show global info

三.    集群切换演练

1        被动切换

重启主库服务器后,查看集群

image.png

2        主动切换

2.1          查看可选节点

查看可以切换的节点

choose switchover grp1

image.png

2.2          查看可以接管的节点(主库都挂掉且没有确认监视器的时候)

choose takeover grp1

image.png

2.3          主动切换主节点

查看可以切换的节点

choose switchover grp1 

image.png

2.4          登录监视器

login

2.5          执行切换

switchover  grp1.DM1

image.png

2.6          查看结果

show global info

image.png

3        备库宕机

正常状态下查看监视器

image.png

关闭备库DM2服务器后查看监视器
image.png

主库执行数据插入

Insert into t1 values (3,'dm2');
Commit ;

image.png

查看归档状态

SQL> select \* from v\$arch\_status;

image.png

监视器日志
image.png

重启备库DM1服务器后,查看监视器
image.png

在DM2服务器查看数据

Select  * from t1 ;

image.png
数据同步完成

查看集群状态
image.png

集群自动恢复

4        主库宕机

通过监视器查看当前状态

image.png

主库服务器关闭

Init  0

查看监视器日志

image.png

查看所有服务器状态

image.png
DM1的wstatus变成了ERROR

DM2升级为了主库primary

在DM2上插入数据

insert into t1 values(111,'dm2insert1');
commit ;
select * from t1 ;

image.png

DM3节点查看数据
image.png

自动切换完成,启动DM1节点

监视器日志
image.png

查看所有节点状态
image.png

查看数据
image.png
集群恢复完成

  1. 监视器和主库同时宕机(强制接管)
    查看集群状态
    Show global info
    image.png

关闭监视器
[dmdba@localhost ~]$ DmMonitorServiceMonitor stop
Stopping DmMonitorServiceMonitor:
[ OK ]
[dmdba@localhost ~]$

image.png
关闭主库守护进程
DmWatcherServiceWatcher stop
image.png

关闭主库数据库实例
[dmdba@localhost root]$ DmServiceDMSERVER stop
image.png

通过监视器查看集群状态
image.png

查看可以接管的实例
choose takeover grp1
choose takeover force grp1
image.png

使用DM1接管服务
image.png

查看集群状态
image.png

启动DM2数据库实例和守护进程
DmServiceDM2 start
DmWatcherServiceWatcher start
image.png
启动过程中监视器的日志
image.png

查看集群信息
show global info
image.png
集群恢复完成。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服