达梦数据守护(单主备)集群

本文详细介绍了如何搭建达梦数据守护(单主备)集群,包括安装规划、主机配置、数据库软件安装、实例配置、dmwatcher和monitor进程设置,以及开机启动配置等步骤,确保实时主备的正常运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.1安装规划

  • 角色

在这里插入图片描述

配置实时主备,需要俩块网卡,一个外网网卡对外提供访问,一个内部网卡为mal系统传递归档文件
实时主备需要配置数据守护进程(dmwatcher),分别在俩台主机上配置相同数据守护
监视器用来监控主备集群状态及主备角色事件变更,可以部署至远程节点,这里直接部署至主节点

  • 端口规划

在这里插入图片描述

一台主机部署实时主备,需要四个端口,分别为实例、实例watcher、mal实例、mal实例watcher端口

操作系统:Centos7.4
DM版本:DM8

1.2主机配置

  • 俩台主机均采用最小化安装方式,安装达梦软件需要图形化界面,需要安装如下软件
yum install xterm -y
yum install xorg-x11-xauth
yum -y install gtk2 libXtst xorg-x11-fonts-Type1
  • 创建安装用户及安装目录
 groupadd -g 12349 dinstall
 useradd -u 12345 -g dinstall -m -d /home/dmdba -s /bin/bash dmdba 
 passwd dmdba 
 mkdir /data/dmdbs
 chown dmdba:dinstall /data/dmdbms/
  • 调整系统内核参数
vim /etc/sysctl.conf
fs.file-max = 999999
sysctl -p
vim /etc/security/limits.d/90-nproc.conf
root soft nofile 655350
root hard nofile 655350
root soft nproc 655350
root hard nproc 655350
dmdba soft nofile 655350
dmdba hard nofile 655350
dmdba soft nproc 655350
dmdba hard nproc 655350
[root@localhost home]# su - dmdba
[dmdba@localhost ~]$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 15763
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 655350
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 655350
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
  • 安装jdk1.8
[root@centos7 ~]# ls
anaconda-ks.cfg  docker-ce19.03.tar.gz  jdk-8u171-linux-x64.rpm
[root@centos7 ~]# mkdir /usr/local/java
mkdir: cannot create directory ‘/usr/local/java’: File exists
[root@centos7 ~]# mv jdk-8u171-linux-x64.rpm /usr/local/java
[root@centos7 ~]# cd /usr/local/java
[root@centos7 java]# rpm -ivh jdk-8u171-linux-x64.rpm 
[root@centos7 jdk1.8.0_171-amd64]# vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64
export JRE_HOME=/usr/java/jdk1.8.0_171-amd64/jre
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lig:$JRE_HOME/lib:$CLASSPATH
[root@centos7 jdk1.8.0_171-amd64]# source /etc/profile
[root@centos7 jdk1.8.0_171-amd64]# java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
  • 准备安装包并挂载
[root@centos7 soft]# ls -l
total 1276076
-rw-r--r-- 1 root root 661422080 Sep 25 04:35 dm8_20200907_x86_rh6_64_ent_8.1.1.126.iso
-rw-r--r-- 1 root root 644869837 Aug 26 05:09 mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
-rw-r--r-- 1 root root    398635 Sep 21 04:01 world.sql
[root@centos7 soft]# mount dm8_20200907_x86_rh6_64_ent_8.1.1.126.iso /media
mount: /dev/loop0 is write-protected, mounting read-only
[root@centos7 soft]# cd /media/
[root@centos7 media]# ls
DM8 Install.pdf  DMInstall.bin

1.3安装达梦数据库软件

[dmdba@Centos7-STD ~]$ cd /media/
[dmdba@Centos7-STD media]$ ls
DM8 Install.pdf  DMInstall.bin
[dmdba@Centos7-STD media]$ ./DMInstall.bin 
Extract install files......... 

这里不要选择初始化数据库,后续通过手动初始化

su - dmdba
vi .bash_profile
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/data/dmdbs/bin"
export DM_HOME="/data/dmdbs"
export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool

1.4配置两节点数据库实例

  • 主节点初始化
mkdir -p /data/dmdbms/data/pr
dminit path=/data/dmdbms/data/pr db_name=pr 
  • 从节点初始化
mkdir -p /data/dmdbs/data/sd
dminit path=/data/dmdbs/data/sd db_name=sd
  • 主从节点实例初始化测试启动
dmserver /data/dmdbms/data/pr/pr/dm.ini
dmserver /data/dmdbs/data/sd/sd/dm.ini
  • 脱机备份主库文件还原至备库
#主节点
[dmdba@centos7 ~]$ dmrman
RMAN> backup database '/data/dmdbms/data/pr/pr/dm.ini' backupset '/data/dmdbms/data/pr_bak';
#传输备份片到备库节点
scp -r /data/dmdbms/data/pr_bak 192.168.3.104:/data/dmdbs/data/
#备库开始恢复
dmrman
restore database '/data/dmdbs/data/sd/sd/dm.ini' from backupset '/data/dmdbs/data/pr_bak';
recover database '/data/dmdbs/data/sd/sd/dm.ini' from backupset '/data/dmdbs/data/pr_bak';
recover database '/data/dmdbs/data/sd/sd/dm.ini' update db_magic;
  • 修改两节点数据库默认参数参数如下
#主节点
INSTANCE_NAME = GRP1_PR
PORT_NUM = 32141
ALTER_MODE_STATUS  = 0        #不允许手工方式修改实例模式/状态/OGUID 
ENABLE_OFFLINE_TS  = 2        #不允许备库 OFFLINE 表空间 
MAL_INI     = 1  #打开 MAL 系统 
ARCH_INI    = 1  #打开归档配置 

#从节点
INSTANCE_NAME = GRP1_SD
PORT_NUM = 32142
ALTER_MODE_STATUS  = 0        #不允许手工方式修改实例模式/状态/OGUID 
ENABLE_OFFLINE_TS  = 2        #不允许备库 OFFLINE 表空间 
MAL_INI     = 1  #打开 MAL 系统 
ARCH_INI    = 1  #打开归档配置 
  • 编辑两节点归档参数
#主节点
vim /data/dmdbms/data/pr/pr/dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE     = REALTIME  #实时归档类型
ARCH_DEST     = GRP1_SD #实时归档目标实例名     
[ARCHIVE_LOCAL1]
ARCH_TYPE     = LOCAL #本地归档类型
ARCH_DEST     = /data/dmdbms/data/pr/pr/arch  #本地归档文件存放路径
ARCH_FILE_SIZE    = 128 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT  = 0    #单位 Mb,0 表示无限制,范围 1024~4294967294M

mkdir -p /data/dmdbms/data/pr/pr/arch

#从节点
vim /data/dmdbs/data/sd/sd/dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE     = REALTIME  #实时归档类型
ARCH_DEST     = GRP1_PR #实时归档目标实例名     
[ARCHIVE_LOCAL1]
ARCH_TYPE     = LOCAL #本地归档类型
ARCH_DEST     = /data/dmdbs/data/sd/sd/arch  #本地归档文件存放路径
ARCH_FILE_SIZE    = 128 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT  = 0    #单位 Mb,0 表示无限制,范围 1024~4294967294M

mkdir -p /data/dmdbs/data/sd/sd/arch
#创建归档目录
  • 配置内部MAL系统
#双节点保持dmmal.ini文件相同,无差异

vim /data/dmdbms/data/pr/pr/dmmal.ini
MAL_CHECK_INTERVAL   = 5  #MAL 链路检测时间间隔 
MAL_CONN_FAIL_INTERVAL  = 5  #判定 MAL 链路断开的时间 
[MAL_INST1] 
  MAL_INST_NAME          = GRP1_PR #实例名,和 dm.ini 中的 INSTANCE_NAME 一致 
  MAL_HOST               = 10.10.3.103  #MAL 系统监听 TCP 连接的 IP 地址 
  MAL_PORT               = 61141     #MAL 系统监听 TCP 连接的端口 
  MAL_INST_HOST          = 192.168.3.103  #实例的对外服务 IP 地址 
  MAL_INST_PORT          = 32141 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致 
  MAL_DW_PORT   = 52141 #实例本地的守护进程监听 TCP 连接的端口 
MAL_INST_DW_PORT  = 33141 #实例监听守护进程 TCP 连接的端口 
 
[MAL_INST2] 
  MAL_INST_NAME          = GRP1_SD 
  MAL_HOST               = 10.10.3.104
  MAL_PORT               = 61142 
  MAL_INST_HOST          = 192.168.3.104 
  MAL_INST_PORT          = 32142 
  MAL_DW_PORT   = 52142 
MAL_INST_DW_PORT  = 33142

1.5配置双节点dmwatcher进程

  • 配置dmwatcher进程,由于安装目录不同,各自重新配置
#主节点

vim /data/dmdbms/data/pr/pr/dmwatcher.ini
[GRP1]
 DW_TYPE    = GLOBAL    #全局守护类型
 DW_MODE    = AUTO   #自动切换模式
 DW_ERROR_TIME     = 10  #远程守护进程故障认定时间
 INST_RECOVER_TIME   = 60         #主库守护进程启动恢复的间隔时间
 INST_ERROR_TIME   = 10  #本地实例故障认定时间
 INST_OGUID         = 453332 #守护系统唯一 OGUID 值
 INST_INI           = /data/dmdbms/data/pr/pr/dm.ini #dm.ini 配置文件路径
 INST_AUTO_RESTART   = 1   #打开实例的自动启动功能
 INST_STARTUP_CMD   = /data/dmdbms/bin/dmserver #命令行方式启动
RLOG_APPLY_THRESHOLD  = 0         #指定备库重演日志的时间阈值,默认关闭

#从节点

vim /data/dmdbs/data/sd/sd/dmwatcher.ini
[GRP1]
 DW_TYPE    = GLOBAL    #全局守护类型
 DW_MODE    = AUTO   #自动切换模式
 DW_ERROR_TIME     = 10  #远程守护进程故障认定时间
 INST_RECOVER_TIME   = 60         #主库守护进程启动恢复的间隔时间
 INST_ERROR_TIME   = 10  #本地实例故障认定时间
 INST_OGUID         = 453332 #守护系统唯一 OGUID 值
 INST_INI           = /data/dmdbs/data/sd/sd/dm.ini #dm.ini 配置文件路径
 INST_AUTO_RESTART   = 1   #打开实例的自动启动功能
 INST_STARTUP_CMD   = /data/dmdbs/bin/dmserver #命令行方式启动
RLOG_APPLY_THRESHOLD  = 0         #指定备库重演日志的时间阈值,默认关闭

1.6启动数据库

  • 以mount方式启动主库
dmserver /data/dmdbms/data/pr/pr/dm.ini mount
  • 设置主库的OGUID值
[dmdba@centos7 ~]$ disql sysdba@localhost:32141
SQL> select status$ from v$instance;

LINEID     STATUS$
---------- -------
1          MOUNT

SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); 
sp_set_oguid(453332); 
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
  • 修改主库数据库模式
alter database primary; 
  • 启动备库到mount状态
dmserver /data/dmdbs/data/sd/sd/dm.ini mount
  • 修改备库的OGUID
disql sysdba@localhost:32142
SQL> select status$ from v$instance;

LINEID     STATUS$
---------- -------
1          MOUNT

SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); 
sp_set_oguid(453332); 
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
  • 修改备库角色
alter database standby;  

1.7启动两节点守护进程

#主节点

dmwatcher /data/dmdbms/data/pr/pr/dmwatcher.ini


#从节点

dmwatcher /data/dmdbs/data/sd/sd/dmwatcher.ini
  • 启动两节点守护进程后,会自动拉起数据库

1.8配置monitor进程

#主库

 vim /data/dmdbms/data/pr/pr/dmmonitor.ini
 MON_LOG_PATH    = /data/dmdbms/log  #监视器日志文件存放路径     
MON_LOG_INTERVAL  = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE   = 32 #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT  = 0  #不限定日志文件总占用空间
[GRP1]
 MON_INST_OGUID    = 453332 #组 GRP1 的唯一 OGUID 值
#以下配置为监视器到组 GRP1 的守护进程的连接信息,以―IP:PORT‖的形式配置
#IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT
 MON_DW_IP     = 10.10.3.103:52141  
 MON_DW_IP     = 10.10.3.104:52142
  • 启动监视器在主库节点上
dmmonitor path=/data/dmdbms/data/pr/pr/dmmonitor.ini

[monitor]         2020-11-11 04:24:56: Received message from(DW_SD)
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2020-11-11 17:24:53  OPEN           OK        DW_SD            OPEN        STANDBY   NULL     2        38417           38417           

[monitor]         2020-11-11 04:24:57: Received message from(DW_PR)
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2020-11-11 04:24:57  OPEN           OK        DW_PR            OPEN        PRIMARY   VALID    2        38417           38417  

1.9将DMwatcher、DMmonitor注册到系统,开机启动

  • 注册dmwatcher
#主库
./dm_service_installer.sh -t dmwatcher -watcher_ini /data/dmdbms/data/dw_pr/dmdw/dmwatcher.ini -p wa_pr

#备库
./dm_service_installer.sh -t dmwatcher -watcher_ini /data/dmdbs/data/dw_sd/dmdw/dmwatcher.ini -p wa_sd
  • 注册dmmonitor
#主节点
./dm_service_installer.sh -t dmmonitor -monitor_ini /data/dmdbms/data/dw_pr/dmdw/dmmonitor.ini -p dm_mon
  • 开机启动
#主节点
systemctl enable DmWatcherServicewa_pr
#从节点
systemctl enable DmWatcherServicewa_sd

#主节点
systemctl enable DmMonitorServicedm_mon

reboot验证

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值