暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

DM8 数据库主备/读写分离集群增加节点

原创 LeeWen2020 2021-12-19
396

DM8 数据库主备/读写分离集群增加节点

环境说明

在现有的DM8 主备集群或者读写分离集群上增加节点。

实例名 业务IP 心跳IP 备注
GRP1_RT_01 192.168.15.40 192.168.25.40 主库
GRP1_RT_02 192.168.15.41 192.168.25.41 备库
GRP1_RT_03 192.168.15.33 192.168.25.33 新添加备库

添加新节点

1、安装数据库软件并创建新备库实例

(1)安装软件,略。

(2)创建实例

[dmdba@localhost bin]$ ./dminit path=/home/dmdba/dmdata page_size=32 extent_size=32 
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2022-09-24
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL

 log file path: /home/dmdba/dmdata/DAMENG/DAMENG01.log


 log file path: /home/dmdba/dmdata/DAMENG/DAMENG02.log

write to dir [/home/dmdba/dmdata/DAMENG].
create dm database success. 
复制

2、备份主库恢复到新备库

(1)主库进行联机全库备份

[dmdba@localhost bin]$ ./disql
disql V8
用户名:
密码:

服务器[LOCALHOST:5236]:处于主库打开状态
登录使用时间 : 3.517(ms)
SQL> backup database backupset '/home/dmdba/db_bak2';
操作已执行
已用时间: 00:00:01.181. 执行号:600.
复制

(2)拷贝备份

scp -r /home/dmdba/db_bak2 192.168.15.33:/home/dmdba

(3)备库进行脱机恢复

./dmrman CTLSTMT="restore database '/home/dmdba/dmdata/DAMENG/dm.ini' from backupset '/home/dmdba/db_bak2'"
./dmrman CTLSTMT="recover database '/home/dmdba/dmdata/DAMENG/dm.ini' from backupset '/home/dmdba/db_bak2'"
./dmrman CTLSTMT="recover database '/home/dmdba/dmdata/DAMENG/dm.ini' update db_magic"
复制

image-20211219130841505

3、配置新备库

3.1 配置dm.ini

在新添加节点上配置新备库dm.ini参数修改如下:

INSTANCE_NAME = GRP1_RT_03   ##新添加节点数据库实例名
PORT_NUM = 5236	             ##端口默认5236
ALTER_MODE_STATUS = 0      
ENABLE_OFFLINE_TS = 2  
MAL_INI = 1 
ARCH_INI = 1 
复制

3.2 配置dmmal.ini

拷贝主库dmmal.ini文件到新备库上,并添加新备库内容,最终配置如下:

MAL_CHECK_INTERVAL = 5 
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = GRP1_RT_01
MAL_HOST = 192.168.25.40
MAL_PORT = 61142 
MAL_INST_HOST = 192.168.15.40
MAL_INST_PORT = 5236
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142
[MAL_INST2]
MAL_INST_NAME = GRP1_RT_02
MAL_HOST = 192.168.25.41
MAL_PORT = 61142 
MAL_INST_HOST = 192.168.15.41
MAL_INST_PORT = 5236
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142
[MAL_INST3]
MAL_INST_NAME = GRP1_RT_03
MAL_HOST = 192.168.25.33
MAL_PORT = 61142 
MAL_INST_HOST = 192.168.15.33
MAL_INST_PORT = 5236
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142
复制

3.3 配置dmarch.ini

创建或者修改dmarch.ini文件,配置本地归档和实时归档,最终文件内容如下:

ARCH_WAIT_APPLY = 0
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME 	
ARCH_DEST = GRP1_RT_01 	
[ARCHIVE_REALTIME2]
ARCH_TYPE = REALTIME 	
ARCH_DEST = GRP1_RT_02 	
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL 				
ARCH_DEST = /home/dmdba/dmarch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 1024
复制

3.4 配置dmwatcher.ini

创建并修改dmwatcher.ini文件,配置守护进程,配置为全局守护类型,使用自动切换模式。(也可以直接主库上将该文件拷贝过来)

[GRP1]
DW_TYPE = GLOBAL 					#全局守护类型
DW_MODE = AUTO 						#自动切换模式
DW_ERROR_TIME = 10 			#远程守护进程故障认定时间
INST_RECOVER_TIME = 30
INST_ERROR_TIME = 10 				#本地实例故障认定时间
INST_OGUID = 453331 				#守护系统唯一OGUID值
INST_INI = /home/dmdba/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 #指定备库重演日志的时间阀值,默认关闭
复制

3.5 以mount方式启动新备库

./dmserver /home/dmdba/dmdata/DAMENG/dm.ini mount
复制

image-20211219132138805

3.6 设置OGUID并修改数据库模式为STANDBY

disql使用SYSDBA登录新备库,执行下面命令:

SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(453331);
alter database standby;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
复制

image-20211219132459509

3.7 新备库配置dmwatcher系统服务

[root@localhost ~]# /home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -watcher_ini /home/dmdba/dmdata/DAMENG/dmwatcher.ini -p GRP1
Created symlink from /etc/systemd/system/multi-user.target.wants/DmWatcherServiceGRP1.service to /usr/lib/systemd/system/DmWatcherServiceGRP1.service.
创建服务(DmWatcherServiceGRP1)完成
复制

4、原集群主备库动态添加MAL配置

分别在原集群主备库中执行相关命令,动态增加MAL中新备库GRP1_RT_03的相关配置信息:

SF_MAL_CONFIG(1,0);
SF_MAL_INST_ADD('MAL_INST3','GRP1_RT_03','192.168.25.33',61142,'192.168.15.33',5236,52142,0,33142);
SF_MAL_CONFIG_APPLY();
SF_MAL_CONFIG(0,0);
复制

image-20211219134121698

5、原集群主备库动态添加归档配置

(1)首先原主库节点和备库节点均需要关闭dmwatcher服务,如下:

[dmdba@localhost bin]$ ./DmWatcherServiceGRP1 stop
Stopping DmWatcherServiceGRP1:                             [ OK ]
复制

(2)分别在原集群主备库中执行(需要数据库处于mount状态),添加dmarch.ini中归档节点,执行命令如下:

disql登录主库:

./disql SYSDBA
alter database mount;
alter database add archivelog 'DEST=GRP1_RT_03,TYPE=REALTIME';
复制

disql登录备库:

SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
alater database mount;
alter database add archivelog 'DEST=GRP1_RT_03,TYPE=REALTIME';
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
复制

6、修改监视器dmmonitor.ini

在监视器dmmonitor.ini文件中添加新备库信息,最终配置如下:

MON_DW_Confirm = 1 			#确认监视器模式
MON_LOG_PATH = /home/dmdba/dmdbms/log/GRP1 #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 		#每隔60s定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 		#每个日志文件最大32M
MON_LOG_SPACE_LIMIT = 1024 	#不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 453331 	#组GRP1的唯一OGUID值
MON_DW_IP = 192.168.25.40:52142
MON_DW_IP = 192.168.25.41:52142
MON_DW_IP = 192.168.25.33:52142    ##新备库
复制

7、启动所有集群节点(包括新添加节点)的dmwatcher服务,并重启监视器

启动所有节点dmwatcher服务:

cd $DM_HOME/bin
./DmWatcherServiceGRP1 start
Starting DmWatcherServiceGRP1:                             [ OK ]
复制

启动监视器,查看集群节点信息:

image-20211219141141422

至此,集群新备库节点添加完成。

简单总结

通过上面这种方式添加集群备库节点,相对于整个集群停机搭建的方式,时间上要节省很多,停机时间也很短。

停机时间主要在现有主备库添加新备库归档信息时,需要将停dmwatcher服务然后将数据库切换到mount状态,添加完成后启动dmwatcher服务即可。

更多资讯请上达梦技术社区了解:https://eco.dameng.com

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论

目录
  • DM8 数据库主备/读写分离集群增加节点
    • 环境说明
    • 添加新节点
      • 1、安装数据库软件并创建新备库实例
      • 2、备份主库恢复到新备库
      • 3、配置新备库
      • 4、原集群主备库动态添加MAL配置
      • 5、原集群主备库动态添加归档配置
      • 6、修改监视器dmmonitor.ini
      • 7、启动所有集群节点(包括新添加节点)的dmwatcher服务,并重启监视器
    • 简单总结