DMRWC集群部署

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

453332

453332

453332

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. 安装达梦数据库程序

        三台服务器分别安装达梦数据库程序

参考DM8安装步骤:2-6icon-default.png?t=N7T8https://blog.csdn.net/weixin_42546587/article/details/139498714

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  = 204800 #单位 Mb,0 表示无限制,范围 1024~4294967294M

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 = 204800 #单位 Mb,0 表示无限制,范围 1024~4294967294M

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 = 204800 #单位 Mb,0 表示无限制,范围 1024~4294967294M

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 = 453332  #守护系统唯一 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
打开新窗口执行命令,在192.168.88.161:服务器执行
# su - dmdba
$ cd /dm8/dmdba/dmdbms/bin/
$ ./disql SYSDBA/SYSDBA


SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL> sp_set_oguid(453332);
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(453332);
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(453332);
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 = 453332 #组 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 = 453332 #组 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

  • 16
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值