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验证