达梦数据库之主备集群的搭建

一、安装前准备

虚拟机及IP规划:
主机名数据库名实例名业务IP心跳IP
dm1DAMENGDM01

192.168.109.135

192.168.109.135
dm2DAMENGDM02192.168.109.136192.168.109.136
dm3DAMENGMON192.168.109.137192.168.109.137
端口规划:
主机名实例名MAL_HOSTMAL_PORTMAL_INST_HOSTMAL_INST_PORTPORT_NUMMAL_DW_PORTMAL_INST_DW_HOST

dm1

DM01192.168.109.13561141192.168.109.135523652365214133141
dm2DM02192.168.109.13661141192.168.109.136523652365214233142

 目录规划:

主机名安装目录实例目录归档目录备份目录
dm1/home/dmdba/dmdbms/dmdata/data/dmdata/arch/dmdata/dmbak
dm2/home/dmdba/dmdbms/dmdata/data/dmdata/arch/dmdata/dmbak

 ***记得关闭防火墙!
systemctl disable firewalld --永久关闭防火墙
systemctl stop firewalld --临时关闭防火墙
systemctl status firewalld --查看防火墙状态

二、配置主库

1.配置实例

使用dmdba用户,切换到/home/dmdba/dmdbms/bin目录下

./dminit path=/dmdata/data INSTANCE_NAME=DM01

2.启动后关闭

启动一次,进行数据库初始化,然后退出(输入exit),还是在bin目录下进行,这里不加mount

./dmserver /dmdata/data/DAMENG/dm.ini

3.进行脱机备份

dmdba用户中 , /home/dmdba/dmdbms/bin目录下,使用如下命令:  

./dmrman CTLSTMT="BACKUP DATABASE '/dmdata/data/DAMENG/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/dmdata/dmbak/BACKUP'"

#dmrman   恢复管理器命令
#CTLSTMT   该参数用于指定控制语句,即告诉dmrman要执行什么类型的备份或恢复操作
#BACKUP DATABASE  备份的是整个数据库
#/dmdata/data/DAMENG/dm.ini   数据库实例的配置文件路径
#FULL   全量备份
#/dmdata/dmbak/BACKUP    备份数据保存目录

4.将备份数据发给备库的/dmdata/dmbak目录下

scp -r /dmdata/dmbak/BACKUP/ dmdba@192.168.109.136:/dmdata/dmbak/
#scp 使用 scp 工具进行文件传输
#/dmdata/dmbak/BACKUP/   源目录
#dmdba@192.168.109.136  目标机器的地址
#:/dmdata/dmbak/    目标目录

这里可以切换到备库中,查看在/dmdata/data目录下是否存在BACKUP文件,若备份失败,请重新备份

三、配置备库

1.配置实例

同样也使用dmdba用户,切换到/home/dmdba/dmdbms/bin目录下执行

./dminit path=/dmdata/data INSTANCE_NAME=DM02

2.从备库中进行还原

dmdba用户, /home/dmdba/dmdbms/bin目录下,使用如下命令:  

./dmrman CTLSTMT="RESTORE DATABASE '/dmdata/data/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/dmbak/BACKUP'"
./dmrman CTLSTMT="RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/dmbak/BACKUP'"
./dmrman CTLSTMT="RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' UPDATE DB_MAGIC"

此时已完成还原,然后进行检查,启动主库和备库

先在 /home/dmdba/dmdbms/bin目录下启动     加mount

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

在主库和备库上分别重新再开一个终端,切换到 /home/dmdba/dmdbms/bin目录下,执行如下sql命令,进行判断:

./disql SYSDBA/SYSDBA@localhost:5236
select permanent_magic;
select file_lsn,cur_lsn from v$rlog;

四、修改ini文件配置参数

1.dm.ini

***主、备库都需要修改

dmdba用户打开dm.ini文件

vi /dmdata/data/DAMENG/dm.ini

主要修改ALTER_MODE_STATUS、ENABLE_OFFLINE_TS、MAL_INI、ARCH_INI四个参数,

在文件直接查找相应参数进行修改,查找方式为:   /+参数名    

主库:

INSTANCE_NAME = DM01   #主库实例名
PORT_NUM = 5236        #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60    #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0  #不允许手工方式修改实例模式/状态/OGUID --dm.ini默认为1,主备库需要修改为0
ENABLE_OFFLINE_TS = 2  #不允许备库 OFFLINE 表空间  --dm.ini默认为1,此处主备库都修改为2
MAL_INI = 1            #打开 MAL 系统             --dm.ini默认为0,主备库需要修改为1
ARCH_INI = 1           #打开归档配置               --dm.ini默认为0,主备库需要修改为1
RLOG_SEND_APPLY_MON = 64      #统计最近 64 次的日志发送信息  

备库:

INSTANCE_NAME = DM02   #备库实例名
PORT_NUM = 5236        #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60    #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0  #不允许手工方式修改实例模式/状态/OGUID --dm.ini默认为1,主备库需要修改为0
ENABLE_OFFLINE_TS = 2  #不允许备库 OFFLINE 表空间  --dm.ini默认为1,此处主备库都修改为2
MAL_INI = 1            #打开 MAL 系统             --dm.ini默认为0,主备库需要修改为1
ARCH_INI = 1           #打开归档配置               --dm.ini默认为0,主备库需要修改为1
RLOG_SEND_APPLY_MON = 64      #统计最近 64 次的日志发送信息  

2.dmarch.ini

dmdba用户打开dmarch.ini文件

vi /dmdata/data/DAMENG/dmarch.ini

主库:

[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME   #实时归档类型
ARCH_DEST = DM02      #实时归档目标实例名   --主库填写备库实例名,备库填写主库实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dmdata/dmarch/    #本地归档文件存放路径   --根据规划填写归档路径
ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值     
ARCH_SPACE_LIMIT = 4096 #单位 Mb, 0 表示无限制,范围 1024~4294967294M (必须改成非0)

备库:

[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME   #实时归档类型
ARCH_DEST = DM01      #实时归档目标实例名   --主库填写备库实例名,备库填写主库实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dmdata/dmarch/    #本地归档文件存放路径   --根据规划填写归档路径
ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值     
ARCH_SPACE_LIMIT = 4096 #单位 Mb, 0 表示无限制,范围 1024~4294967294M (必须改成非0)

3.dmmal.ini

dmdba用户打开dmmal.ini文件

vi /dmdata/data/DAMENG/dmmal.ini

主备库相同:

MAL_CHECK_INTERVAL = 5 #MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME = DM01  #主库实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.109.135  #MAL 系统监听 TCP 连接的 IP 地址   --规划主库的IP
MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口         --规划的端口
MAL_INST_HOST = 192.168.109.135  #实例的对外服务 IP 地址       --规划主库的IP 
MAL_INST_PORT = 5236 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致         --规划的端口    
MAL_DW_PORT = 52141 #实例对应的守护进程监听 TCP 连接的端口          --规划的端口
MAL_INST_DW_PORT = 33141 #实例监听守护进程 TCP 连接的端口            --规划的端口
[MAL_INST2]
MAL_INST_NAME = DM02   #备库实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.109.136        #--规划的备库IP 
MAL_PORT = 61142                  #--规划的端口
MAL_INST_HOST = 192.168.109.136   # --规划的备库IP 
MAL_INST_PORT = 5236              #--规划的端口
MAL_DW_PORT = 52142               #--规划的端口
MAL_INST_DW_PORT = 33142          #--规划的端口

4.dmwatcher.ini

dmdba用户打开dmwatcher.ini文件

vi /dmdata/data/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 值    --设置的OGUID值
INST_INI = /dmdata/data/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 #指定备库重演日志的时间阀值,默认关闭

五、配置监视器

dmdba用户打开dmmonitor.ini文件

vi /home/dmdba/dmdbms/bin/dmmonitor.ini

在文件中输入如下内容:

MON_DW_CONFIRM = 1 #确认监视器模式  #0:非确认(故障手切) 1:确认(故障自切)
MON_LOG_PATH = /dmdata/data/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT = 1024 #不限定日志文件总占用空间(必须改为非0)

[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.109.135:52141
MON_DW_IP = 192.168.109.136:52142

六、启动服务并修改参数OGUID

在主、备库中,dmdba用户,在/home/dmdba/dmdbms/bin目录下,启动服务

cd /home/dmdba/dmdbms/bin
./dmserver /dmdata/data/DAMENG/dm.ini mount

新开一个终端,主库中执行:

cd /home/dmdba/dmdbms/bin
./disql SYSDBA/SYSDBA@localhost:5236

#逐行执行如下sql
SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',1);
SP_SET_OGUID(453331);
ALTER DATABASE PRIMARY;
SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',0);
SELECT OGUID FROM V$INSTANCE;

新开一个终端,备库中执行:

cd /home/dmdba/dmdbms/bin
./disql SYSDBA/SYSDBA@localhost:5236

#逐行执行如下sql
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);
SELECT OGUID FROM V$INSTANCE;

七、注册服务

都在 /home/dmdba/dmdbms/script/root目录root用户下执行

主库:

#服务器服务:
./dm_service_installer.sh -t dmserver -dm_ini /dmdata/data/DAMENG/dm.ini -m mount -p DM01
#监控服务:
./dm_service_installer.sh -t dmwatcher -watcher_ini /dmdata/data/DAMENG/dmwatcher.ini -p DM01

备库:

#服务器服务:
./dm_service_installer.sh -t dmserver -dm_ini /dmdata/data/DAMENG/dm.ini -m mount -p DM02
#监控服务:
./dm_service_installer.sh -t dmwatcher -watcher_ini /dmdata/data/DAMENG/dmwatcher.ini -p DM02

监视器:

./dm_service_installer.sh -t dmmonitor -monitor_ini /home/dmdba/dmdbms/bin/dmmonitor.ini -p MON

八、集群启动

顺序:数据库实例➡守护进程➡监视器      dmdba用户下

1.启动数据库

cd /home/dmdba/dmdbms/bin
./DmServiceDM01 start
cd /home/dmdba/dmdbms/bin
./DmServiceDM02 start

2.启动守护进程

./DmWatcherServiceDM01 start
./DmWatcherServiceDM02 start

3.启动监视器

前台启动方式:
cd /home/dmdba/dmdbms/bin
./dmmonitor /home/dmdba/dmdbms/bin/dmmonitor.ini

后台启动方式:
cd /home/dmdba/dmdbms/bin
./DmMonitorServiceMON start

4.验证主备库数据是否同步

主库中:

cd /home/dmdba/dmdbms/bin
./disql SYSDBA/SYSDBA@localhost:5236

#逐条执行sql
create table table01(id int);
insert into table01 values (2024);
commit;

备库中:

select * from table01;

九、主备切换

1.手动方式

在监视器中,先输入login命令,登录系统用户SYSDBA/SYSDBA,然后逐步输入switchoveryes进行切换

输入show或者tip命令查看集群状态,常用监视器使用命令如下:

命令含义
list查看守护进程的配置信息
show global info查看所有实例组的信息
tip查看系统当前运行状态
login登录监视器
logout退出登录
choose switchover GRP1主机正常:查看可切换为主机的实例列表
switchover GRP1.实例名主机正常:使用指定组的指定实例,切换为主机
choose takeover GRP1主机故障:查看可切换为主机的实例列表
takeover GRP1.实例名主机故障:使用指定组的指定实例,切换为主机
choose takeover force GRP1强制切换:查看可切换为主机的实例列表
takeover force GRP1.实例名强制切换:使用指定组的指定实例,切换为主机

2.自动方式

关闭主库虚拟机,备库自动接管

再次打开主库虚拟机时,主库变备库

十、集群关闭

执行顺序:监视器➡守护进程➡数据库实例

1.监视器

exit

2.守护进程

./DmWatcherServiceDM01 stop
./DmWatcherServiceDM02 stop

3.数据库实例

./DmServiceDM01 stop
./DmServiceDM02 stop

到此就完成了主备集群的搭建过程

想了解更多关于达梦数据库主备集群搭建的详细操作请移步达梦数据库官方地址:https://eco.dameng.com


😊希望这篇文章对你有所帮助

  • 11
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值