配置DM8读写分离集群

IP、端口规划
主库:外部服务IP: 192.168.1.10
内部服务IP: 192.168.1.10
PORT_NUM: 5236
MAL_INST_DW_PORT: 33141
MAL_PORT: 61141
MAL_DW_PORT : 52141

备库:外部服务IP: 192.168.1.11
内部服务IP: 192.168.1.11
PORT_NUM: 5237
MAL_INST_DW_PORT: 33142
MAL_PORT: 61142
MAL_DW_PORT: 52142

两台虚拟机分别装好相同版本数据库软件

以下操作在主库进行

初始化主库
配置DM8读写分离集群
前台正常启停一次数据库,初始化才算完成
配置DM8读写分离集群

初始化数据库后,关闭数据库服务,然后备份主库数据
配置DM8读写分离集群
这里出现了错误,原因是没有启动DMAP服务,该服务没有启动的话DMRMAN无法使用

启动dmAP服务
配置DM8读写分离集群
[[email protected] bin]$ ./dmrman ctlstmt=“backup database ‘/home/dmdba/dmdbms/data/DAMENG/dm.ini’ to backupset_file_01 backupset’/home/dmdba/dmdbms/data/DAMENG/backupset_file_01’”

拷贝备份数据到备库[[email protected] bin]$ scp -r /home/dmdba/dmdbms/data/DAMENG/backupset_file_01/ 172.16.10.110:/home/dmdba/dmdba
@172.16.10.110’s password:
backupset_file_01.bak 100% 6246KB 110.0MB/s 00:00
backupset_file_01.meta 100% 73KB 29.3MB/s 00:00

以下操作在备库进行

初始化备库并启停一次
配置DM8读写分离集群
启动DMAP服务
配置DM8读写分离集群

使用DMRMAN工具恢复主库备份数据到备库 重建数据库
./dmrman ctlstmt=“restore database
‘/home/dmdba/dmdbms/data/DAMENG/dm.ini’ from backupset ‘/home/dmdba/backupset_file_01/’”

恢复数据库./dmrman ctlstmt=“recover database ‘/home/dmdba/dmdbms/data/DAMENG/dm.ini’ from backupset ‘/home/dmdba/backupset_file_01/’”

[email protected] bin]$ ./dmrman ctlstmt=“recover database ‘/home/dmdba/dmdbms/data/DAMENG/dm.ini’ update db_magic”

以下操作在主库进行

配置参数文件
配置主库的实例名为 GRP1_RWW_01

dm.ini 参数修改如下

INSTANCE_NAME = GRP1_RWW_01
PORT_NUM = 32141 #数据库实例监听端口DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息

配置 dmmal.ini
[[email protected] DAMENG]$ cat dmmal.ini MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = GRP1_RWW_01
MAL_HOST = 192.168.1.10
MAL_PORT = 61141
MAL_INST_HOST = 192.168.1.10
MAL_INST_PORT = 5236
MAL_DW_PORT = 52141
MAL_INST_DW_PORT = 33141
[MAL_INST2]
MAL_INST_NAME = GRP1_RWW_02
MAL_HOST = 192.168.1.11
MAL_PORT = 61142
MAL_INST_HOST = 192.168.1.11
MAL_INST_PORT = 5237
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142

修改 dmarch.ini,配置本地归档和即时归档。
[[email protected] DAMENG]$ cat dmarch.ini [ARCHIVE_TIMELY1]
ARCH_TYPE = TIMELY
ARCH_DEST = GRP1_RWW_02
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dmdba/dmdbms/data/DAMENG/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0

修改 dmwatcher.ini 配置守护进程,配置为全局守护类型,使用自动切换模式。
[[email protected] DAMENG]$ cat dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 453332
INST_INI = /home/dmdba/dmdbms/data/DAMENG/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0

启动主库到MOUNT状态
[[email protected] bin]$ ./dmserver …/data/DAMENG/dm.ini mount

使用disql工具登录数据库,设置 OGUID
[[email protected] bin]$ ./disql SYSDBA/[email protected]:5236
服务器[localhost:32141]:处于普通配置状态
登录使用时间 : 2.520(ms)
disql V8SQL> sp_set_para_value(1,‘alter_mode_status’,1);
DMSQL 过程已成功完成
已用时间: 19.653(毫秒). 执行号:0.
SQL> sp_set_oguid(453332);
DMSQL 过程已成功完成
已用时间: 2.761(毫秒). 执行号:1.
SQL> alter database primary;
操作已执行已用
时间: 3.123(毫秒). 执行号:0.
SQL> sp_set_para_value(1,‘alter_mode_status’,0);
DMSQL 过程已成功完成
已用时间: 8.415(毫秒). 执行号:2.

同样在备库上配置dm.ini dmmal.ini dmarch.ini dmwatcher.ini参数

参数配置完成后启动数据库到mount状态
[email protected] bin]$ ./dmserver …/data/DAMENG/dm.ini

使用disql工具登录数据库[[email protected] bin]$ ./disql SYSDBA/[email protected]:5237
服务器[LOCALHOST:32142]:处于普通配置状态
登录使用时间 : 2.727(ms)disql V8
SQL> SP_SET_OGUID(453332);
DMSQL 过程已成功完成
已用时间: 15.112(毫秒). 执行号:0.
SQL> alter database standby;
操作已执行
已用时间: 4.435(毫秒). 执行号:0.
SQL> SP_SET_PARA_VALUE(1,‘ALTER_MODE_STATUS’,0);
DMSQL 过程已成功完成
已用时间: 7.869(毫秒). 执行号:3.

启动各个主备库上的守护进程:
[[email protected] bin]$ ./dmwatcher …/data/DAMENG/dmwatcher.ini

修改 dmmonitor.ini 配置确认监视器,其中 MON_DW_IP 中的 IP 和 PORT 和dmmal.ini 中的 MAL_HOST 和 MAL_DW_PORT 配置项保持一致。生产环境中monitor需要配置在单独一台服务器上,测试环境就在主备上随便一台配置,这里我配置在主库

[[email protected] DAMENG]$ cat dmmonitor.ini MON_DW_CONFIRM = 1
MON_LOG_PATH = /home/dmdba/dmdbms/data/DAMENG/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0
[GRP1]
MON_INST_OGUID = 453332
MON_DW_IP = 192.168.1.10:52141
MON_DW_IP = 192.168.1.11:52142

启动monitor进程[[email protected] bin]$ ./dmmonitor …/data/DAMENG/dmmonitor.ini
[monitor] 2020-10-15 07:51:40: DMMONITOR[4.0] V8
[monitor] 2020-10-15 07:51:40: DMMONITOR[4.0] IS READY.
[monitor] 2020-10-15 07:51:40: 收到守护进程(GRP1_RWW_01)消息 WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN 2020-10-15 07:51:40 OPEN OK GRP1_RWW_01 OPEN PRIMARY VALID 2 38281 38281
[monitor] 2020-10-15 07:51:40: 收到守护进程(GRP1_RWW_02)消息 WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN 2020-10-15 07:51:39 OPEN OK GRP1_RWW_02 OPEN STANDBY VALID 2 38281 38281

至此数据库读写分离集群配置完成