注册
达梦主备集群安装指南
专栏/培训园地/ 文章详情 /

达梦主备集群安装指南

无非是非 2025/01/22 199 0 0
摘要

文档标识
文件状态:
[√] 草稿
[ ] 正式发布
[ ] 正在修改

达梦主备集群(rh7)安装指南

版本:1.0

审核
批准 年 月 日
生效日期: 年 月 日

修订历史记录
日期 版本 修订说明 作者
2022年05月13日 编写 吴非洲

目录
一、 说明规划 3
1.1 硬件需求 3
1.2 软件需求 3
1.3 环境说明 3
1.4 目录存储 4
1.5 端口设置 4
1.6 单机安装 5
二、 安装步骤 6
2.1 备份主库 6
2.2 恢复主库备份到从库 6
2.3 配置实例的配置文件 dm.ini 6
2.4 配置归档配置文件 dmarch.ini 7
2.5 配置MAL系统配置文件dmmal.ini 7
2.6 配置守护进程配置文件 dmwatcher.ini 8
2.7 Mount数据库实例 9
2.8 启动守护进程 9
2.9 配置监视器 9
2.10 登录监视器 10
2.11 查看状态 10
2.12 注册服务 12
2.13 验证集群同步 13
三、 切换操作 14
3.1 手动切换swithover 14

一、说明规划
该文档作为达梦主备集群数据库安装规范指南,参考达梦官方文档
https://eco.dameng.com/docs/zh-cn/ops/standard-dw-cluster.html

操作系统其它优化后续补上
1.1硬件需求
按实际业务需求,选择合适的服务器,准备?3 台服务器,一台主库服务器,一台备库服务器,一台监视器服务器,服务器参数建议如下:

硬件 要求
物理内存 >=16 GB
交换区 Swap 空间>=物理内存
/tmp大小 > 1000 MB
网络 物理机器需要 4 个网卡,2 个 public 网卡做 band,2 个 private 网卡做 band
磁盘 根据实际应用系统需要挂载合适大小磁盘
时间服务器 按机房要求配置连接时间服务器

1.2软件需求
glibc 2.3 以上,内核 2.6,预先安装 UnixODBC

1.3环境说明
存储目录 /dev/sdc 60G 3.0G 57G 5% /dm
IP地址 172.24.3.153, 主节点
172.24.3.154, 备节点
172.24.3.155, 监视器节点
内存大小 16G
软件版本 DM8
1.4目录存储
用途 目录路径 备注
数据库软件安装目录 /dm/dm8 可用空间> 50 GB
实例安装目录 /dm /dmdata 单独挂载性能最好的磁盘建议 SSD
归档日志存放目录 /dm /dmarch 单独挂载磁盘
备份文件存放目录 /dm /dmbak 单独挂载磁盘
1.5端口设置
主机名 public ip private ip 实例名 端口 用途
db1 172.24.3.153 172.24.3.153 ufdb201 5236 数据库实例 dmrw1 监听端口
db1 172.24.3.153 172.24.3.153 ufdb201 61141 MAL 系统监听 TCP 连接的端口
db1 172.24.3.153 172.24.3.153 ufdb201 52141 实例本地的守护进程监听 TCP 连接的端口
db1 172.24.3.153 172.24.3.153 ufdb201 33141 实例监听守护进程 TCP 连接的端口
db2 172.24.3.154 172.24.3.154 ufdb202 5236 数据库实例 dmrw2 监听端口
db2 172.24.3.154 172.24.3.154 ufdb202 61141 MAL 系统监听 TCP 连接的端口
db2 172.24.3.154 172.24.3.154 ufdb202 52141 实例本地的守护进程监听 TCP 连接的端口
db2 172.24.3.154 172.24.3.154 ufdb202 33141 实例监听守护进程 TCP 连接的端口

注意,生产环境要单独配置一块独立网卡,设置单独IP
1.6单机安装
请参见“rhel7-达梦单机安装指南.docx” 分别在153,154,155上安装好达梦软件。并在主153,备154上分别新建实例数据库
cd /dm/dm8/bin
./dminit path=/dm/dmdata/ PAGE_SIZE=16 DB_NAME=ufdb20 INSTANCE_NAME=ufdb20 PORT_NUM=5236 SYSDBA_PWD=Dm12345678

二、安装步骤
2.1备份主库
确认主库 DMAP 服务已启动
[root@db1 ~]# ps -ef |grep dmap
dmdba 105940 1 0 14:20 ? 00:00:00 /dm/dm8/bin/dmap
root 109572 109503 0 18:01 pts/0 00:00:00 grep --color=auto dmap
如果未启动
./DmAPService start

关闭数据库
[dmdba@db1 bin]$ ./dmrman ctlstmt="backup database '/dm/dmdata/ufdb20/dm.ini' backupset '/dm/dmbak/bak_20220513'"
2.2恢复主库备份到从库
scp -r /dm/dmbak/bak_20220513 172.24.3.154:/dm/dmbak/

[dmdba@db2 bin]$ ./dmrman ctlstmt="restore database '/dm/dmdata/ufdb20/dm.ini' from backupset '/dm/dmbak/bak_20220513'"

[dmdba@db2 bin]$ ./dmrman ctlstmt="recover database '/dm/dmdata/ufdb20/dm.ini' update db_magic"
2.3配置实例的配置文件 dm.ini
主库修改以下参数值:
INSTANCE_NAME = ufdb201
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2

备库修改以下参数值:
INSTANCE_NAME = ufdb202
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2

2.4配置归档配置文件 dmarch.ini
主库添加以下内容:
[root@db1 ~]# cat /dm/dmdata/ufdb20/dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = ufdb202 #实时归档目标实例名(备库侧填写主库实例名)
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm/dmarch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 MB,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 10240 #单位 MB,0 表示无限制,范围 1024~4294967294 MB

备库添加以下内容:
[dmdba@db2 ~]$ cat /dm/dmdata/ufdb20/dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = ufdb201 #实时归档目标实例名(备库侧填写主库实例名)
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm/dmarch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 MB,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 10240 #单位 MB,0 表示无限制,范围 1024~4294967294 MB

2.5配置MAL系统配置文件dmmal.ini
配置MAL系统配置文件dmmal.ini
在实例目录下新建文件 dmmal.ini,执行以下命令:
主备库文件内容要相同.
[dmdba@db2 ~]$ cat /dm/dmdata/ufdb20/dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = ufdb201 #实时归档目标实例名(备库侧填写主库实例名)
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm/dmarch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 MB,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 10240 #单位 MB,0 表示无限制,范围 1024~4294967294 MB
[dmdba@db2 ~]$ cat /dm/dmdata/ufdb20/dmmal.ini
MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间

[MAL_INST1]
MAL_INST_NAME = ufdb201 #与 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 172.24.3.153 #MAL 系统监听 TCP 内部网络 IP
MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 172.24.3.153 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #与 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 52141 #实例对应的守护进程监听 TCP 端口
MAL_INST_DW_PORT = 33141

[MAL_INST2]
MAL_INST_NAME = ufdb202 #与 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 172.24.3.154 # MAL 系统监听 TCP 内部网络 IP
MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 172.24.3.154 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #与 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 52141 #实例对应的守护进程监听 TCP 端口
MAL_INST_DW_PORT = 33141

2.6配置守护进程配置文件 dmwatcher.ini
在实例目录下新建文件 dmwatcher.ini,执行以下命令:
vi /dm/dmdata/ufdb20/dmwatcher.ini

主备库文件内容要相同。
[GRP_RW]
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/dmdata/ufdb20/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm/dm8/bin/dmserver #命令行方式启动

2.7Mount数据库实例
以 Mount数据库实例修改oguid
使用 dmdba 用户,到数据库安装目录的 bin 下执行(主备库都执行)。

/dm/dm8/bin/dmserver /dm/dmdata/ufdb20/dm.ini mount

在新的终端使用 disql 工具连接数据库,执行以下命令:
./disql SYSDBA/Dm12345678:5236

主备库都修改 oguid,执行以下命令:
sp_set_oguid(453331);

主库修改数据库模式为 primary,执行以下命令:
alter database primary;

备库修改数据库模式为 standby,执行以下命令:
alter database standby;
2.8启动守护进程
启动守护进程
dmdba 用户下,到数据库安装目录的 bin 下执行(主备库都执行)。
/dm/dm8/bin/dmwatcher /dm/dmdata/ufdb20/dmwatcher.ini

守护进程启动后,会将 Mount 的实例 Open。
2.9配置监视器
守护进程配置为自动切换时,必须配置确认监视器。在主备服务器以外的服务器上(需安装有 DM 数据库软件,且与主备心跳网络端口开放)。
155上操作:
新建确认监视器配置文件 dmmonitor.ini,执行以下命令:

cd /dm/dm8/
vi dmmonitor.ini
MON_DW_CONFIRM = 1 #确认监视器模式
MON_LOG_PATH = /dm/dm8/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60 s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32 MB
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
[GRP_RW]
MON_INST_OGUID = 453331 #组 GRP_RW 的唯一 OGUID 值
#以下配置为监视器到组 GRP_RW 的守护进程的连接信息,以“IP:PORT”的形式配置
#IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT
MON_DW_IP = 172.24.3.153:52141
MON_DW_IP = 172.24.3.154:52141

启动监视器,执行以下命令:
/dm/dm8/bin/dmmonitor /dm/dm8/dmmonitor.ini
2.10登录监视器
后续登录监视器的步骤
cp /dm/dm8/dmmonitor.ini /dm/dm8/dmmonitor.ini2

login
login
用户名:sysdba
密码:Dm12345678
具备DBA的用户,一般是SYSDBA

[root@db3 dm8]# cat dmmonitor.ini2
MON_DW_CONFIRM = 0 #确认监视器模式

/dm/dm8/bin/dmmonitor /dm/dm8/dmmonitor.ini2

2.11查看状态
show
2022-05-13 18:33:05
#================================================================================#
GROUP OGUID MON_CONFIRM MODE MPP_FLAG
GRP_RW 453331 TRUE AUTO FALSE

<<DATABASE GLOBAL INFO:>>
DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
172.24.3.153 52141 2022-05-13 18:33:00 GLOBAL VALID OPEN UFDB201 OK 1 1 OPEN PRIMARY DSC_OPEN REALTIME VALID

EP INFO:
INST_IP INST_PORT INST_OK INAME ISTATUS IMODE DSC_SEQNO DSC_CTL_NODE RTYPE RSTAT FSEQ FLSN CSEQ CLSN DW_STAT_FLAG
172.24.3.153 5236 OK UFDB201 OPEN PRIMARY 0 0 REALTIME VALID 32560 68910 32560 68910 NONE

<<DATABASE GLOBAL INFO:>>
DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
172.24.3.154 52141 2022-05-13 18:32:20 GLOBAL VALID OPEN UFDB202 OK 1 1 OPEN STANDBY DSC_OPEN REALTIME VALID

EP INFO:
INST_IP INST_PORT INST_OK INAME ISTATUS IMODE DSC_SEQNO DSC_CTL_NODE RTYPE RSTAT FSEQ FLSN CSEQ CLSN DW_STAT_FLAG
172.24.3.154 5236 OK UFDB202 OPEN STANDBY 0 0 REALTIME VALID 27674 68909 27674 68909 NONE

DATABASE(UFDB202) APPLY INFO FROM (UFDB201), REDOS_PARALLEL_NUM (1):
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[32559, 32559, 32560], (RLSN, SLSN, KLSN)[68909, 68909, 68910], N_TSK[0], TSK_MEM_USE[512]
REDO_LSN_ARR: (68909)

#================================================================================#

tip
[monitor] 2022-05-13 18:33:08: 实例UFDB201[PRIMARY, OPEN, ISTAT_SAME:TRUE]不可加入其他实例,守护进程状态:OPEN,Open记录状态:VALID
[monitor] 2022-05-13 18:33:08: 实例UFDB201[PRIMARY, OPEN, ISTAT_SAME:TRUE]当前没有命令正在执行
[monitor] 2022-05-13 18:33:08: 实例UFDB201[PRIMARY, OPEN, ISTAT_SAME:TRUE]运行正常, 守护进程是OPEN状态,守护类型是GLOBAL

[monitor] 2022-05-13 18:33:08: 实例UFDB202[STANDBY, OPEN, ISTAT_SAME:TRUE]可加入实例UFDB201[PRIMARY, OPEN, ISTAT_SAME:TRUE]
[monitor] 2022-05-13 18:33:08: 实例UFDB202[STANDBY, OPEN, ISTAT_SAME:TRUE]当前没有命令正在执行
[monitor] 2022-05-13 18:33:08: 实例UFDB202[STANDBY, OPEN, ISTAT_SAME:TRUE]运行正常, 守护进程是OPEN状态,守护类型是GLOBAL

[monitor] 2022-05-13 18:33:08: 组(GRP_RW)当前活动实例运行正常

[monitor] 2022-05-13 18:33:08: 所有组中的活动实例运行正常!

2.12注册服务
cd /dm/dm8/script/root/
./dm_service_installer.sh -t dmwatcher -p ufdb20 -watcher_ini /dm/dmdata/ufdb20/dmwatcher.ini

[root@db1 ~]# cd /dm/dm8/script/root/
[root@db1 root]# ./dm_service_installer.sh -t dmwatcher -p ufdb20 -watcher_ini /dm/dmdata/ufdb20/dmwatcher.ini
Created symlink from /etc/systemd/system/multi-user.target.wants/DmWatcherServiceufdb20.service to /usr/lib/systemd/system/DmWatcherServiceufdb20.service.
创建服务(DmWatcherServiceufdb20)完成
[root@db1 root]#

Last login: Fri May 13 12:54:12 2022 from 172.24.2.4
[root@db2 ~]# cd /dm/dm8/script/root/
[root@db2 root]# ./dm_service_installer.sh -t dmwatcher -p ufdb20 -watcher_ini /dm/dmdata/ufdb20/dmwatcher.ini
Created symlink from /etc/systemd/system/multi-user.target.wants/DmWatcherServiceufdb20.service to /usr/lib/systemd/system/DmWatcherServiceufdb20.service.
创建服务(DmWatcherServiceufdb20)完成

155:
[root@db3 root]# ./dm_service_installer.sh -t dmmonitor -p confirm -monitor_ini /dm/dm8/dmmonitor.ini
Created symlink from /etc/systemd/system/multi-user.target.wants/DmMonitorServiceconfirm.service to /usr/lib/systemd/system/DmMonitorServiceconfirm.service.
创建服务(DmMonitorServiceconfirm)完成
[root@db3 root]#

启动数据库实例,执行以下命令:
systemctl start DmServiceufdb20

启动守护进程,执行以下命令:
systemctl start DmWatcherServiceufdb20

启动监视器,执行以下命令
systemctl start DmMonitorServiceconfirm
2.13验证集群同步
登录监视器后help
help
达梦守护监视器当前支持以下命令:
用法说明:
命令中的[group_name]和[db_name],在组名或库名不唯一的情况下,需要指定名称,组名和库名之间用'.'分隔.
对于show monitor命令,如果db_name未指定,则按照监视器ini的配置顺序,使用组中第一个活动的守护进程获取连接信息,
#=============================================================================================#
#-----------------------------------系统全局命令----------------------------------------------#
1.help --显示帮助信息
2.exit --退出监视器
3.show version --显示监视器自身版本信息
4.show global info --显示所有组的全局信息
5.show database [group_name.]db_name --显示指定库的详细信息
6.show [group_name] --显示指定组的详细信息,如果未指定组名,则显示所有组的详细信息
7.show i[nterval] n --每隔n秒自动显示所有组的详细信息
8.q --取消自动显示
9.list [[group_name.]db_name] --列出指定组的库对应的守护进程配置信息,如果都未指定,则列出所有守护进程配置信息
10.show open info [group_name.]db_name --显示指定库的OPEN历史信息
11.show arch send info [group_name.]db_name --查看源库到指定组的指定库的归档同步信息(包含恢复间隔信息)
12.show apply stat [group_name.]db_name --查看指定组的指定库的日志重演信息
13.show monitor [group_name[.]] [db_name] --列出连接到指定守护进程的所有监视器信息

14.show state --显示当前监视器所在监视器配置组的所有监视器的状态信息

15.tip --查看系统当前运行状态

16.login --登录监视器
17.logout --退出登录

18.get takeover time --获取备库开始自动接管需要延迟等待的时间

三、切换操作
3.1手动切换swithover
switchover groupname.instance_name(groupname可以省略)

show

tip

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服