注册
达梦读写分离集群安装
专栏/技术分享/ 文章详情 /

达梦读写分离集群安装

wangbw1009 2026/04/17 183 0 0
摘要

读写分离集群搭建

一、安装规划

1.安装前规划
image.png
确认监视器IP 为10.10.122.23

说明:读写分离集群与数据守护集群架构基本类似,但在搭建过程中,归档类型和 dm_svc.conf 配置文件等存在一定区别。当然读写分离集群和数据守护集群最大的却别在于归档文件的参数ARCH_WAIT_APPLY中,读写分离集群要求数据强一致性,数据守护不要求。
2.架构图
image.png
3.切换模式说明
image.png

二、集群搭建

2.1 配置A机器
2.1.1初始化实例并备份数据

[root@dxfl2 soft]# mkdir -p /data/dmdata/
[root@dxfl2 ~]# mkdir -p /data/dmdata/bak/
[root@dxfl2 soft]# mkdir -p /data/dmdata/arch
[root@dxfl2 soft]# chmod 755 /data/
[root@dxfl2 soft]# chown -R dmdba:dinstall /data/

[dmdba@dxfl2 ~]$ dminit PATH=/data/dmdata/ INSTANCE_NAME=GRP1_RWW_01 PORT_NUM=5236 PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048 SYSDBA_PWD=Wangbowen0204 SYSAUDITOR_PWD=Wangbowen0204

--启动服务:
[dmdba@dxfl2 dmdata]$ dmserver /data/dmdata/DAMENG/dm.ini
--开启归档:
ALTER DATABASE MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE ADD ARCHIVELOG 'DEST=/data/dmdata/arch, TYPE=LOCAL, FILE_SIZE=1024, SPACE_LIMIT=51200';
ALTER DATABASE OPEN;

image.png

--修改dm.ini文件(直接命令行修改):
SP_SET_PARA_VALUE (2,'PORT_NUM',5236);
SP_SET_PARA_VALUE (2,'DW_INACTIVE_INTERVAL',60);
SP_SET_PARA_VALUE (2,'ALTER_MODE_STATUS',0);
SP_SET_PARA_VALUE (2,'ENABLE_OFFLINE_TS',2);
SP_SET_PARA_VALUE (2,'MAL_INI',1);
SP_SET_PARA_VALUE (2,'RLOG_SEND_APPLY_MON',64);
-------
--或者修改dm.ini文件
INSTANCE_NAME = #实例名
PORT_NUM = #数据库实例监听端口
DW_PORT = #守护环境下,监听守护进程连接端口
DW_ERROR_TIME = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息

image.png

启动DMAP服务,备份数据,(使用图形化创建实例时,会自动启动此服务,但是如果使用dminit创建,需要自己启动)
[dmdba@dxfl2 ~]$ ./dmdbms/bin/service_template/DmAPService start
Starting DmAPService:                                      [ OK ]
[dmdba@dxfl2 ~]$ dmrman CTLSTMT="BACKUP DATABASE '/data/dmdata/DAMENG/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/data/dmdata/bak'"

image.png

2.1.2 修改归档配置文件dmarch.ini


[dmdba@dxfl2 ~]$ vi /data/dmdata/DAMENG/dmarch.ini
ARCH_WAIT_APPLY            = 1  #0:高性能   1:事务一致 
[ARCHIVE_LOCAL]
ARCH_TYPE                = LOCAL  #本地归档类型
ARCH_DEST                = /data/dmdata/arch/  #本地归档存放路径
ARCH_FILE_SIZE           = 1024  #单个归档大小,单位 MB
ARCH_SPACE_LIMIT         = 51200  #归档上限,单位 MB

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

2.1.3 创建 dmmal.ini

[dmdba@dxfl2 ~]$ vi /data/dmdata/DAMENG/dmmal.ini
MAL_CHECK_INTERVAL         = 10  #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL     = 10  #判定 MAL 链路断开的时间
MAL_TEMP_PATH              = /data/dmdata/malpath/  #临时文件目录
MAL_BUF_SIZE               = 512  #单个 MAL 缓存大小,单位 MB
MAL_SYS_BUF_SIZE           = 2048  #MAL 总大小限制,单位 MB
MAL_COMPRESS_LEVEL         = 0  #MAL 消息压缩等级,0 表示不压缩

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

[MAL_INST2]
MAL_INST_NAME            = GRP1_RWW_02
MAL_HOST                 = 10.10.11.18
MAL_PORT                 = 5337
MAL_INST_HOST            = 10.10.122.25
MAL_INST_PORT            = 5236
MAL_DW_PORT              = 5437
MAL_INST_DW_PORT         = 5537

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

2.1.4 注册服务

[root@dxfl2 ~]# /home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmserver -p GRP1_RWW_01 -dm_ini /data/dmdata/DAMENG/dm.ini
Created symlink /etc/systemd/system/multi-user.target.wants/DmServiceGRP1_RWW_01.service → /usr/lib/systemd/system/DmServiceGRP1_RWW_01.service.
创建服务(DmServiceGRP1_RWW_01)完成
[root@dxfl2 ~]# /home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /data/dmdata/DAMENG/dmwatcher.ini
Created symlink /etc/systemd/system/multi-user.target.wants/DmWatcherServiceWatcher.service → /usr/lib/systemd/system/DmWatcherServiceWatcher.service.
创建服务(DmWatcherServiceWatcher)完成

image.png

2.1.5将备份传到B节点
[dmdba@dxfl2 bak]$ scp bak.bak bak.meta dmdba@10.10.11.18:/data/dmdata/bak/
image.png
2.2 配置B机器
2.2.1 初始化实例并恢复数据

--初始化实例:
dminit PATH=/data/dmdata/ INSTANCE_NAME=GRP1_RWW_02 PORT_NUM=5236 PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048 SYSDBA_PWD=Wangbowen0204 SYSAUDITOR_PWD=Wangbowen0204
--恢复数据:
[dmdba@dxfl3 ~]$ /home/dmdba/dmdbms/bin/service_template/DmAPService start
--从备份恢复:
dmrman CTLSTMT="RESTORE DATABASE '/data/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/data/dmdata/bak'"
--更新数据库:
dmrman CTLSTMT="RECOVER DATABASE '/data/dmdata/DAMENG/dm.ini' UPDATE DB_MAGIC"

2.2.2 配置参数文件

配置 dm.ini、dmmal.ini 和 dmwatcher.ini
配置dm.ini
vi /data/dmdata/DAMENG/dm.ini
INSTANCE_NAME  = GRP1_RWW_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 次的日志重演信息
将dmmal.ini和dmwatcher.ini从A机器拷贝过来即可

2.2.3 注册服务

/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmserver -p GRP1_RWW_02 -dm_ini /data/dmdata/DAMENG/dm.ini
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /data/dmdata/DAMENG/dmwatcher.ini

image.png

三、配置监视器

• 手动切换:集群各节点的 bin 目录中,存放非确认监视器配置文件。
• 自动切换:在确认监视器上(非集群节点),存放确认监视器配置文件,并注册后台自启服务。

3.1 创建 dmmonitor.ini

[dmdba@dxfl1 data]$ vi /dmdata/data/dmmonitor.ini

MON_DW_CONFIRM             = 0  #0:非确认(故障手切) 1:确认(故障自切)
MON_LOG_PATH               = ../log  #监视器日志文件存放路径
MON_LOG_INTERVAL           = 60  #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE          = 512  #单个日志大小,单位 MB
MON_LOG_SPACE_LIMIT        = 2048  #日志上限,单位 MB

[GRP1]
MON_INST_OGUID           = 45331  #组 GRP1 的唯一 OGUID 值
MON_DW_IP                = 10.10.122.24:5436  #IP 对应 MAL_HOST,PORT 对应 MAL_DW_PORT
MON_DW_IP                = 10.10.122.25:5437

切换root用户注册服务:
[root@dxfl1 ~]# /dmdata/data/script/root/dm_service_installer.sh -t dmmonitor -p Monitor -monitor_ini /dmdata/data/dmmonitor.ini

image.png

四、服务启动

A机器:
[dmdba@dxfl2 ~]$ DmServiceGRP1_RWW_01 start
SQL> SP_SET_OGUID(45331);
SQL> ALTER DATABASE PRIMARY;

[dmdba@dxfl3 ~]$ DmServiceGRP1_RWW_02 start
SP_SET_OGUID(45331);
ALTER DATABASE STANDBY;


[dmdba@dxfl2 ~]$ DmWatcherServiceWatcher start
[dmdba@dxfl3 ~]$ DmWatcherServiceWatcher start
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服