目录
一. 实时主备概念详述
1.1达梦主备守护集群各组件概述
1.1.1达梦监视器monitor
1.1.2守护进程dmwatcher
1.1.3主库
1.1.4备库
1.1.5 Redo 日志
1.1.6 Redo 日志传输
1.1.7 Redo 日志重演
1.2、主备数据同步原理
1.3实时主备同步流程:
1.4 实时主备系统主要好处和功能
二. 安装前准备
IP及实例规划:
端口规划:
2.1 检查资源环境
2.2 禁用防火墙和SELINUX
改SELINUX=disabled
2.3 禁用透明大页
(3)重启系统使配置生效。
(4)查看重启后,是否生效
2.4 调整limits.conf
2.5 关闭numa配置
2.6 创建用户和组
(1)创建用户所在的组:groupadd dinstall
(3)修改用户密码:passwd dmdba
2.7 创建目录及授权
2.8 挂载数据库目录
(1) 创建pv
(2) 创建vg
(3) 创建lv
(4)格式化逻辑卷LV
(5)挂载安装目录:
(6) 设置/etc/fstab:
2.9 创建用户环境变量
三.DM数据库安装(主备)
3.1 mount数据库软件镜像
3.2 静默安装软件
方法二:创建一个目录用来放置安装程序时的临时目录
3.3 初始化数据库(主备)
3.5 登录数据库(所有数据库安装完成都需要登录一下)
3.6 调优参数设置
四.DM实时主备搭建
4.1 备份恢复数据库
4.1.1 脱机备份主库
4.1.2 传输主备备份集至备份服务器
4.1.3 备库执行脱机数据库还原与恢复
4.2 修改主库和备库配置文件
4.2.1 修改dm.ini(主,备)
4.2.2 创建dmmal.ini(主备一致)
4.2.3 创建dmarch.ini
4.2.4 创建dmwatcher.ini(主备一致)
4.3 创建dmmonitor.ini(监视器主机)
4.2.5.1 确认监视器(主备集群自动切换)
4.2.5.2 非确认监视器(用来前台查看集群状态)
4.4 注册服务
4.4.1 注册dmserver服务(主备)
4.4.2 注册dmwatcher服务(主备)
4.4.3 注册监视服务(监视器主机)
4.5 启动集群
4.5.1 启动主库服务(主)
4.5.2 启动备库服务(备)
4.5.3启动备库守护服务(备)
4.5.4启动主库守护服务(主)
4.5.5 启动监视器(监视器主机)
4.6 重启集群
4.6.1 关闭监视器
4.6.2 关闭守护进程
4.6.3 关闭数据库库服务
4.6.4 启动主库服务和守护(主)
4.6.5 启动备库的服务和守护(备)
4.6.6 启动监视器
4.6.7 监视器验证
①监控数据守护进程发送的消息(主、备数据库状态变化、故障切换过程中数据库模式、状态变化的完整过程);
②用户可以在监视器上输入命令,启动、停止守护进程的监控功能,执行主备库切换、备库故障接管等操作;
③发起故障自动接管命令,主库发生故障时,挑选符合接管条件的备库,并通知备库执行接管操作。
守护进程负责监控数据库运行状态,必要时重启数据库服务。守护进程和实例链路建立成功后,数据库实例定时发送信息到守护进程,发送到守护进程的内容包括:实例进程ID、实例名、数据库模式、数据库状态、FILE_SEQ、FILE_LSN、CUR_SEQ、CUR_LSN、MAL链路状态、归档状态、公钥、MPP控制文件等信息。
守护进程更新本地记录的实例信息后,同时记录该时间戳。当检测到实例进程ID已经不存在或者超过一段时间没有收到实例消息(INST_ERROR_TIME),则会认定实例故障。如果配置了自动重启,则会将实例重新拉起。
Primary 模式,提供完整数据库服务的实例,一般来说主库是用来直接支撑应用系统 的生产库。
Standby 模式,提供只读数据库服务的实例。备库除了用于容灾,还可以提供备份、 查询等只读功能,并且备库还支持临时表的 Insert/Delete/Update 操作。 备库支持临时表修改主要基于两个因素:1.临时表数据的修改不会产生 Redo 日志, 主库对临时表的修改无法同步到备库;2.可以提供更大灵活性,适应更多应用场景。 根据数据同步情况,备库又可以分为可切换备库和不可切换备库。可切换备库是指,主 备库之间数据完全同步,主库发生故障、备库切换为主库后,不会造成任何数据丢失的备库。
Redo 日志记录物理数据页内容变动情况,是数据库十分重要的一个功能,在数据库系 统故障(比如服务器掉电)重启时,利用 Redo 日志可以把数据恢复到故障前的状态。 Redo 日志也是数据守护的实现基础,数据库中 Insert、Delete、Update 等 DML 操作以及 Create TABLE 等 DDL 操作最终都会体现为对某一个或者多个物理数据页的修 改,因此备库通过重做 Redo 日志可以与主库数据保持一致。
主备库之间的 Redo 日志传输,以日志包 RLOG_PKG 为单位,主库通过 MAL 系统发送 Redo 日志到备库。各种不同数据守护类型的区别,就在于主库日志包 RLOG_PKG 的发送时 机,以及备库收到 Redo 日志后的处理策略。
Redo 日志重演的过程,就是备库收到主库发送的 Redo 日志后,在物理数据页上,重 新修改数据的过程。Redo 日志重演由专门的 Redo 日志重演服务完成,重演服务严格按照 Redo 日志产生的先后顺序,解析 Redo 日志、修改相应的物理数据页,并且重演过程中备 库会生成自身的 Redo 日志写入联机日志文件。
达梦主备数据同步原理图
主备集群同步机制归档流程
1、DDL和DML提交事务操作使主库产生Redo 信息,Redo 信息会存放在RLOG_PKG(Redo 日志包)中,在此过程中RLOG_PKG存放在内存当中,暂时不会写入联机日志中;
2、实时同步:MAL通讯系统将主库的RLOG_PKG包通过实时归档机制发送到备库B中,备库将最新收到的RLOG_PKG保存在内存中,然后进行校验是否合法,合法后标记为 KEEP_PKG,不会马上启动重演,但会将之前的KEEP_PKG通过APPLY线程队列加入日志重演任务系统,并马上响应主库,不需要等待之前的Redo日志重演结束后再响应主库;
3、为了防止备库上重演日志堆积太多、占用大量内存、备库重演无响应导致主库挂住不能提供服务等情况的发生 ,可通过适当调整 BUFFER 、REDOS_PRE_LOAD 、REDOS_BUF_SIZE、REDOS_BUF_NUM、REDOS_MAX_DELAY 这几个参数达到加快备库重演速度、达到设置的堆积上限后延迟响应主机、备库自动宕机等目的 。 其中REDOS_BUF_SIZE,REDOS_BUF_NUM 同时起作用,只要达到一个条件即延迟响应。
(注意:备库确认收到主库发送的Redo 日志,并不保证备库已经完成重演这些 Redo 日志,因此主备库之间的数据同步存在一定的时间差。一般情况下延迟时间非常短暂,用户几乎感觉不到,不能严格保证事务一致性。)
备库 KEEP_PKG 日志重演的时机包括:
1.备库收到新的 RLOG_PKG
备库收到新的 RLOG_PKG 时,会将当前保存的 KEEP_PKG 日志重演,并将新收到的RLOG_PKG 再次放入KEEP_PKG 中。
2. 收到主库的重演命令
主库会定时将 FILE_LSN 等信息发送到备库,当主库 FILE_LSN 等于备库 SLSN 时,表明主库已经将KEEP_PKG 对应的 Redo 日志写入联机日志文件中,此时备库会启动KEEP_PKG 的日志重演。
3. 备库切换为新主库
在监视器执行 SWITCHOVER 或 TAKEOVER 命令,或者确认监视器通知备库自动接管时,备库会在切换为PRIMARY 模式之前,启动 KEEP_PKG 的日志重演。
4、主库收到备库的响应消息,确认备库已经收到 Redo 日志后,主库再将 Redo 日志写入联机日志文件中。
(1)实时数据同步
主备库通过实时归档完成数据同步,实时归档要求主库将 RLOG_PKG 发送到备库后,再将RLOG_PKG 写入本地联机 Redo 日志文件。但要注意的是,备库确认收到主库发送的Redo 日志,并不保证备库已经完成重演这些 Redo 日志,因此主备库之间的数据同步存在一定的时间差。
(2)主备库切换,主备库正常运行过程中,可以通过监视器的 Switchover 命令,一键完成主备库角色转换。主备库切换功能可以确保在软、硬件升级,或系统维护时,提供不间断的数据库服务。
(3)自动故障处理
备库故障,不影响主库正常提供数据库服务,守护进程自动通知主库修改实时归档为Invalid 状态,将实时备库失效。
(4)自动数据同步
备库故障恢复后,守护进程自动通知主库发送归档 Redo 日志,重新进行主备库数据同步。并在历史数据同步后,修改主库的实时归档状态为 Valid,恢复实时备库功能。备库接管后,原主库故障恢复,守护进程自动修改原主库的模式为 Standby,并重新作为备库加入主备系统。
(5)备库接管
主库发生故障后,可以通过监视器的 Takeover 命令,将备库切换为主库,继续对外提供服务。如果配置为自动切换模式,确认监视器可以自动检测主库故障,并通知备库接管,这个过程不需要人工干预。
(6)备库强制接管
如果执行 Takeover 命令不成功,但主库可能由于硬件损坏等原因无法马上恢复,为了及时恢复数据库服务,DM 提供了 Takeover Force 命令,强制将备库切换为主库。但需要由用户确认主库故障前,主库与接管备库的数据是一致的(主库到备库的归档是 Valid状态),避免引发守护进程组分裂。注意:执行Takeover Force有可能引发组分裂,而Takeover命令在确保不会产生组分裂情况下才允许执行。
安装前需要对主备环境以及监视器都进行以下配置:
系统环境概况:
操作系统 |
CPU |
存储 |
内存 |
数据库 |
Kylin Linux Advanced Server release V10 |
x86_64 架构 |
/dm8/dmdata:30G /dm8/dmarch:10G /dm8/dmbak:10G |
2G |
dm8_rh7_64_ent_8.1.1.87 |
主机 |
Public ip |
Private ip |
实例名 |
|
DM_MF |
192.168.232.2 |
192.168.232.2 |
DBSERVER1 |
|
DM_SYNC |
192.168.232.3 |
192.168.232.3 |
DBSERVER2 |
|
DM_MONIOR |
192.168.232.4 |
192.168.232.4 |
\ |
端口 |
用途 |
5236 |
数据库实例监听端口 |
61141 |
MAL 系统监听 TCP 连接的端口 |
52141 |
实例本地的守护进程监听 TCP 连接的端口 |
33141 |
实例监听守护进程 TCP 连接的端口 |
系统版本检查:
麒麟系统: cat /proc/version 或cat /etc/.productinfo
Linux version 4.19.90-24.4.v2101.ky10.x86_64 ([email protected]) (gcc version 7.3.0 (GCC)) #1 SMP Mon May 24 12:14:55 CST 2021
系统名检查:uname -a
Linux localhost.localdomain 4.19.90-24.4.v2101.ky10.x86_64 #1 SMP Mon May 24 12:14:55 CST 2021 x86_64 x86_64 x86_64 GNU/Linux
cpu架构检查:lscpu
架构: x86_64
CPU 运行模式: 32-bit, 64-bit
字节序: Little Endian
Address sizes: 45 bits physical, 48 bits virtual
CPU: 4
在线 CPU 列表: 0-3
每个核的线程数: 1
每个座的核数: 2
座: 2
NUMA 节点: 1
......
内存检查:grep MemTotal /proc/meminfo
MemTotal: 959272 kB
存储检查:df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 442M 0 442M 0% /dev
tmpfs 469M 0 469M 0% /dev/shm
tmpfs 469M 7.1M 462M 2% /run
tmpfs 469M 0 469M 0% /sys/fs/cgroup
/dev/mapper/klas-root 16G 7.4G 8.7G 47% /
tmpfs 469M 0 469M 0% /tmp
/dev/sda1 1014M 211M 804M 21% /boot
tmpfs 94M 0 94M 0% /run/user/0
vi /etc/selinux/config
改SELINUX=disabled
或者echo"SELINUX=disabled”>>/etc/selinux/config
永久关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
查看防火墙状态
systemctl status firewalld
(1)编辑/etc/sysconfig/grub文件,在GRUB_CMDLINE_LINUX那一行后面追加
transparent_hugepage=never
(2)再使用grub2-mkconfig生成grub.cfg配置文件。
grub2-mkconfig -o /boot/grub2/grub.cfg
(3)重启系统使配置生效。
reboot
(4)查看重启后,是否生效
cat /sys/kernel/mm/transparent_hugepage/enabled
使用 vi 编辑器打开 /etc/security/limits.conf 文件,命令如下:
vi /etc/security/limits.conf
在最后添加四条语句,需添加的语句如下:
dmdba soft core unlimited
dmdba hard core unlimited
dmdba soft nproc 65536
dmdba hard nproc 65536
dmdba hard nofile 65536
dmdba soft nofile 65536
dmdba hard stack 32768
dmdba soft stack 16384
该参数文件需要重启生效,reboot生效
参数说明:
core - 限制内核文件的大小(KB)
nproc 对每个用户创建的进程数的限制,默认的很小,泄露的时候多
nofile-一个进程能打开的文件数
stack堆大小,堆-存放变量的位置
重启后验证limit参数:
su - dmdba
ulimit -a
NUMA(Non-Uniform Memory Access)架构是为了解决多CPU下内存访问冲突,简单来说不在将整个物理内存作为一个整体,而是根据不同的CPU区分不同的内存块儿,如2颗CPU每颗CPU使用64G内存。
当NUMA参数zone_reclaim_mode在设置为1时,内核将要求多路CPU尽量从距离较近的系统内存节点(服务器的整体内存在numa架构下将被分成若干个节点)分配内存而不是在整个服务器可访问内存的范围内进行内存分配,因此在较高内存占用压力下内存申请会触发内存频繁回收整理的机制严重影响了系统整体性能(长期处于内核态sys很高)。进而可能导致SQL卡顿问题的发生。
--编辑grub文件,如下图所示加上:numa=off
[root@~]# vi /etc/default/grub
--重新生成/etc/grub2.cfg 配置文件:
[root@~]# grub2-mkconfig -o /etc/grub2.cfg
--重启操作系统
[root@~]# reboot
--重启之后进行确认
[root@~]# dmesg | grep -i numa
--再次确认
[root@~]# cat /proc/cmdline
(1)创建用户所在的组:groupadd dinstall
(2)创建用户:useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
(3)修改用户密码:passwd dmdba
mkdir /dm8
mkdir -p /dm8/dmdata
mkdir -p /dm8/dmarch
mkdir -p /dm8/dmbak
mkdir -p /home/dmdba/dmsoft
mkdir -p /home/dmdba/dmdbms
chown dmdbaLdinstall -R /home/dmdba/
chown dmdba:dinstall -R /dm8/
chmod -R 755 /home/dmdba/
chmod -R 755 /dm8
- 创建pv
[root@centos7 ~]# lpvcreate /dev/sdb
- 创建vg
[root@centos7 ~]# lvgcreate vg_dm /dev/sdb
- 创建lv
[root@centos7 ~]# lvcreate -L 30G -n lv_dmdata vg_dm
[root@centos7 ~]# lvcreate -L 10G -n lv_dmarch vg_dm
[root@centos7 ~]# lvcreate -L 9.9G -n lv_dmarch vg_dm
(4)格式化逻辑卷LV
mkfs.ext4 /dev/mapper/vg_dm-lv_dmdata
mkfs.ext4 /dev/mapper/vg_dm-lv_dmbak
mkfs.ext4 /dev/mapper/vg_dm-lv_dmarch
(5)挂载安装目录:
mount /dev/vg_dm/lv_dmdata /dm8/dmdata
mount /dev/vg_dm/lv_dmarch /dm8/dmarch
mount /dev/vg_dm/lv_dmbak /dm8/dmbak
挂载后的目录:
- 设置/etc/fstab:
vi /etc/fstab:
末尾加上这三行:
/dev/vg_dm/lv_dmdata /dm8/dmdata ext4 defaults 0 0
/dev/vg_dm/lv_dmarch /dm8/dmarch ext4 defaults 0 0
/dev/vg_dm/lv_dmbak /dm8/dmbak ext4 defaults 0 0
注意:/etc/fstab描述一定要正确,否则启动无法完成
su - dmdba
vi ~/.bash_profile
#添加如下三行
export DM_HOME="/home/dmdba/dmdbms"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DM_HOME/bin"
export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool
保存后,使环境变量生效:
source ~/.bash_profile
将上传的ISO文件,并挂载镜像
mount -o loop /soft/dm8_20230104_x86_rh6_64.iso /mnt
切换至 dmdba 用户下,在 /mnt 目录下使用命令行安装数据库程序,依次执行以下命令安装 DM 数据库。
su - dmdba
cd /mnt/
./DMInstall.bin -i
执行静默安装时报错临时目录/tmp空间不足,安装DM需要临时空间至少800M:
解决方法:
方法一:扩容/tmp目录 mount -o remount,size=2G /tmp
方法二:创建一个目录用来放置安装程序时的临时目录
[root@ Kylin /]# mkdir -p /tmp1
[root@ Kylin /]# chown -R dmdba.disntall /tmp1
su - dmdba
export DM_INSTALL_TMPDIR=/tmp1
然后顺利执行:
安装步骤:
需求选择安装语言,默认为中文。
本地安装选择【不输入 Key 文件】,
选择【默认时区 21】。
安装类型选择:【典型安装】
安装目录选择:【home/dmdata/dmdbms】
注意:该目录不为空,默认为/home/dmdba/dmdbms
是否确认安装:【y】
安装小结,是否确认安装:【y】
安装完成后root执行命令:
/home/dmdba/dmdbms/script/root/root_installer.sh
需要root下创建 DmAPService,否则会影响数据库备份
在dmdba用户下执行以下命令:
cd /home/dmdba/dmdbms/bin
./dminit path=/dm8/dmdata PAGE_SIZE=32 EXTENT_SIZE=32 CASE_SENSITIVE=y CHARSET=1 DB_NAME=DMDB INSTANCE_NAME=DBSERVER PORT_NUM=5236
3.4 启动数据库
su –dmdba
通过命令启动数据库服务
[dmdba@]$ /home/dmdba/dmdbms/bin/dmserver path=/dm8/dmdata/DMDB/dm.ini
启动之后看到SYSTEM IS READY即可
[dmdba@localhost bin]$ /home/dmdba/dmdbms/bin/disql
本工具适用于各种版本的DM7数据库和DM8数据库,在DM7运行前需要修改脚本内容,详见使用手册
先关闭数据库,查看dmap进程是否开启
[dmdba@dm1 ]$ ps -ef | grep dmap
[dmdba@dm1 ]$ ps -ef | grep dmserver
开始脱机备份:
[dmdba@dm1 bin]$ ./dmrman (---主库执行)
RMAN> backup database '/dm8/dmdata/DMDB/dm.ini' backupset '/dm8/dmbak';
[root@localhost dmbak]# scp /dm8/dmbak/* 192.168.232.3:/dm8/dmbak
[dmdba@dm1 bin]$ /home/dmdba/dmdbms/bin/dmrman (---备库执行)
备库执行 restore
RMAN> restore database '/dm8/dmdata/DMDB/dm.ini' from backupset '/dm8/dmbak';
备库执行recover
RMAN> recover database '/dm8/dmdata/DMDB/dm.ini' from backupset '/dm8/dmbak';
备库执行 recover update db_magic
RMAN> recover database '/dm8/dmdata/DMDB/dm.ini' update db_magic;
恢复后验证:
主库:
备库:
主备库的FILE_LSN和 CUR_LSN 值相同且永久魔数一致情况下可进行主备库的配置工作
vi /dm8/dmdata/DMDB/dm.ini 找到参数文件内对应的参数进行修改(主备库修改一致)
INSTANCE_NAME = DBSERVER1 #实例名,主机与备机实例名不一致
PORT_NUM = 5236 #数据库实例监听端口,保持默认
DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间,保持默认
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID ,保持默认,是否允许手工修改服务器的模式、状态和OGUID,1:允许;0:不允许。
注:数据守护环境下建议配置为 0,实例处于主机或备机模式后,不允许用户直接通过 SQL 语句修改服务器的模式、状态和 OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间,默认1改为2
MAL_INI = 1 #打开 MAL 系统, 默认0修改为1
ARCH_INI = 1 # 打开归档配置, 默认0修改为1
RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息
注:若同一网络存在多套主备集群,除实例的对外服务端口5236可以一样,其他端口和OGUID要都不一致。
vi /dm8/dmdata/DMDB/dmmal.ini
MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME = DBSERVER1 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致MAL_HOST = 192.168.232.2 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST =192.168.232.2 #实例的对外服务 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 = DBSERVER2 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致MAL_HOST = 192.168.232.3 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST =192.168.232.3 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 52141 #实例本地的守护进程监听TCP 连接的端口MAL_INST_DW_PORT= 33141 #实例监听守护进程 TCP 连接的端口
4.2.3.1 主库配置dmarch.ini
读写分离集群配置实时归档+ARCH WAIT APPLY=1ARCHWAIT APPLY是全局配置项目,必须放在第行,不能放在局部配置项目下面。
vi /dm8/dmdata/DMDB/dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DMSERVER2 #实时归档目标实例名(备库侧填写主库实例名)
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST =/dm8/dmarch/ #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 10240 #单位 Mb,0 表示无限制,范围 1024~4294967294M
4.2.3.2 备库配置dmarch.ini
备库配置:
vi /dm8/dmdata/DMDB/dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DMSERVER1 #实时归档目标实例名(备库侧填写主库实例名)
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST =/dm8/dmarch/ #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 10240 #单位 Mb,0 表示无限制,范围 1024~4294967294M
vi /dm8/dmdata/DMDB/dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO # MANUAL手动切换模式,AUTO为自动模式
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 211002 #守护系统唯一 OGUID 值
INST_INI = /dm8/dmdata/DMDB/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
由于主库和实时备库的守护进程配置为自动切换模式,因此这里选择配置确认监视器。
和普通监视器相比,确认监视器除了相同的命令支持外,在主库发生故障时,能够自动通知
实时备库接管为新的主库,具有自动故障处理的功能。
故障自动切换模式下,必须配置确认监视器,且确认监视器最多只能配置一个。
建议单独一个服务器部署监视器,此服务器要求稳定;如和集群放到同一服务器上,建议放到备库。
4.2.5.1 确认监视器(主备集群自动切换)
(当主库宕机,会自动切换到备库)
vi /dm8/dmmonitor/dmmonitor.ini
MON_DW_CONFIRM = 1 #确认监视器模式
MON_LOG_PATH = /dm8/monitor/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32MB
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
[GRP1] #组的名称,和dmwatcher,ini中一致
MON_INST_OGUID = 211002 #组 GRP1 的唯一 OGUID 值,和dmwatcher,ini中一致
#以下配置为监视器到组 GRP1 的守护进程的连接信息,以“IP:PORT”的形式配置
#IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT
MON_DW_IP =192.168.232.2:52141
MON_DW_IP = 192.168.232.3:52141
4.2.5.2 非确认监视器(用来前台查看集群状态)
非确认监视器,当主库宕机,不会自动切换到备库,需要手动人为干预
vi /dm8/dmmonitor/dmmonitor_nor.ini
MON_DW_CONFIRM = 0
MON_LOG_PATH = /dm8/dmmonitor/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT =2048
[GRP1]
MON_INST_OGUID = 211002
MON_DW_IP =192.168.232.2:52141
MON_DW_IP = 192.168.232.3:52141
cd /home/dmdba/dmdbms/script/root
./dm_service_installer.sh -p DMDB -t dmserver -dm_ini /dm8/dmdata/DMDB/dm.ini -m mount
cd /home/dmdba/dmdbms/script/root/
./dm_service_installer.sh -t dmwatcher -p DMDB -watcher_ini /dm8/dmdata/DMDB/dmwatcher.ini
cd /home/dmdba/dmdbms/script/root/
./dm_service_installer.sh -p DmMonitor -t dmmonitor -monitor_ini /dm8/dmmonitor/dmmonitor.ini
删除监视服务
如果想更换监视主机,可删除原来的监视服务
/home/dmdba/dmdbms/script/root/dm_service_uninstaller.sh –n DmMonitorServiceDmMonit
注意启动和关闭顺序!!
启动:主备库实例 → 主备库守护进程 → 监视器
关闭:监视器 → 主备库守护进程 → 主备库实例
dmdba用户执行
cd /home/dmdba/dmdbms/bin/
./DmServiceDMDB start mount
./disql
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); --设置允许手工修改数据库模式
SQL>sp_set_oguid(211002); --设置一个集群唯一的oguid
SQL>alter database primary;--指定次数据库为备机
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
每个备库节点均需启动
cd /home/dmdba/dmdbms/bin/
./DmServiceDMDB start mount
./disql
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>sp_set_oguid(211002); --设置一个集群唯一的oguid
SQL>alter database standby; --指定次数据库为备机
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
重启库
cd /home/dmdba/dmdbms/bin/
./DmWatcherServiceDMDB start
cd /home/dmdba/dmdbms/bin/
./DmWatcherServiceDMDB start
启动守护进程,数据库自动将mount变成open
cd /home/dmdba/dmdbms/bin/
./DmMonitorServiceDmMonitor start
cd /home/dmdba/dmdbms/bin/
./DmMonitorServiceDmMonitor stop
注:先关备库,再关主库
/home/dmdba/dmdbms/bin/DmWatcherServiceDMDB stop
注:关闭主备机顺序无要求
/home/dmdba/dmdbms/bin/DmServiceDMDB stop
/home/dmdba/dmdbms/bin/DmServiceDMDB start mount
/home/dmdba/dmdbms/bin/DmWatcherServiceDMDB start
/home/dmdba/dmdbms/bin/DmServiceDMDB start mount
/home/dmdba/dmdbms/bin/DmWatcherServiceDMDB start
/home/dmdba/dmdbms/bin/DmMonitorServiceDmMonitor start
登陆监视器
cd /home/dmdba/dmdbms/bin/
./dmmonitor /dm8/dmmonitor/dmmonitor.ini
show 查看状态
需要关注的数值:
守护进程状态 WSTATUS 为 OPEN
实例状态 ISTATUS 为 OPEN
归档类型 RTYPE 为 REALTIME
归档状态 RSTAT 为 VALID
测试一下是否同步,在主库新建用户,备库已同步:
达梦云适配技术社区
https://eco.dameng.com/