首页 > 数据库 >达梦数据库系列—17. 配置主备集群-实时主备

达梦数据库系列—17. 配置主备集群-实时主备

时间:2024-06-30 19:26:42浏览次数:3  
标签:dm 17 ## INST 主备 ini DW MAL 达梦

目录

配置实时主备

1、环境说明

2、数据准备

脱机备份、脱机还原方式

联机备份、脱机还原方式

3、配置主库

3.1 配置 dm.ini

3.2 配置 dmmal.ini

3.3 配置 dmarch.ini

3.4 配置 dmwatcher.ini

3.5 启动主库为mount

3.6 设置 OGUID

3.7 修改数据库模式

4、配置备库

4.1 配置 dm.ini

4.2 配置 dmmal.ini

4.3 配置 dmarch.ini

4.4 配置 dmwatcher.ini

4.5 启动备库为mount

4.6 设置 OGUID

4.7 修改数据库模式

5 、配置监视器

5.1 配置单实例监视器

5.2 配置多实例监视器

6 、启动守护进程

7 、启动监视器


配置实时主备

1、环境说明

  1. 准备三台机器 DW_P、DW_S1、DW_M,DW_P 和 DW_S1 用来部署主备库,DW_M 用来部署确认监视器。其中 DW_P 和 DW_S1 配置两块网卡,一块接入内部网络交换模块,一块接入到外部交换机,DW_M 接入内部网络。
  2. 三台机器都事先安装了 DM,安装路径为'/dm',执行程序保存在'/dm/bin'目录中,数据存放路径为'/dm/data'。

配置环境说明

DW_P

192.168.64.131 192.168.169.141

主库 GRP1_RT_01

Linux rh7

192.168.64.131 外部服务 IP;
192.168.169.141 内部通信 IP

DW_S1

192.168.64.132 192.168.169.142

备库 GRP1_RT_02

Linux rh7

192.168.64.132 外部服务 IP;
192.168.169.142 内部通信 IP

DW_M

192.168.64.73

确认监视器

Linux rh7

端口规划

实例名

PORT_NUM

MAL_INST_DW_PORT

MAL_HOST

MAL_PORT

MAL_DW_PORT

GRP1_RT_01

32141

33141

192.168.169.141

61141

52141

GRP1_RT_02

32142

33142

192.168.169.142

61142

52142

2、数据准备

每个库都有一个永久魔数(permenant_magic),一经生成,永远不会改变,主库传送日志时会判断这个值是否一样,确保是来自同一个数据守护环境中的库,否则传送不了日志。

DW_P 机器上初始化主库至目录/dm/data:

dminit path=/dm/data

DW_S1 机器上初始化备库至目录/dm/data:

dminit path=/dm/data

数据要通过备份还原的方式准备。

脱机备份、脱机还原方式
  1. 正常关闭数据库
  2. 进行脱机备份
./dmrman CTLSTMT="BACKUP DATABASE '/dm/data/DAMENG/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET  '/dm/data/BACKUP_FILE_01'"

3.拷贝备份文件到备库所在机器

4.执行脱机数据库还原与恢复

数据库还原:

./dmrman CTLSTMT="RESTORE DATABASE '/dm/data/DAMENG/dm.ini' FROM BACKUPSET '/dm/data/BACKUP_FILE_01'"

因为脱机备份没有产生任何 REDO 日志,所以恢复这一步此处省略。

数据库更新:

./dmrman CTLSTMT="RECOVER DATABASE '/dm/data/DAMENG/dm.ini' UPDATE DB_MAGIC"
联机备份、脱机还原方式
  1. 对主库进行联机备份操作
SQL> BACKUP DATABASE BACKUPSET '/dm/data/BACKUP_FILE_01';

    2.拷贝备份文件到备库所在机器

    3.执行脱机数据库还原与恢复

./dmrman CTLSTMT="RESTORE DATABASE '/dm/data/DAMENG/dm.ini' FROM BACKUPSET '/dm/data/BACKUP_FILE_01'"
./dmrman CTLSTMT="RECOVER DATABASE '/dm/data/DAMENG/dm.ini' FROM BACKUPSET '/dm/data/BACKUP_FILE_01'"
./dmrman CTLSTMT="RECOVER DATABASE '/dm/data/DAMENG/dm.ini' UPDATE DB_MAGIC"

3、配置主库

3.1 配置 dm.ini
##实例名,建议使用“组名_守护环境_序号”的命名方式,总长度不能超过16


INSTANCE_NAME = GRP1_RT_01


PORT_NUM = 32141 ##数据库实例监听端口


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次的日志发送信息
3.2 配置 dmmal.ini

配置 MAL 系统,各主备库的 dmmal.ini 配置必须完全一致,MAL_HOST 使用内部网络 IP,MAL_PORT 与 dm.ini 中 PORT_NUM 使用不同的端口值,MAL_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.169.141  ##MAL系统监听TCP连接的IP地址


MAL_PORT = 61141 ##MAL系统监听TCP连接的端口


MAL_INST_HOST = 192.168.64.131 ##实例的对外服务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_RT_02


MAL_HOST = 192.168.169.142


MAL_PORT = 61142


MAL_INST_HOST = 192.168.64.132


MAL_INST_PORT = 32142


MAL_DW_PORT = 52142


MAL_INST_DW_PORT = 33142
3.3 配置 dmarch.ini

修改 dmarch.ini,配置本地归档和实时归档。

除了本地归档外,其他归档配置项中的 ARCH_DEST 表示实例是 Primary 模式时,需要同步归档数据的目标实例名。

当前实例 GRP1_RT_01 是主库,需要向 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 = /dm/data/DAMENG/arch ##本地归档文件存放路径


ARCH_FILE_SIZE = 128 ##单位Mb,本地单个归档文件最大值


ARCH_SPACE_LIMIT = 0 ##单位Mb,0表示无限制,范围1024~2147483647M
3.4 配置 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 = /dm/data/DAMENG/dm.ini ##dm.ini配置文件路径


INST_AUTO_RESTART = 1 ##打开实例的自动启动功能


INST_STARTUP_CMD = /dm/bin/dmserver ##命令行方式启动


RLOG_SEND_THRESHOLD = 0 ##指定主库发送日志到备库的时间阈值,默认关闭


RLOG_APPLY_THRESHOLD = 0 ##指定备库重演日志的时间阈值,默认关闭
3.5 启动主库为mount

以 Mount 方式启动主库

./dmserver /dm/data/DAMENG/dm.ini mount
3.6 设置 OGUID

系统通过OGUID值确定一个守护进程组,确保数据守护系统中,数据库、守护进程和监视器配置相同的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);
3.7 修改数据库模式
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);

SQL>alter database primary;

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

4、配置备库

4.1 配置 dm.ini
##实例名,建议使用“组名_守护环境_序号”的命名方式,总长度不能超过16


INSTANCE_NAME = GRP1_RT_02


PORT_NUM = 32142 ##数据库实例监听端口


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次的日志重演信息
4.2 配置 dmmal.ini
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.169.141  ##MAL系统监听TCP连接的IP地址


MAL_PORT = 61141 ##MAL系统监听TCP连接的端口


MAL_INST_HOST = 192.168.64.131  ##实例的对外服务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_RT_02


MAL_HOST = 192.168.169.142


MAL_PORT = 61142


MAL_INST_HOST = 192.168.64.132


MAL_INST_PORT = 32142


MAL_DW_PORT = 52142


MAL_INST_DW_PORT = 33142
4.3 配置 dmarch.ini
[ARCHIVE_REALTIME]


ARCH_TYPE = REALTIME ##实时归档类型


ARCH_DEST = GRP1_RT_01 ##实时归档目标实例名


[ARCHIVE_LOCAL1]


ARCH_TYPE = LOCAL ##本地归档类型


ARCH_DEST = /dm/data/DAMENG/arch ##本地归档文件路径


ARCH_FILE_SIZE = 128 ##单位Mb,本地单个归档文件最大值


ARCH_SPACE_LIMIT = 0 ##单位Mb,0表示无限制,范围1024~2147483647M
4.4 配置 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 = /dm/data/DAMENG/dm.ini ##dm.ini配置文件路径


INST_AUTO_RESTART = 1 ##打开实例的自动启动功能


INST_STARTUP_CMD = /dm/bin/dmserver ##命令行方式启动


RLOG_APPLY_THRESHOLD = 0 ##指定备库重演日志的时间阈值,默认关闭
4.5 启动备库为mount
./dmserver /dm/data/DAMENG/dm.ini mount
4.6 设置 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);
4.7 修改数据库模式
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); //第1步

SQL>alter database standby; //第2步

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0); //第3步

5 、配置监视器

在主库发生故障时,能够自动通知实时备库接管为新的主库,具有自动故障处理的功能。

5.1 配置单实例监视器

在/dm/data目录下配置dmmonitor.ini

MON_DW_CONFIRM = 1 ##确认监视器模式


MON_LOG_PATH = /dm/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.169.141:52141


MON_DW_IP = 192.168.169.142:52142
5.2 配置多实例监视器

各实例的 MON_ID 与 MON_INST_ID 应相同。

MON_LOG_PATH         = /dm/data/log


MON_LOG_INTERVAL       = 60


MON_LOG_FILE_SIZE       = 32


MON_LOG_SPACE_LIMIT     = 0


MON_DW_CONFIRM        = 1


MON_INST_NUM         = 3      ##实例总个数


MON_HB_INTERVAL        = 60      ##通信心跳校验间隔


MON_BRO_INTERVAL       = 100     ##raft协议中实例通信心跳间隔


MON_VOTE_INTERVAL       = 100     ##raft协议中基础投票间隔


MON_ID            = 1       ##当前监视器在监视器系统中的ID


MON_MID            = 45614    ##当前监视器系统的唯一标识




[GRP1]


MON_INST_OGUID      = 453331


MON_DW_IP           = 192.168.169.141:52141


MON_DW_IP           = 192.168.169.142:52142



[MON1]


MON_HOST          = 192.168.169.141    ##系统监听TCP连接的IP地址


MON_PORT          = 8339         ##系统监听TCP连接的端口号


MON_INST_ID        = 1          ##监视器实例在监视器系统中的ID


[MON2]


MON_HOST            = 192.168.169.141  ##系统监听TCP连接的IP地址


MON_PORT            = 8340 ##系统监听TCP连接的端口号


MON_INST_ID = 2 ##监视器实例在监视器系统中的ID


[MON3]


MON_HOST            = 192.168.169.141  ##系统监听TCP连接的IP地址


MON_PORT            = 8341 ##系统监听TCP连接的端口号


MON_INST_ID = 3 ##监视器实例在监视器系统中的ID

6 、启动守护进程

./dmwatcher /dm/data/DAMENG/dmwatcher.ini

守护进程启动后,进入 Startup 状态,此时实例都处于 Mount 状态。守护进程开始广播自身和其监控实例的状态信息,结合自身信息和远程守护进程的广播信息,守护进程将本地实例 Open,并切换为 Open 状态。

7 、启动监视器

多实例确认监视器系统中,需逐个单独启动各监视器。

启动监视器:

./dmmonitor /dm/data/dmmonitor.ini

至此一主一备的实时数据守护系统搭建完毕,在搭建步骤和各项配置都正确的情况下,在监视器上执行 show 命令,可以监控到所有实例都处于 Open 状态,所有守护进程也都处于 Open 状态,即为正常运行状态。

标签:dm,17,##,INST,主备,ini,DW,MAL,达梦
From: https://blog.csdn.net/md54333/article/details/140084548

相关文章

  • 达梦数据库
    SQL语言使用手册-官方文档DML(DataManipulationLanguage)函数字符串函数INSTR语法:INSTR(str1,str2[,n[,m]])返回str1中包含str2的特定位置(存在的话,最小是1)。INSTR从str1的左边开始搜索,开始位置是n,如果n为负数,则搜索从str1的最右边开始,当搜索到str2的第m......
  • [题解]CF1716D Chip Move
    思路Part1这种题目应该能一眼看出是DP。我们令\(dp_{i,j}\)表示走到\(j\)这个位置,最后一步花了\(i\)的倍数。那么,我们的方程就很好想了:\(dp_{i,j}=\sum_{k=1}^{j-k\timesi\geq0}dp_{i-1,j-k\timesi}\)。因为,我们走到\(j\)的位置只能走\(i\)的倍......
  • [题解]CF1714F Build a Tree and That Is It
    思路由于题目中说这是一棵无根树,不太方便思考,于是,我们可以假装把这棵树看做有根树。首先我们令\(d_1,d_2,d_3\)分别表示从根节点到节点\(1,2,3\)的长度(不算相交部分)。那么我们可以得到下式:\[\left\{\begin{matrix}d_{12}=d_1+d_2\\d_{13}=d_1+d_3\\......
  • [题解]CF1712E1 LCM Sum (easy version)
    思路这是一道极好的思维题,主要考察了:组合数学和正难则反的方法。这题可以发现如果用直接法将十分的繁琐,于是乎,我们可以用正难则反的方法,即:总的减去不满足的。这道题总的很好求,为:\(C_{r-l+1}^{3}\)。不满足的情况,我们就可以将题目转化为:\(\operatorname{lcm}(i,j,k)<i+......
  • [题解]CF1712D Empty Graph
    思路因为我们枚举的直径是具备单调性的,所以可以使用二分答案。我们可以想一个事情,如果有两个点\(u\)和\(v\),它们两点之间的最短路径要么是直接从\(u\tov\);要么是经过一个中转点\(t\),即:\(u\tot\tov\)。然后,我们可以发现一个显然的规律,就是\(t\)一定是区间\(a\)中......
  • [题解]CF1704D Magical Array
    题意给定\(n\)个长度为\(m\)的数组,对于每一个数组选择下面任意一种操作进行若干次(操作二只能被一个数组选出)。\(c_{t,i}-1,c_{t,i-1}+1,c_{t,j}-1,c_{t,j-1}+1\)。\(c_{t,i}-1,c_{t,i-1}+1,c_{t,j}-1,c_{t,j-2}+1\)。最后输出选择操作二的数组......
  • [题解]CF1175E Minimal Segment Cover
    思路这是一道简单的DP题,DP题的核心就是状态转移。先来说一说\(dp\)数组的含义。\(dp_{i,j}\)表示从\(i\)这个点用\(2^j\)条线段能走到的最远的点。我们再来考虑一下边界情况。因为我们只用\(2^0\)条线段,那么:\(dp_{i,0}=\max(dp_{i,0},r)\)接着,我们递推一......
  • [题解]CF1746B Rebellion
    思路首先我们需要看到题目一个特殊的地方:这个序列中只存在\(0\)和\(1\)。那么,我们不难发现最终的答案一定是形如下面的序列:\(0,\dots,0,1,\dots,1\)。知道了这些,就很好想了。我们从后往前枚举,如果当前一位为\(0\)了,就从\(last\simi\)扫一遍,如果有\(1\)将最靠前的\(......
  • [题解]CF1742G Orray
    思路做这道题之前,首先要知道一个性质:\(a\operatorname{or}b\geqa\)。那么,我们就能得出一个结论:经过一定顺序的排列,最多经过\(\lceil\log_2^{a_{\max}}\rceil\)个数就能让前缀或的值达到最大值。我们不妨令有一个位置\(i\),\(b_1,b_2,\dots,b_{i-1}\)单调递增,而\(b_i......
  • [题解]CF1742E Scuza
    2022/11/23:修改了一下代码。题意有\(T\)组数据,每次给出一个\(n,q\),表示台阶的数量和询问的次数。然后再给出一个\(a_i\)为台阶高度的差分数组。每次询问给出一个\(k\),表示每次能走\(k\)个单位的高度。问:最高能到达的高度。思路考虑暴力,我们知道了高度的差分数组,那......