注册
达梦数据库学习20:守护集群实时主备集群搭建一主二备3节点
专栏/技术分享/ 文章详情 /

达梦数据库学习20:守护集群实时主备集群搭建一主二备3节点

Hi70KG 2023/08/01 2294 1 0
摘要

达梦实时主备守护集群详解

一、达梦主备守护集群概述

​ DM 数据守护(Data Watch)是一种集成化的高可用、高性能数据库解决方案,是数据库异地容灾的首选方案。通过部署 DM 数据守护,可以在硬件故障(如磁盘损坏)、自然灾害(地震、火灾)等极端情况下,避免数据损坏、丢失,保障数据安全,并且可以快速恢复数据库服务,满足用户不间断提供数据库服务的要求。与常规的数据库备份(Backup)、还原(Restore)技术相比,数据守护可以更快地恢复数据库服务。随着数据规模不断增长,通过还原手段恢复数据,往往需要数个小时、甚至更长时间,而数据守护基本不受数据规模的影响,只需数秒时间就可以将备库切换为主库对外提供数据库服务。

​ DM 数据守护提供多种解决方案,可以配置成实时主备、MPP 主备、DMDSC 主备或读写分离集群。实时主备由一个主库以及一个或者多个配置了实时(Realtime)归档的备库组成,其主要目的是保障数据库可用性,提高数据安全性。实时主备系统中,主库提供完整的数据库功能,备库提供只读服务。主库修改数据产生的 Redo 日志,通过实时归档机制,在写入联机 Redo 日志文件之前发送到备库,实时备库通过重演 Redo 日志与主库保持数据同步。当主库出现故障时, 备库在将所有 Redo 日志重演结束后 ,就可以切换为主库对外提供数据库服务。

二、达梦实时主备相关概念

1、主库

​ Primary 模式,提供完整数据库服务的实例,一般来说主库是用来直接支撑应用系统的生产库。

2、备库

​ Standby 模式,提供只读数据库服务的实例。备库除了用于容灾,还可以提供备份、查询等只读功能,并且备库还支持临时表的 Insert/Delete/Update 操作。

3、MAL 系统

​ MAL 系统是基于 TCP 协议实现的一种内部通信机制,具有可靠、灵活、高效的特性。DM 通过 MAL 系统实现 Redo 日志传输,以及其他一些实例间的消息通讯。

4、Redo 日志

​ Redo 日志包含了所有物理数据页的修改内容,Insert/delete/update 等 DML 操作、Create Table 等 DDL 操作,最终都会转化为对物理数据页的修改,这些修改都会反映到 Redo 日志中。

5、Redo 日志包(RLOG_PKG)

​ Redo 日志包(RLOG_PKG)是 DM 数据库批量保存物理事务产生的 Redo 日志的数据单元,以物理事务 PTX 为单位保存日志,一个日志包内可连续保存一个或多个 PTX。日志包具有自描述的特性,日志包大小不固定,采用固定包头和可变包头结合的方式,包头记录日志的控制信息,包括类型、长度、包序号、LSN 信息、产生日志的节点号、加密压缩信息、日志并行数等内容。

​ 日志包生成时按照序号连续递增,相邻日志包的 LSN 顺序是总体递增的,但是在多节点集群的 DSC 环境下不一定连续。如果未开启并行日志,RLOG_PKG 包内日志的 LSN 是递增的。如果开启并行日志,一个 RLOG_PKG 包内包含多路并行产生的日志,每一路并行日志的 LSN 是递增的,但是各路之间并不能保证 LSN 有序,因此并行日志包内 LSN 具有局部有序,整体无序的特点。

​ 物理事务提交时将 Redo 日志写入到日志包中,在数据库事务提交或日志包被写满时触发日志刷盘动作。日志刷盘线程负责将日志包中的 Redo 日志写入联机日志文件,如果配置了 Redo 日志归档,日志刷盘线程还将负责触发归档动作。DM 数据守护系统中,主库以 RLOG_PKG 为最小单位发送 Redo 日志到备库。

6、Redo 日志传输

​ 主备库之间的 Redo 日志传输,以日志包 RLOG_PKG 为单位,主库通过 MAL 系统发送Redo 日志到备库。各种不同数据守护类型的区别,就在于主库日志包 RLOG_PKG 的发送时机,以及备库收到 Redo 日志后的处理策略,这个后边章节会介绍(主备同步方式)。

7、KEEP_PKG 介绍

​ 主库的RLOG_PKG日志通过实时归档机制发送到备库后,备库将最新收到的RLOG_PKG通过重演服务保存在内存中,不马上启动重演,这个 RLOG_PKG 我们称之为 KEEP_PKG。

8、Redo 日志重演

​ Redo 日志重演的过程,就是备库收到主库发送的 Redo 日志后,在物理数据页上,重新修改数据的过程。Redo 日志重演由专门的 Redo 日志重演服务完成,重演服务严格按照Redo 日志产生的先后顺序,解析 Redo 日志、修改相应的物理数据页,并且重演过程中备库会生成自身的 Redo 日志写入联机日志文件。

9、本地归档

​ 本地归档(Local),就是将 Redo 日志写入到本地归档日志文件的过程。本地归档在 REDO 日志写入联机日志文件后触发,由归档线程完成本地归档动作;与联机 Redo 日志文件可以被循环覆盖重用不同,本地归档日志文件不能被覆盖,写入其中的 Redo 日志信息会一直保留,直到用户主动删除;如果配置了归档日志空间上限,系统会自动删除最早生成的归档 Redo 日志文件,腾出空间

10、实时归档

​ 与本地归档写入保存在磁盘中的日志文件不同,实时归档(Realtime)将主库产生的Redo 日志通过 MAL 系统传递到备库,实时归档是实时主备和 MPP 主备的实现基础。实时归档只在主库生效,一个主库可以配置 1~8 个实时备库。

三、达梦实时主备守护集群各组件概述

1、达梦监视器monitor

1、监控数据守护进程发送的消息(主、备数据库状态变化、故障切换过程中数据库模式、状态变化的完整过程);

2、用户可以在监视器上输入命令,启动、停止守护进程的监控功能,执行主备库切换、备库故障接管等操作;

3、发起故障自动接管命令,主库发生故障时,挑选符合接管条件的备库,并通知备库执行接管操作。

2、守护进程dbwatcher

​ 守护进程负责监控数据库运行状态,必要时重启数据库服务。守护进程和实例链路建立成功后,数据库实例定时发送信息到守护进程,发送到守护进程的内容包括:实例进程ID、实例名、数据库模式、数据库状态、FILE_SEQ、FILE_LSN、CUR_SEQ、CUR_LSN、MAL链路状态、归档状态、公钥、MPP控制文件等信息。守护进程更新本地记录的实例信息后,同时记录该时间戳。当检测到实例进程ID已经不存在或者超过一段时间没有收到实例消息(INST_ERROR_TIME),则会认定实例故障。如果配置了自动重启,则会将实例重新拉起。

3、达梦实时主备数据同步原理

image.png

4.数据守护集群-高性能与事务一致性

​ 高性能:备机收到重演日志,加到重演线程队列后响应主机,主机不需要等待备机重演完成后在响应主库。

事务一致性:备机收到重演日志,重演完成后响应主机,主机需要等待备机重演完成后响应主机。

数据守护集群的高性能与事务一致性是由归档参数ARCH_WAIT_APPLY参数控制的。

ARCH_WAIT_APPLY 备库收到Redo日志后,是否需要重演完成后再响应主库。0表示收到马上响应(高性能模式)1表示重演完成后响应(事务一致模式) 配置为即时归档的读写分离集群时,默认值为1;配置为实时归档的读写分离集群时,默认值为0;

四、守护集群实时主备集群搭建一主二备3节点实例

整体安装流程

1、主节点安装数据库软件,初始化实例,并正常启动数据库一次,开启归档,启动数据库到mount状态

2、备节点安装数据库软件,初始化实例,无需正常启动数据库一次,启动数据库到mount状态

3、监控节点只安装数据库软件,有dmmonitor命令即可

4、主备节点数据库名相同,实例名不同,OGUID相同

IP和端口规划

MAL_INST_HOST(对外IP) MAL_HOST(内网通信IP) MAL_INST_PORT(对外端口) MAL_INST_DW_PORT(实例守护通信端口) MAL_PORT(MAL 系统监听 TCP 连接的端口) MAL_DW_PORT(实例对应的守护进程监听 TCP 连接的端口)
192.168.80.11 192.168.10.11 5236 5237 5238 5239
192.168.80.12 192.168.10.12 5236 5237 5238 5239
192.168.80.13 192.168.10.12 5236 5237 5238 5239

系统环境准备(3个节点)

规划用户

#id dmdba id: dmdba: no such user groupadd -g 1101 dinstall useradd -u 1101 -g dinstall -m -d /home/dmdba -s /bin/bash dmdba echo "Dameng123" | passwd --stdin dmdba

规划软件路径

mkdir -p /data/{dmdbms,dmdata,dmarch,dmbak} chown -R dmdba:dinstall /data/{dmdbms,dmdata,dmarch,dmbak} cd /data/ && ls -ld */ drwxr-xr-x 2 dmdba dinstall 6 7月 25 14:05 dmarch/ #归档 drwxr-xr-x 2 dmdba dinstall 6 7月 25 14:05 dmbak/ #备份 drwxr-xr-x 2 dmdba dinstall 6 7月 25 14:05 dmdata/ #数据 drwxr-xr-x 2 dmdba dinstall 6 7月 25 14:05 dmdbms/ #软件

准备安装包

达梦数据库的版本:

开发版:不能商用

标准版:小型应用

企业版:生产环境中应用最多的一个版本,三权分立

安全版:在企业版的基础上做了安全特性,增加强访问控制,四权分立。

根据服务器的软件硬件环境及应用需求选择相应安装包。

安装数据库软件 ( 3节点 )

mount /dev/cdrom /mnt/ mount: /mnt: WARNING: source write-protected, mounted read-only. cp -v /mnt/DMInstall.bin /opt/ chown dmdba:dinstall /opt/DMInstall.bin chmod 775 /opt/DMInstall.bin ll /opt/DMInstall.bin -rwxr-xr-x 1 dmdba dinstall 1092293558 Jul 26 14:19 /opt/DMInstall.bin su - dmdba $ /opt/DMInstall.bin -i 请选择安装语言(C/c:中文 E/e:英文) [C/c]:C 设置时区: [20]: GTM+07 =曼谷 ,河内 [21]: GTM+08 =中国标准时间 [22]: GTM+09 =汉城 [23]: GTM+10 =关岛 [24]: GTM+11 =所罗门群岛 [25]: GTM+12 =斐济 [26]: GTM+13 =努库阿勒法 [27]: GTM+14 =基里巴斯 请选择设置时区 [21]: 21 安装类型: 1 典型安装 2 服务器 3 客户端 4 自定义 请选择安装类型的数字序号 [1 典型安装]: 1 所需空间: 1010M 请选择安装目录 [/home/dmdba/dmdbms]:/data/dmdbms 可用空间: 11G 是否确认安装? (Y/y:是 N/n:否):Y [INFO] 移动ant 日志文件。 2020-12-24 21:53:03 [INFO] 安装达梦数据库完成。 请以root系统用户执行命令: /data/dmdbms/script/root/root_installer.sh su - root /data/dmdbms/script/root/root_installer.sh

初始化实例(主库,备库1)

$ dminit PATH=/data/dmdata/ PAGE_SIZE=32 initdb V8 db version: 0x7000c License will expire on 2024-03-25 Normal of FAST Normal of DEFAULT Normal of RECYCLE Normal of KEEP Normal of ROLL log file path: /data/dmdata/DAMENG/DAMENG01.log log file path: /data/dmdata/DAMENG/DAMENG02.log write to dir [/data/dmdata/DAMENG]. create dm database success.

配置环境变量 .bash_profile

su - dmdba cat /home/dmdba/.bash_profile export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/data/dmdbms/bin" export DM_HOME="/data/dmdbms" export DM_DATA="/data/dmdata/DAMENG" export DM_INI="/data/dmdata/DAMENG/dm.ini" export PATH=$PATH:$DM_HOME/bin

正常启动关闭主库1

$DM_HOME/bin/DmServiceDMSERVER start $DM_HOME/bin/DmServiceDMSERVER stop

利用主库备份还原备库

脱机备份主库

dmrman CTLSTMT="backup database '/data/dmdata/DAMENG/dm.ini' full backupset '/data/dmbak/full_bak'"

脱机还原备库

[root@NODE01 dmbak]# scp -r /data/dmbak/full_bak 192.168.10.12:/data/dmbak/ [root@NODE01 dmbak]# scp -r /data/dmbak/full_bak 192.168.10.13:/data/dmbak/ dmrman CTLSTMT="RESTORE DATABASE '/data/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/data/dmbak/full_bak'" dmrman CTLSTMT="RECOVER DATABASE '/data/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/data/dmbak/full_bak'" dmrman CTLSTMT="RECOVER DATABASE '/data/dmdata/DAMENG/dm.ini' UPDATE DB_MAGIC"

参数配置

主库配置 dm.ini

修改主备库参数,注意 3个库的 instance_name 参数不同。

INSTANCE_NAME = DMSERVER01 #INSTANCE_NAME = DMSERVER02 #INSTANCE_NAME = DMSERVER03 PORT_NUM = 5236 #数据库实例监听端口 ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态 ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间 MAL_INI = 1 #打开 MAL 系统 ARCH_INI = 1 #打开归档配置

主库配置dmmal.ini

MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔 MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间 [MAL_INST1] MAL_INST_NAME = DMSERVER01 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致 MAL_HOST = 192.168.10.11 #MAL 系统监听 TCP 连接的 IP 地址 MAL_PORT = 5238 #MAL 系统监听 TCP 连接的端口 MAL_INST_HOST = 192.168.80.11 #实例的对外服务 IP 地址 MAL_INST_PORT = 5236 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致 MAL_INST_DW_PORT = 5237 #实例监听守护进程 TCP 连接的端口 MAL_DW_PORT = 5239 #实例对应的守护进程监听 TCP 连接的端口 [MAL_INST2] MAL_INST_NAME = DMSERVER02 MAL_HOST = 192.168.10.12 MAL_PORT = 5238 MAL_INST_HOST = 192.168.80.12 MAL_INST_PORT = 5236 MAL_INST_DW_PORT = 5237 MAL_DW_PORT = 5239 [MAL_INST3] MAL_INST_NAME = DMSERVER03 MAL_HOST = 192.168.10.13 MAL_PORT = 5238 MAL_INST_HOST = 192.168.80.13 MAL_INST_PORT = 5236 MAL_INST_DW_PORT = 5237 MAL_DW_PORT = 5239

主库配置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 = /data/dmdata/DAMENG/dm.ini #dm.ini 配置文件路径 INST_AUTO_RESTART = 1 #打开实例的自动启动功能 INST_STARTUP_CMD = /data/dmdbms/bin/dmserver #命令行方式启动 RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭 RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭

主库配置dmarch.ini

[ARCHIVE_REALTIME1] ARCH_TYPE = REALTIME #实时归档类型 ARCH_DEST = DMSERVER02 #实时归档目标实例名 [ARCHIVE_REALTIME2] ARCH_TYPE = REALTIME #实时归档类型 ARCH_DEST = DMSERVER03 #实时归档目标实例名 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = /data/dmarch ARCH_FILE_SIZE = 128 ARCH_SPACE_LIMIT = 0 ARCH_FLUSH_BUF_SIZE = 0 ARCH_HANG_FLAG = 1

备库1配置dm.ini

#INSTANCE_NAME = DMSERVER01 INSTANCE_NAME = DMSERVER02 PORT_NUM = 5236 #数据库实例监听端口 ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态 ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间 MAL_INI = 1 #打开 MAL 系统 ARCH_INI = 1 #打开归档配置

备库1配置dmmal.ini

MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔 MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间 [MAL_INST1] MAL_INST_NAME = DMSERVER01 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致 MAL_HOST = 192.168.10.11 #MAL 系统监听 TCP 连接的 IP 地址 MAL_PORT = 5238 #MAL 系统监听 TCP 连接的端口 MAL_INST_HOST = 192.168.80.11 #实例的对外服务 IP 地址 MAL_INST_PORT = 5236 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致 MAL_INST_DW_PORT = 5237 #实例监听守护进程 TCP 连接的端口 MAL_DW_PORT = 5239 #实例对应的守护进程监听 TCP 连接的端口 [MAL_INST2] MAL_INST_NAME = DMSERVER02 MAL_HOST = 192.168.10.12 MAL_PORT = 5238 MAL_INST_HOST = 192.168.80.12 MAL_INST_PORT = 5236 MAL_INST_DW_PORT = 5237 MAL_DW_PORT = 5239 [MAL_INST3] MAL_INST_NAME = DMSERVER03 MAL_HOST = 192.168.10.13 MAL_PORT = 5238 MAL_INST_HOST = 192.168.80.13 MAL_INST_PORT = 5236 MAL_INST_DW_PORT = 5237 MAL_DW_PORT = 5239

备库1配置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 = /data/dmdata/DAMENG/dm.ini #dm.ini 配置文件路径 INST_AUTO_RESTART = 1 #打开实例的自动启动功能 INST_STARTUP_CMD = /data/dmdbms/bin/dmserver #命令行方式启动 RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭 RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭

备库1配置dmarch.ini

[ARCHIVE_REALTIME1] ARCH_TYPE = REALTIME #实时归档类型 ARCH_DEST = DMSERVER01 #实时归档目标实例名 [ARCHIVE_REALTIME2] ARCH_TYPE = REALTIME #实时归档类型 ARCH_DEST = DMSERVER03 #实时归档目标实例名 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = /data/dmarch ARCH_FILE_SIZE = 128 ARCH_SPACE_LIMIT = 0 ARCH_FLUSH_BUF_SIZE = 0 ARCH_HANG_FLAG = 1

监控节点(备库2)配置 dm.ini

修改主备库参数,注意 2 个库的 instance_name 参数不同。

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

监控节点(备库2)配置 dmmal.ini

MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔 MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间 [MAL_INST1] MAL_INST_NAME = DMSERVER01 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致 MAL_HOST = 192.168.10.11 #MAL 系统监听 TCP 连接的 IP 地址 MAL_PORT = 5238 #MAL 系统监听 TCP 连接的端口 MAL_INST_HOST = 192.168.80.11 #实例的对外服务 IP 地址 MAL_INST_PORT = 5236 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致 MAL_INST_DW_PORT = 5237 #实例监听守护进程 TCP 连接的端口 MAL_DW_PORT = 5239 #实例对应的守护进程监听 TCP 连接的端口 [MAL_INST2] MAL_INST_NAME = DMSERVER02 MAL_HOST = 192.168.10.12 MAL_PORT = 5238 MAL_INST_HOST = 192.168.80.12 MAL_INST_PORT = 5236 MAL_INST_DW_PORT = 5237 MAL_DW_PORT = 5239 [MAL_INST3] MAL_INST_NAME = DMSERVER03 MAL_HOST = 192.168.10.13 MAL_PORT = 5238 MAL_INST_HOST = 192.168.80.13 MAL_INST_PORT = 5236 MAL_INST_DW_PORT = 5237 MAL_DW_PORT = 5239

监控节点(备库2)配置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 = /data/dmdata/DAMENG/dm.ini #dm.ini 配置文件路径 INST_AUTO_RESTART = 1 #打开实例的自动启动功能 INST_STARTUP_CMD = /data/dmdbms/bin/dmserver #命令行方式启动 RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭 RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭

监控节点(备库2)配置dmarch.ini

[ARCHIVE_REALTIME1] ARCH_TYPE = REALTIME #实时归档类型 ARCH_DEST = DMSERVER01 #实时归档目标实例名 [ARCHIVE_REALTIME2] ARCH_TYPE = REALTIME #实时归档类型 ARCH_DEST = DMSERVER02 #实时归档目标实例名 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = /data/dmarch ARCH_FILE_SIZE = 128 ARCH_SPACE_LIMIT = 0 ARCH_FLUSH_BUF_SIZE = 0 ARCH_HANG_FLAG = 1

监控节点(备库2)配置普通监视器dmmonitor_manual.ini

配置普通监视器模式方便日常运维 MON_DW_CONFIRM = 0 #普通监视器模式 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 = 453331 #组 GRP1 的唯一 OGUID 值 MON_DW_IP = 192.168.10.11:5239 MON_DW_IP = 192.168.10.12:5239 MON_DW_IP = 192.168.10.13:5239

监控节点(备库2)配置确认监视器dmmonitor_auto.ini

配置确认监视器模式,实现集群故障自动切换 MON_DW_CONFIRM = 1 #确认监视器模式 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 = 453331 #组 GRP1 的唯一 OGUID 值 MON_DW_IP = 192.168.10.11:5239 MON_DW_IP = 192.168.10.12:5239 MON_DW_IP = 192.168.10.13:5239

启动主库实例mount状态

dmserver $DM_INI mount

设置主库OGUID

启动命令行工具 DIsql,登录主库设置 OGUID 值。

SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); SQL> sp_set_oguid(453331); SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

系统通过 OGUID 值确定一个守护进程组,由用户保证 OGUID 值的唯一性,并确保数据守护系统中,数据库、守护进程和监视器配置相同的 OGUID 值。

修改数据库模式为主库(主库1)

启动命令行工具 Disql,登录主库修改数据库为 Primary 模式

SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); SQL> alter database primary; SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

启动备库(1,2)实例mount状态

dmserver $DM_INI mount

设置备库 OGUID(备库1 ,2)

启动命令行工具 DIsql,登录主库设置 OGUID 值。

SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); SQL> sp_set_oguid(453331); SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

修改数据库模式 为备库(备库1 ,2)

SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); SQL> alter database standby; SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

启动主库守护进程

dmwatcher "$DM_DATA/dmwatcher.ini"

启动备库(1,2)守护进程

dmwatcher "$DM_DATA/dmwatcher.ini"

检查集群是否搭建成功

启动手工监控运维

启动手工监控运维用于日常维护和观察集群状况

$ dmmonitor "$DM_HOME/dmmonitor_manual.ini"

image.png

show命令查看集群状态

image.png

注册服务并设置开机自启动

为了日常运维方便,常常注册成服务方便管理,用root用户进入$DM_HOME/script/root目录,注册服务

主库注册服务

cd $DM_HOME/script/root //注册主库数据库进程服务 ./dm_service_installer.sh -t dmserver -dm_ini /data/dmdata/DAMENG/dm.ini -p DMSERVER01 //注册主库守护进程服务 ./dm_service_installer.sh -t dmwatcher -watcher_ini /data/dmdata/DAMENG/dmwatcher.ini -p DMSEVER01 //设置主库数据库服务开机自启动 systemctl enable DmServiceDMSEVER01 //设置主库数据库守护服务开机自启动 systemctl enable DmWatcherServiceDMSERVER01

备库1注册服务

cd $DM_HOME/script/root //注册备库1数据库进程服务 ./dm_service_installer.sh -t dmserver -dm_ini /data/dmdata/DAMENG/dm.ini -p DMSERVER02 //注册备库1守护进程服务 ./dm_service_installer.sh -t dmwatcher -watcher_ini /data/dmdata/DAMENG/dmwatcher.ini -p DMSERVER02 //设置备库1数据库服务开机自启动 systemctl enable DmServiceDMSEVER02 //设置备库1数据库守护服务开机自启动 systemctl enable DmWatcherServiceDMSERVER02

备库( 2 )注册服务

cd $DM_HOME/script/root //注册备库( 2 )数据库进程服务 ./dm_service_installer.sh -t dmserver -dm_ini /data/dmdata/DAMENG/dm.ini -p DMSEVER03 //注册备库( 2 )守护进程服务 ./dm_service_installer.sh -t dmwatcher -watcher_ini /data/dmdata/DAMENG/dmwatcher.ini -p DMSEVER03 //注册自动监视器服务 ./dm_service_installer.sh -t dmmonitor -monitor_ini /data/dmdbms/dmmonitor_auto.ini -p DMMONITOR //设置备库( 2 )数据库服务开机自启动 systemctl enable DmServiceDMSEVER03 //注册备库( 2 )守护进程服务开机自启动 systemctl enable DmWatcherServiceDMSERVER03 //自动监视器服务开机自启动 systemctl enable DmMonitorServiceDMMONITOR

五、其他

1. 卸载服务

cd $DM_HOME/script/root ./dm_service_uninstaller.sh -n DmServiceDMSEVER03 是否删除服务(DmServiceDMSEVER03)?(Y/y:是 N/n:否): y Removed symlink /etc/systemd/system/multi-user.target.wants/DmServiceDMSEVER03.service. 删除服务文件(/usr/lib/systemd/system/DmServiceDMSEVER03.service)完成 删除服务(DmServiceDMSEVER03)完成

2.正确的主备启动关闭顺序

启动:主库实例-->备库实例-->备守护-->主守护-->确认监视器

关闭:确认监视器-->备守护-->主守护-->主库实例-->备库实例

达梦社区技术https://eco.dameng.com

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服