注册
达梦主备集群搭建
培训园地/ 文章详情 /

达梦主备集群搭建

陈星宇 2022/11/07 1245 0 0

一,环境准备

1.设备准备

搭建DM主备集群最好准备3台服务器,一台主库服务器,一台备库服务器,一台监视器服务器。主备库服务器需配置两张网卡,且三台服务器都要安装数据库服务器,并将内部通信IP的端口开放。
注:如果测试搭建时,没有3台服务器,可以将监视器配置到备库服务器上。

2.本地目录规划

主备库服务器目录规划保持一致

数据库安装目录:		/dm8
实例安装目录:		/dmdata/
归档日志存放目录:	/dmarch
备份文件存放目录:	/dmbak

3.IP与实例规划

服务器名 外部服务IP 内部通信IP 实例名 端口号
DM1 192.168.92.201 192.168.92.191 DMRT1 5237
DM2 192.168.92.202 192.168.92.192 DMRT2 5237

4.端口规划

主库 备库
数据库实例监听端口 5237 5237
MAL系统监听TCP连接的端口 61141 61143
实例本地的守护进程监听TCP连接的端口 52141 52143
实例监听守护进程TCP连接的端口 33141 33143

集群之间防火墙需开放以上所有端口,集群对客户端只需要开通数据库实例监听端口。
例:检测端口5236是否开放(回车后没有返回即为端口开放可以使用)
netstat -ano | grep 5237
image.png

5.查看各实例所在主机的操作系统位数、大小端模式、时区及时间设置都应一致

1.查看操作系统位数        
uname -a    
2.查看时区        
date -R	   

6.关闭防火墙

查看防火状态 systemctl status firewalld service iptables status
systemctl stop firewalld.service (暂时关闭防火墙服务,系统重启后防火墙还会打开)
systemctl disable firewalld.service(通过关闭防火墙服务,开机自动启动,来做到永久关闭防火墙服务)

7.安装达梦数据库

安装步骤可参考:
https://eco.dameng.com/document/dm/zh-cn/start/install-dm-linux-prepare.html

8.初始化主备库的实例

su dmdba
cd /dm8/bin
主库实例:
./dminit path=/dmdata PAGE_SIZE=32 EXTENT_SIZE=32 INSTANCE_NAME=DMRT1 PORT_NUM=5237
image.png
备库实例:
./dminit path=/dmdata PAGE_SIZE=32 EXTENT_SIZE=32 INSTANCE_NAME=DMRT2 PORT_NUM=5237
image.png

二,集群搭建-主库

1、备份数据库

1.1 主库创建实例之后,启动数据库并登录        
./dmserver /dmdata/DAMENG/dm.ini 

image.png
1.2 关闭数据库,以./dmrman(脱机备份还原工具)备份数据库
BACKUP DATABASE ‘/dmdata/DAMENG/dm.ini’ FULL BACKUPSET ‘/dmbak/backup/’;
image.png
1.3 将备份文件复制到备库对应目录下(如果是root用户,复制成功需要将备份文件设置属于dmdba:dinstall用)
scp -r /dmbak/backup/ dmdba@192.168.92.202:/dmbak/backup/
image.png

2、修改dm.ini

vim /dmdata/DAMENG/dm.ini
INSTANCE_NAME =DMRT1
PORT_NUM = 5237 #数据库实例监听端口
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库OFFLINE表空间
MAL_INI = 1 #打开MAL系统
ARCH_INI = 1 #打开归档配置

3、配置dmmal.ini

(在/dmdata/DAMENG/下创建的新文件)
vim /dmdata/DAMENG/dmmal.ini
MAL_CHECK_INTERVAL = 5 #MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定MAL链路断开的时间
[MAL_INST1]
MAL_INST_NAME = DMRT1 #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 192.168.92.191 #MAL系统监听TCP连接的IP地址
MAL_PORT = 61141 #MAL系统监听TCP连接的端口
MAL_INST_HOST = 192.168.92.201 #实例的对外服务IP地址
MAL_INST_PORT = 5237 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 52141 #实例本地的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 33141 #实例监听守护进程TCP连接的端口
[MAL_INST2]
MAL_INST_NAME = DMRT2
MAL_HOST = 192.168.92.192
MAL_PORT = 61143
MAL_INST_HOST = 192.168.92.202
MAL_INST_PORT = 5237
MAL_DW_PORT = 52143
MAL_INST_DW_PORT = 33143

4、配置dmarch.ini

(在/dm8/data/DAMENG/下创建的新文件)配置本地归档和实时归档
vim /dmdata/DAMENG/dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DMRT2 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dmarch #本地归档文件存放路径
ARCH_FILE_SIZE = 64 #单位Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 10240 #单位Mb,0表示无限制,范围1024~2147483647M

5、配置dmwatcher.ini

(在/dm8/data/DAMENG/下创建的新文件)配置守护进程,配置为全局守护类型,使用自动切换模式
vim /dmdata/DAMENG/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 = /dmdata/DAMENG/dm.ini #dm.ini配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm8/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭

6、以Mount方式启动主库

./dmserver /dmdata/DAMENG/dm.ini mount

7、设置OGUID

启动命令行工具disql,登录主库设置OGUID值。
./disql SYSDBA/SYSDBA:5237
sp_set_oguid(453331);

8、修改数据库模式

alter database primary;

三,集群搭建-备库

1、恢复数据

启动dmrman执行数据库还原
cd /dm8/bin
./dmrman
RESTORE DATABASE ‘/dmdata/DAMENG/dm.ini’ FROM BACKUPSET ‘/dmbak/backup’;
RECOVER DATABASE ‘/dmdata/DAMENG/dm.ini’ FROM BACKUPSET ‘/dmbak/backup’;
RECOVER DATABASE ‘/dmdata/DAMENG/dm.ini’ UPDATE DB_MAGIC;
image.png
image.png

2、修改dm.ini

vim /dmdata/DAMENG/dm.ini
INSTANCE_NAME =DMRT2
PORT_NUM = 5237 #数据库实例监听端口
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库OFFLINE表空间
MAL_INI = 1 #打开MAL系统
ARCH_INI = 1 #打开归档配置

3、配置dmmal.ini

(在/dmdata/DAMENG/下创建的新文件)
vim /dmdata/DAMENG/dmmal.ini
MAL_CHECK_INTERVAL = 5 #MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定MAL链路断开的时间
[MAL_INST1]
MAL_INST_NAME = DMRT1 #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 192.168.92.191 #MAL系统监听TCP连接的IP地址
MAL_PORT = 61141 #MAL系统监听TCP连接的端口
MAL_INST_HOST = 192.168.92.201 #实例的对外服务IP地址
MAL_INST_PORT = 5237 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 52141 #实例本地的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 33141 #实例监听守护进程TCP连接的端口
[MAL_INST2]
MAL_INST_NAME = DMRT2
MAL_HOST = 192.168.92.192
MAL_PORT = 61143
MAL_INST_HOST = 192.168.92.202
MAL_INST_PORT = 5237
MAL_DW_PORT = 52143
MAL_INST_DW_PORT = 33143

4、配置dmarch.ini

(在/dm8/data/DAMENG/下创建的新文件)配置本地归档和实时归档
vim /dmdata/DAMENG/dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DMRT1 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dmarch #本地归档文件存放路径
ARCH_FILE_SIZE = 64 #单位Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 10240 #单位Mb,0表示无限制,范围1024~2147483647M

5、配置dmwatcher.ini

(在/dm8/data/DAMENG/下创建的新文件)配置守护进程,配置为全局守护类型,使用自动切换模式
vim /dmdata/DAMENG/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 = /dmdata/DAMENG/dm.ini #dm.ini配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm8/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭

6、以Mount方式启动备库

./dmserver /dmdata/DAMENG/dm.ini mount

7、设置OGUID

启动命令行工具disql,登录备库设置OGUID值。
./disql SYSDBA/SYSDBA:5237
sp_set_oguid(453331);

8、修改数据库模式

alter database standby;

四,配置监视器

1、配置确认监视器
(在/dm8/data/DAMENG/下创建的新文件)
配置dmmonitor.ini
vim /dmdata/DAMENG/dmmonitor.ini
MON_DW_CONFIRM = 1 #确认监视器模式
MON_LOG_PATH = /dmdata/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔60s定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大32M
MON_LOG_SPACE_LIMIT = 1024 #不限定日志文件总占用空间
[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.92.191:52141
MON_DW_IP = 192.168.92.192:52143
2、配置普通监视器
vim /dmdata/DAMENG/dmmonitor2.ini
MON_LOG_PATH = /dmdata/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔60s定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大32M
MON_LOG_SPACE_LIMIT = 1024 #不限定日志文件总占用空间
[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.92.191:52141
MON_DW_IP = 192.168.92.192:52143

五,测试集群是否搭建成功

1.启动主备机上的数据库
先启动主库,在启动备库
./dmserver /dmdata/DAMENG/dm.ini mount
2.启动守护进程
先启动主库的守护进程,在启动备库的守护进程
./dmwatcher /dmdata/DAMENG/dmwatcher.ini
3.启动确认监视器
./dmmonitor /dmdata/DAMENG/dmmonitor.ini
image.png
当以下参数符号要求,集群搭建成功

  • 守护进程状态 WSTATUS 为 OPEN
  • 实例状态 ISTATUS 为 OPEN
  • 归档类型 RTYPE 为 REALTIME
  • 归档状态 RSTAT 为 VALID
    4.disql客户端验证
    4.1使用disql客户端登录主库,创建表,插入数据
    ./disql SYSDBA/SYSDBA@192.168.92.201:5237
    create table test(id int);
    insert into test values(1);
    commit;
    image.png
    4.2使用disql客户端登录备库,查询test表
    ./disql SYSDBA/SYSDBA@192.168.92.202:5237
    select * from test;
    image.png
    注:主库插入/更改数据后要提交(commit),主备库的数据才会同步

六,注册服务与服务名配置

用root用户进入安装目录下的/script/root
cd /dm8/script/root
image.png

1.注册实例服务
主机:
./dm_service_installer.sh -t dmserver -dm_ini /dmdata/DAMENG/dm.ini -p DMRT1
备机:
./dm_service_installer.sh -t dmserver -dm_ini /dmdata/DAMENG/dm.ini -p DMRT2

2.注册守护进程服务
主机:
./dm_service_installer.sh -t dmwatcher -watcher_ini /dmdata/DAMENG/dmwatcher.ini -p dmw1
备机:
./dm_service_installer.sh -t dmwatcher -watcher_ini /dmdata/DAMENG/dmwatcher.ini -p dmw2

3.注册确认监视器服务
./dm_service_installer.sh -t dmmonitor -monitor_ini /dmdata/DAMENG/dmmonitor.ini -p dmm

4.服务名配置 dm_svc.conf,Linux中此文件位于/etc 目录
vim /etc/dm_svc.conf
TIME_ZONE=(480)
LANGUAGE=(cn)
DM_TIME=(192.168.92.201:5237,192.168.92.202:5237)
[DM_TIME]
LOGIN_MODE =(1)
SWITCH_TIMES=(60)
SWITCH_INTERVAL=(1000)
image.png
达梦主备集群搭建完成

七,主备集群启动与关闭顺序

集群启动顺序:
1.启动主备机上的数据库
先启动主库,在启动备库
./DmServiceDMRT1 start
./DmServiceDMRT2 start
2.启动守护进程
先启动主库的守护进程,在启动备库的守护进程
./DmWatcherServicedmw1 start
./DmWatcherServicedmw2 start
3.启动监视器
./dmmonitor /dmdata/DAMENG/dmmonitor.ini

集群关闭顺序:
1.关闭监视器
./DmMonitorServicedmm stop
2.关闭守护进程
先关闭备库的守护进程,在关闭主库的守护进程
./DmWatcherServicedmw2 stop
./DmWatcherServicedmw1 stop
3.关闭主备机上的数据库
先关闭备库,在关闭主库
./DmServiceDMRT2 stop
./DmServiceDMRT1 stop

八,主备切换

正常情况下,如果主库出现错误,确认监视器会接管集群,将备库RAC2切换为primary(主库),切换后数据库正常工作。
如果出现问题后没有自动切换,也可以通过监视器的命令进行主备之间的切换
show-显示所有组的详细信息
image.png

login-登录监视器
image.png

choose switchover-查询可切换为PRIMARY库的备库列表
image.png

switchover DMRT2-切换DMRT2库为PRIMARY库
image.png
image.png

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服