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


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

    环境说明

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

    实例名业务IP心跳IP备注
    GRP1_RT_01192.168.15.40192.168.25.40主库
    GRP1_RT_02192.168.15.41192.168.25.41备库
    GRP1_RT_03192.168.15.33192.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. 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    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.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    (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"
    
    • 1
    • 2
    • 3

    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 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    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 #指定备库重演日志的时间阀值,默认关闭
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    3.5 以mount方式启动新备库
    ./dmserver /home/dmdba/dmdata/DAMENG/dm.ini mount
    
    • 1

    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);
    
    • 1
    • 2
    • 3
    • 4

    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)完成
    
    • 1
    • 2
    • 3

    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);
    
    • 1
    • 2
    • 3
    • 4

    image-20211219134121698

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

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

    [dmdba@localhost bin]$ ./DmWatcherServiceGRP1 stop
    Stopping DmWatcherServiceGRP1:                             [ OK ]
    
    • 1
    • 2

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

    disql登录主库:

    ./disql SYSDBA
    alter database mount;
    alter database add archivelog 'DEST=GRP1_RT_03,TYPE=REALTIME';
    
    • 1
    • 2
    • 3

    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);
    
    • 1
    • 2
    • 3
    • 4

    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    ##新备库
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

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

    启动所有节点dmwatcher服务:

    cd $DM_HOME/bin
    ./DmWatcherServiceGRP1 start
    Starting DmWatcherServiceGRP1:                             [ OK ]
    
    • 1
    • 2
    • 3

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

    image-20211219141141422

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

    简单总结

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

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

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

  • 相关阅读:
    VE成本分析的一次考察
    数字IC设计笔试题汇总(一)
    2022北京国际养老产业展览会/北京养老展/养老用品展11月
    Java面试题(每天10题)-------连载(31)
    【毕业设计】基于单片机的心率血氧健康监测手表 - 物联网 嵌入式
    leetcode.1769 移动所有球到每个盒子所需的最小操作数
    docker安装nginx1.20.2并配置nginx.conf
    pytorch基本流程
    【ROS机器人】Autolabor Pro RTK室外厘米级导航
    搭建GraphQL服务
  • 原文地址:https://blog.csdn.net/Mrkill123/article/details/127459574