January 12, 2021—Damen 8 database guardian read-write separation cluster deployment process (two nodes)

Dameng 8 database guardian read-write separation cluster deployment process (two nodes)



1. Environmental description

Host name IP use operating system PORT_NUM MAL_INST_DW_PORT MAL_PORT MAL_DW_PORT
DM_P 192.168.180.130 192.168.181.130 主 库 GRP1_RWW_01 Redhat 6.9 32141 33141 61141 52141
DM_S 192.168.180.131 192.168.181.131 主 库 GRP1_RWW_02 Redhat 6.9 32142 33142 61142 52142
DM_M 192.168.180.132 Monitor Redhat 6.9

PORT_NUM: database instance listening port
MAL_INST_DW_PORT: instance monitoring daemon TCP connection port
MAL_PORT: MAL system monitoring TCP connection port
MAL_DW_PORT: instance corresponding daemon monitoring TCP connection port

2. Create users and groups, create directories (all node operations)

The script is as follows:

groupadd -g 1001 dinstall
useradd -u 1001 -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
id dmdba
passwd dmdba
mkdir -p /home/{
    
    dmdata,dmarch,dmbak,dmdbms}
chown -R dmdba:dinstall /home/{
    
    dmdata,dmarch,dmbak,dmdbms}
chmod -R 775 /home/{
    
    dmdata,dmarch,dmbak,dmdbms}

3. Install the database software and initialize the database (all node operations)

3.1 Mount the data mirroring software

mount -o loop /home/soft/dm8_20200907_x86_rh6_64_ent_8.1.1.126.iso /mnt/dmsoft

3.2 Install database software

su - dmdba
cd /mnt/dmsoft
./DMInstall.bin -i
请以root系统用户执行命令:
/opt/DM8/script/root/root_installer.sh

3.3 Initialize the database

./dminit path=/home/dmdata  PAGE_SIZE=16 
主备库初始化之后需要open一次才算初始化完成

安装和初始化数据库可以参考以下文档
https://blog.csdn.net/beatlove123/article/details/110489366

Fourth, configure the data guard cluster

4.1 Main library configuration

4.1.1 Configure dm.ini

INSTANCE_NAME = GRP1_RT_01 
PORT_NUM = 32141 #数据库实例监听端口 
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 次的日志发送信息

4.1.2 Configure dmmal.ini

MAL_CHECK_INTERVAL = 5 
#MAL 链路检测时间间隔 
MAL_CONN_FAIL_INTERVAL = 5 
#判定 MAL 链路断开的时间 
[MAL_INST1] 
MAL_INST_NAME = GRP1_RT_01 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致 
MAL_HOST = 192.168.189.130 #MAL 系统监听 TCP 连接的 IP 地址 
MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口 
MAL_INST_HOST = 192.168.179.130 #实例的对外服务 IP 地址 
MAL_INST_PORT = 32141 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致 
MAL_DW_PORT = 52141 #实例本地的守护进程监听 TCP 连接的端口 
MAL_INST_DW_PORT = 33141 #实例监听守护进程 TCP 连接的端口 
[MAL_INST2] 
MAL_INST_NAME = GRP1_RT_02 
MAL_HOST = 192.168.189.131 
MAL_PORT = 61142 
MAL_INST_HOST = 192.168.179.131 
MAL_INST_PORT = 32142 
MAL_DW_PORT = 52142 
MAL_INST_DW_PORT = 33142

4.1.3 Configure dmarch.ini

ARCH_WAIT_APPLY = 1
[ARCHIVE_REALTIME] 
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = GRP1_RT_02 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /home/dmdba/dm8/dmarch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位 Mb,0 表示无限制,范围 1024~4294967294M

4.1.4 Placement 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/dm8/dmdata/DAMENG/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /home/dmdba/dm8/dmdbms/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭

4.1.5 Modify database status

启动数据库到mount状态
./dmserver /home/dmdba/dm8/dmdata/DAMENG/dm.ini mount 
Disql登录
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); 
SQL>sp_set_oguid(453331); 
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0); 
SQL>alter database primary; 

4.2 standby database configuration

4.2.1 Configure dm.ini

INSTANCE_NAME = GRP1_RWW_02 
PORT_NUM = 32142 #数据库实例监听端口 
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 次的日志发送信息

4.2.2 Configure dmmal.ini

MAL_CHECK_INTERVAL = 5 
#MAL 链路检测时间间隔 
MAL_CONN_FAIL_INTERVAL = 5 
#判定 MAL 链路断开的时间 
[MAL_INST1] 
MAL_INST_NAME = GRP1_RWW_01 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致 
MAL_HOST = 192.168.189.130 #MAL 系统监听 TCP 连接的 IP 地址 
MAL_PORT = 61141 
#MAL 系统监听 TCP 连接的端口 
MAL_INST_HOST = 192.168.179.130 #实例的对外服务 IP 地址 
MAL_INST_PORT = 32141 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致 
MAL_DW_PORT = 52141 #实例本地的守护进程监听 TCP 连接的端口 
MAL_INST_DW_PORT = 33141 #实例监听守护进程 TCP 连接的端口 
[MAL_INST2] 
MAL_INST_NAME = GRP1_RWW_02 
MAL_HOST = 192.168.189.131 
MAL_PORT = 61142 
MAL_INST_HOST = 192.168.179.131 
MAL_INST_PORT = 32142 
MAL_DW_PORT = 52142 
MAL_INST_DW_PORT = 33142

4.2.3 Configure dmarch.ini

ARCH_WAIT_APPLY = 1
[ARCHIVE_REALTIME] 
ARCH_TYPE = REALTIME #即时归档类型
ARCH_DEST = GRP1_RWW_01 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /home/dmdba/dm8/dmarch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位 Mb,0 表示无限制,范围 1024~4294967294M

4.2.4 Placement 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/dm8/dmdata/DAMENG/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /home/dmdba/dm8/dmdbms/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭

4.2.5 Modify database status

启动数据库到mount状态
./dmserver /home/dmdba/dm8/dmdata/DAMENG/dm.ini mount 
Disql登录
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); 

4.3 Configure monitor dmmonitor.ini

MON_DW_CONFIRM = 1 #确认监视器模式
MON_LOG_PATH = /home/dmdba/dm8/dmdata/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.189.130:52141
MON_DW_IP = 192.168.189.131:52142

4.4 Start the monitor to view the cluster status

[dmdba@RH6 bin]$ ./dmmonitor /home/dmdba/dm8/monitor/dmmonitor.ini 
[monitor]         2020-11-30 23:40:48: DMMONITOR[4.0] V8
[monitor]         2020-11-30 23:40:48: DMMONITOR[4.0] IS READY.
[monitor]         2020-11-30 23:40:48: 收到守护进程(GRP1_RWW_01)消息
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2020-11-30 17:14:54  OPEN           OK        GRP1_RWW_01       OPEN        PRIMARY   VALID    10       56226           56226           
[monitor]         2020-11-30 23:40:48: 收到守护进程(GRP1_RWW_02)消息
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2020-11-30 17:15:05  OPEN           OK        GRP1_RWW_02       OPEN        STANDBY   VALID    10       56226           56226  
ISTATUS、RSTAT   状态显示为以上图表示正常           

4.5 Automatic switchover of simulated failure

关闭主数据库服务器模拟主库故障,监视器会打印如下日志
[monitor]         2020-11-27 23:45:05: 检测到PRIMARY实例故障,开始对组(GRP1)执行自动接管
[monitor]         2020-11-27 23:45:05: 通知组(GRP1)当前活动的守护进程设置MID
[monitor]         2020-11-27 23:45:05: 通知组(GRP1)当前活动的守护进程设置MID成功
[monitor]         2020-11-27 23:45:05: 开始使用实例GRP1_RT_02接管
[monitor]         2020-11-27 23:45:05: 通知守护进程GRP1_RT_02切换TAKEOVER状态
[monitor]         2020-11-27 23:45:05: 守护进程(GRP1_RT_02)状态切换 [OPEN-->TAKEOVER]
[monitor]         2020-11-27 23:45:06: 切换守护进程GRP1_RT_02为TAKEOVER状态成功
[monitor]         2020-11-27 23:45:06: 实例GRP1_RT_02开始执行SP_SET_GLOBAL_DW_STATUS(0, 7)语句
[monitor]         2020-11-27 23:45:06: 实例GRP1_RT_02执行SP_SET_GLOBAL_DW_STATUS(0, 7)语句成功
[monitor]         2020-11-27 23:45:06: 实例GRP1_RT_02开始执行SP_APPLY_KEEP_PKG()语句
[monitor]         2020-11-27 23:45:06: 实例GRP1_RT_02执行SP_APPLY_KEEP_PKG()语句成功
[monitor]         2020-11-27 23:45:06: 实例GRP1_RT_02开始执行ALTER DATABASE MOUNT语句
[monitor]         2020-11-27 23:45:08: 实例GRP1_RT_02执行ALTER DATABASE MOUNT语句成功
[monitor]         2020-11-27 23:45:08: 实例GRP1_RT_02开始执行ALTER DATABASE PRIMARY语句
[monitor]         2020-11-27 23:45:08: 实例GRP1_RT_02执行ALTER DATABASE PRIMARY语句成功
[monitor]         2020-11-27 23:45:11: 通知实例GRP1_RT_02修改所有归档状态无效
[monitor]         2020-11-27 23:45:11: 修改所有实例归档为无效状态成功
[monitor]         2020-11-27 23:45:11: 实例GRP1_RT_02开始执行ALTER DATABASE OPEN FORCE语句
[monitor]         2020-11-27 23:45:13: 实例GRP1_RT_02执行ALTER DATABASE OPEN FORCE语句成功
[monitor]         2020-11-27 23:45:13: 实例GRP1_RT_02开始执行SP_SET_GLOBAL_DW_STATUS(7, 0)语句
[monitor]         2020-11-27 23:45:13: 实例GRP1_RT_02执行SP_SET_GLOBAL_DW_STATUS(7, 0)语句成功
[monitor]         2020-11-27 23:45:13: 通知守护进程GRP1_RT_02切换OPEN状态
[monitor]         2020-11-27 23:45:13: 守护进程(GRP1_RT_02)状态切换 [TAKEOVER-->OPEN]
[monitor]         2020-11-27 23:45:14: 切换守护进程GRP1_RT_02为OPEN状态成功
[monitor]         2020-11-27 23:45:14: 通知组(GRP1)的守护进程执行清理操作
[monitor]         2020-11-27 23:45:14: 清理守护进程(GRP1_RT_02)请求成功
[monitor]         2020-11-27 23:45:15: 使用实例GRP1_RT_02接管成功
[monitor]         2020-11-27 23:45:15:(GRP1)使用实例GRP1_RT_02自动接管成功

4.6 Cluster status check after failure

[monitor]         2020-11-27 23:51:38: 守护进程(GRP1_RT_01)状态切换 [NONE-->OPEN]
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2020-11-27 17:25:45  OPEN           OK        GRP1_RT_01       OPEN        STANDBY   NULL     10       56226           56226           

[monitor]         2020-11-27 23:51:39: 守护进程(GRP1_RT_02)状态切换 [OPEN-->RECOVERY]
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2020-11-27 17:25:56  RECOVERY       OK        GRP1_RT_02       OPEN        PRIMARY   VALID    11       57584           57584           

[monitor]         2020-11-27 23:51:40: 守护进程(GRP1_RT_02)状态切换 [RECOVERY-->OPEN]
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2020-11-27 17:25:57  OPEN           OK        GRP1_RT_02       OPEN        PRIMARY   VALID    11       57584           57584 

to sum up

If there is a problem during the setup process, please check the configuration! Check the configuration! Check the configuration! In most cases, the problem is caused by the wrong configuration. This is the method of configuring two nodes, if you have multiple nodes, you only need to add correspondingly in the configuration file.

Guess you like

Origin blog.csdn.net/beatlove123/article/details/112364508