达梦数据库主备集群的基本搭建流程

引言

又是学习完成总结的一天,这次是介绍达梦数据库的主备集群的简单搭建过程,过程较为紧凑,有些地方描述不到位还望多多包涵。

虚拟机操作系统安装

安装计划

服务器配置

CPU内存硬盘
2核2线程6G60G

搭建主备集群,一主一备,一个确认监视器。

实例名操作系统数据库ip类型
GRP1_RT_01CentOS-7-x86_64-Minimal-2003DM8192.168.1.106主库、确认监视器
GRP1_RT_02CentOS-7-x86_64-Minimal-2003DM8192.168.1.107备库

数据库相关配置路径

数据库安装路径数据库全备路径数据库实例目录
主库/dm8/dm8/bak/dm8/data
备库/dm8/dm8/bak/dm8/data

安装操作系统

请添加图片描述

此处手动设置IP,配置固定IP,不设置的话后边还有修改文件的方法。
请添加图片描述

此处以计划中的主库为例

请添加图片描述

配置好root用户密码后静候安装完成。
请添加图片描述
请添加图片描述

配置网络

如果在安装的时候没有对网络进行相关配置,那么就需要手动修改

# 打开网络配置文件
# 注意,此处的ifcfg-xxx根据自身网卡名称来
vi /etc/sysconfig/network-scripts/ifcfg-ens33

# 核心配置如下
ONBOOT="yes"
IPADDR="192.168.1.106"
PREFIX="24"
GATEWAY="192.168.1.2"
DNS1="114.114.114.114"

修改完毕后执行如下命令重启网络,应用修改

systemctl restart network

测试网络是否通畅

ping www.baidu.com

配置防火墙

# 禁止防火墙开机自启动
systemctl disable firewalld
# 关闭防火墙
systemctl stop firewalld
# 关闭selinux
# 编辑/etc/selinux/config,将SELINUX的值改为disabled

永久关闭selinux,配置完后重启生效
请添加图片描述

达梦数据库安装

下载dm镜像

下载dm数据库

产品下载 | 达梦数据库 (dameng.com)

根据自己的需要进行下载,此处我们下载开发版(X86平台)

请添加图片描述

将镜像移动到需要安装主备的两台服务器中,此处我是用WindTerm操作,在每一个虚拟机中安装lrzsz

# 安装lrzsz,支持宿主机和虚拟机之间的文件传输
yum -y install lrzsz

安装完成后即可在宿主机上将镜像拖进WindTerm中实现宿主机到虚拟机的文件传输。

挂载镜像

此处假设我们将安装镜像放在了/home/dmdba/下,名为dm8.iso

# 创建一个挂载目录,避免直接挂载到mnt下造成覆盖
mkdir /mnt/dm
# 挂载镜像
mount /home/dmdba/dm8.iso /mnt/dm
# 注意镜像的权限,权限不足是无法操作的
chmod 777 /home/dadba/dm8.iso

挂载后/mnt/dm下会出现如下文件

添加用户和用户组

创建用于数据库安装的几个路径和用户

# 创建数据库根目录
mkdir /dm8
# 添加用户组dinstall
groupadd dinstall
# 创建用户
# -g指定用户组、-m -d自动生成并指定家目录(有的系统默认生成家目录,有的不生成)、-s指定shell
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
# 查看是否创建完成
id dmdba
# 设置密码
passwd dmdba

# 创建基本安装路径
mkdir /dm8
# 将此安装路径的必要权限赋予给dmdba用户
chown dmdba:dinstall /dm8
chmod 755 /dm8

安装数据库

数据库的安装请移步到 达梦数据库的简单使用

注意,在进行数据库实例创建等操作时按照之前自己的安装计划对数据库来配置,比如数据库名、端口号等对后续操作有影响。

集群搭建

数据初始化

(主库)使用dmrman进行全备,并将备份发给备库

由于搭建主备集群要求数据库数据完全一致,因此采用主库全备,备库使用主库全备还原的方法来保证一致性。

# dmrman是脱机操作工具,因此需要关停数据库
systemctl stop DmServiceDAMENG
# 启动dmrman,在安装目录bin下
cd /dm8/bin
./dmrman
# 开始进行全量备份
backup database '/dm8/data/DAMENG/dm.ini' full to FULLBAK backupset '/dm8/bak/FULLBAK';

将/dm8/bak/FULLBAK复制到目标备库中

scp -r /dm8/bak/FULLBAK root@192.168.1.107:/dm8/bak/

(备库)用备份文件还原

# 在数据库关闭的状态下启动dmrman
cd /dm8/bin/
./dmrman
# 执行还原操作
restore database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/bak/FULLBAK';

recover database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/bak/FULLBAK';

recover database '/dm8/data/DAMENG/dm.ini' update db_magic;

主备配置

(主库)配置dm.ini

编辑修改/dm8/data/数据库/dm.ini文件

#实例名,建议使用―组名_守护环境_序号‖的命名方式,总长度不能超过 16
INSTANCE_NAME = GRP1_RT_01 
PORT_NUM = 5236 #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息

(主备库)配置dmmal.ini

在/dm8/data/数据库/ 目录下创建一个名为dmmal.ini的文件

添加以下内容,此处由于只有两台虚拟机,因此其中的MAL_INST_HOST直接设置为两台虚拟机的IP

MAL_PORT、MAL_DW_PORT以及MAL_INST_DW_PORT均可直接使用下面的值

MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间
[MAL_INST1]
 MAL_INST_NAME = GRP1_RT_01 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
 MAL_HOST = 192.168.1.106 #MAL 系统监听 TCP 连接的 IP 地址
 MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口
 MAL_INST_HOST = 192.168.1.106 #实例的对外服务 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 = GRP1_RT_02
 MAL_HOST = 192.168.1.107
 MAL_PORT = 61142
 MAL_INST_HOST = 192.168.1.107
 MAL_INST_PORT = 5236
 MAL_DW_PORT = 52142
 MAL_INST_DW_PORT = 33142

(主库)配置dmarch.ini

在/dm8/data/数据库/ 目录下创建一个名为dmarch.ini的文件

由于当前是主库 GRP1_RT_01 的配置,因此这里的ARCH_DEST指定备库的实例名,表示需要向 GRP1_RT_02(实时备库)同步数据,因此实

时归档的 ARCH_DEST 配置为 GRP1_RT_02。

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

(主库)配置dmwatcher.ini

在/dm8/data/数据库/ 目录下创建一个名为dmwatcher.ini的文件,

此配置文件用于配置当前的守护进程,后续启动守护进程也是直接依赖此配置文件。

这里开头的[GRP1]代表组名

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

(备库)修改dm.ini

编辑修改/dm8/data/数据库/dm.ini文件

#实例名,建议使用―组名_守护环境_序号‖的命名方式,总长度不能超过 16
INSTANCE_NAME = GRP1_RT_02
PORT_NUM = 5236 #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志重演信息

(备库)配置dmmal.ini

此文件需要主备库完全一致,直接把主库的复制过来,注意修改权限

(备库)配置dmarch.ini

在/dm8/data/数据库/ 目录下创建一个名为dmarch.ini的文件

当前实例 GRP1_RT_02 是备库,当守护系统配置完成并且集群进行主备切换时,GRP1_RT_02 会切换为新的主库,而GRP1_RT_01 会切换为新的备库,此时就需要向GRP1_RT_01 同步数据,因此实时归档的 ARCH_DEST 配置为 GRP1_RT_01。

[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = GRP1_RT_01 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm8/data/DAMENG/arch #本地归档文件路径
ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位 Mb,0 表示无限制,范围 1024~4294967294M

(备库)配置dmwatcher.ini

在/dm8/data/数据库/ 目录下创建一个名为dmwatcher.ini的文件

注意此处的[GRP1]组名需要与主库一致

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

集群启动

以mount模式启动主库

当后续守护进程启动后会将数据库切换为OPEN状态。

# 前台启动数据库,会占用终端
./dmserver /dm8/data/数据库/dm.ini mount

下图引用自官方文档

请添加图片描述

(主库)设置OGUID

主备库需要保持OGUID一致

# 进入disql
cd /dm8/bin
./disql
# 不输入用户名密码,直接回车默认登录SYSDBA用户
# 执行命令
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);
# 修改数据库为Primary
SQL>alter database primary;

以 Mount 方式启动备库

具体原理同上

./dmserver /dm8/data/数据库/dm.ini mount

(备库)设置OGUID

# 进入disql
cd /dm8/bin
./disql
# 不输入用户名密码,直接回车默认登录SYSDBA用户
# 执行命令
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);

(备库)修改数据库模式

如果当前数据库不是 Normal 模式,需要先修改 dm.ini 中 ALTER_MODE_STATUS 值 为 1,允许修改数据库模式,修改 Standby 模式成功后再改回为 0。如果是 Normal 模式,请忽略下面的第 1 步和第 3 步。

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

守护进程启动

在集群各主机上通过安装路径bin下的dmwatcher命令指定dmwatcher.ini配置文件来启动守护进程,我们之前配置的包括dmwatcher.ini在内的配置文件几乎都创建在/dm8/data/数据库/目录下。

操作如下

# 进入bin目录中
cd /dm8/bin
# 启动守护进程
./dmwatcher /dm8/data/数据库/dmwatcher.ini

# 出现如下内容即代表守护进程启动成功
DMWATCHER[4.0] V8
DMWATCHER[4.0] IS READY

达梦监视器启动

监视器所在主机配置dmmonitor.ini

MON_DW_CONFIRM = 1 #确认监视器模式
MON_LOG_PATH = /dm8/data/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT = 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.1.106:52141
MON_DW_IP = 192.168.0.106:52142
# 这里的两个MON_DW_IP即指定了监视器需要监视哪些守护进程

在主备集群的所有节点上的守护进程都启动后,我们即可开启达梦监视器来连接所有的守护进程

# 进入bin目录
cd /dm8/bin
# 启动达梦Monitor
./dmmonitor /dm8/data/数据库/dmmonitor.ini

出现以下数据后即代表启动成功且能正常管理主备集群
在这里插入图片描述

主备切换测试

当前我们的主备集群里,GRP1_RT_01为主库primary,GRP1_RT_02为备库standby

# 当前的主备集群组名为GRP1
# 首先我们查询当前组GRP1内可切换为主库的备库有哪些
choose switchover GRP1
# 查询结果
Can choose one of the following instances to do switchover:
1: GRP1_RT_02

# 可知此时只有GRP1_RT_02可进行切换并成为新的主库

# 选择一台备库并进行切换

# 登录monitor,(不登陆无法执行切换)
login
username:SYSDBA
password:
[monitor]         2022-09-04 01:02:40: Login dmmonitor success!

# 主备切换命令格式switchover [group_name[.]] [db_name]
switchover GRP1.GRP1_RT_02

切换成功,状态变化如图
在这里插入图片描述
检查切换结果show GRP1
在这里插入图片描述
可以看到GRP1_RT_02成为了新的主库,而GRP1_RT_01变成了备库。

达梦监视器(monitor)的命令

启动dmmonitor后输入help可查看monitor支持的所有命令

help
Dmmonitor supports the following commands:
NOTE:
[group_name] in command should be specified if exists more than one group,
[db_name] in command should be specified if exists more than one instance,
[group_name] and [db_name] should be separated by '.'
for [show monitor] command, if [db_name] is empty, then use first active dmwatcher in dmmonitor ini file.
#=============================================================================================#
#------------------------------------FOR GLOBAL COMMAND---------------------------------------#
1.help                                                             --show help information
2.exit                                                             --exit dmmonitor
3.show version                                                     --show self dmmonitor version
4.show global info                                                 --show global database information of all groups
5.show database [group_name.]db_name                               --show detail database information of specified database
6.show [group_name]                                                --show detail database information of specified group, if not specified, it will show all groups
7.show i[nterval] n                                                --auto show database information in console every n seconds
8.q                                                                --cancel 'auto show' in console
9.list [[group_name.]db_name]                                      --list configuration of specified dmwatcher, if not specified, it will show all dmwatchers
10.show open info [group_name.]db_name                             --show open history of specified database
11.show arch send info [group_name.]db_name                        --show source database arch send info to specified database(include recover time info)
12.show apply stat [group_name.]db_name                            --show specified database apply stat
13.show monitor [group_name[.]] [db_name]                          --show all dmmonitor connection info of specified dmwatcher

14.tip                                                             --show system currently working status

15.login                                                           --login dmmonitor
16.logout                                                          --logout dmmonitor

17.get takeover time                                               --get how much time will delay before standby instance will do takeover

---Type q/Q <return> to quit, or <return> to continue---
# 输入q或Q停止查看帮助手册,要执行其他命令需要先停止查看手册
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值