准备3台节点,操作系统使用KylinV10SP3,分别作为主库、备库、监控器节点
kylin V10 SP3
| 主机名 | ip | 作用 |
|---|---|---|
| DWP | 10.47.70.2 | 主库 |
| DWSI | 10.47.70.9 | 备库 |
| DWM | 10.47.70.26 | 监控器 |
1.配置主机名
分别配置主库、备库、监视器节点的主机名
[root@DWP ~]#hostnamectl set-hostname DWP
[root@DWSI ~]#hostnamectl set-hostname DWSI
[root@DWM ~]#hostnamectl set-hostname DWM
2.添加仓库为本地yum源
说明:我的测试服务器在内网环境中,无法上网,配置了本地yum仓库,需要配置本地yum仓库
3个节点操作一样
3.关闭防火墙
3个节点操作一样
[root@DWP ~]#systemctl stop firewalld
[root@DWP ~]#systemctl disable firewalld
4.配置命令提示符
三个节点操作一样
[root@DWP ~]#tail -1 /etc/profile
export PS1="[\[\e[34;1m\]\u@\[\e[0m\]\[\e[32;1m\]\H\[\e[0m\]\[\e[31;1m\] \w\[\e[0m\]]#"
[root@DWP ~]#
5.配置/etc/hosts文件
10.47.70.2 node1 10.47.70.9 node2 10.47.70.26 node3
6.拍快照
建议配置完初始化环境后,拍初始化快照,方便在测试环境中回滚练习
三台机器都需要安装DM,安装路径为'/dm',执行程序保存在'/dm/bin'目录中,数据存放路径为'/dm/data'。
三个节点操作一样
[root@DWP ~]#groupadd dinstall
[root@DWP ~]#useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
[root@DWP ~]#id dmdba
uid=1001(dmdba) gid=1001(dinstall) groups=1001(dinstall)
[root@DWP ~]#passwd dmdba
Changing password for user dmdba.
New password: jason123.com
Retype new password: jason123.com
passwd: all authentication tokens updated successfully.
三个节点操作一样
[root@DWP ~]#mkdir /dm
[root@DWP ~]#chown dmdba:dinstall /dm
[root@DWP ~]#ll -d /dm
drwxr-xr-x 2 dmdba dinstall 6 Nov 4 16:24 /dm
浏览器下载,然后上传到虚拟机/opt目录下
三个节点操作一样
软件包下载链接:
https://eco.dameng.com/info/products/dm8
数据库版本说明:
#./disql -id
DM Database 64 V8 03134284404-20250930-295335-20164
[root@DWP ~]#cd /opt
[root@DWP /opt]#ll
total 935212
-rw-rw-rw- 1 root root 957655040 Oct 24 16:41 dm8_20251016_x86_rh7_64.iso
[root@DWP /opt]#mkdir /mnt/dm
[root@DWP /opt]#mount dm8_20251016_x86_rh7_64.iso /mnt/dm
mount: /mnt/dm: WARNING: source write-protected, mounted read-only.
[root@DWP /opt]#cd /mnt/dm
[root@DWP /mnt/dm]#ll
total 935149
-r-xr-xr-x 1 root root 2967103 Jul 18 18:07 'DM8 Install.pdf'
-r-xr-xr-x 1 root root 954624144 Oct 16 16:22 DMInstall.bin
使用命令行方式
注意使用dmdba用户安装
三个节点操作一样
[root@DWP /mnt/dm]#su - dmdba
[dmdba@DWP ~]#cd /mnt/dm
[dmdba@DWP /mnt/dm]#ll
total 935149
-r-xr-xr-x 1 root root 2967103 Jul 18 18:07 'DM8 Install.pdf'
-r-xr-xr-x 1 root root 954624144 Oct 16 16:22 DMInstall.bin
[dmdba@DWP /mnt/dm]#./DMInstall.bin -i
Installer Language:
[1]: 简体中文
[2]: English
Please select the installer's language [2]:1
...
是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:n
...
是否设置时区? (Y/y:是 N/n:否) [Y/y]:y
...
请选择时区 [21]:21
...
请选择安装类型的数字序号 [1 典型安装]:1
...
请选择安装目录 [/home/dmdba/dmdbms]:/dm
...
是否确认安装路径(/dm)? (Y/y:是 N/n:否) [Y/y]:y
...
安装前小结
安装位置: /dm
所需空间: 1783M
可用空间: 43G
版本信息:
有效日期:
安装类型: 典型安装
是否确认安装? (Y/y:是 N/n:否):y
...
请以root系统用户执行命令:
/dm/script/root/root_installer.sh
安装结束
[dmdba@DWP /mnt/dm]#
root执行命令
三个节点操作一样
[dmdba@DWP /mnt/dm]#su - root
Password:
Last login: Tue Nov 4 16:40:58 CST 2025 from 10.47.70.70 on pts/0
[root@DWP ~]#/dm/script/root/root_installer.sh
主备两个节点需要创建实例,监控器只安装数据库,不需要创建实例
主备库的实例名建议采用“组名_守护环境 _序号”的方式命名,方便按组区分不同实 例,注意总长度不能超过 16。本示例中组名为“GRP1”,配置为实时主备,主库命名为 “GRP1_RT_01”,备库命名为“GRP1_RT_02”。
| 主库 | GRPI_RT_01 | |
|---|---|---|
| 备库 | GRPI_RT_02 | |
| 监控器 | 不需要实例 |
需要主备库都部署,下面以主库为例,方式一样
DW_P 机器上初始化主库至目录/dm/data
DW_S1 机器上初始化备库至目录/dm/data
#主库
[dmdba@DWP /dm/bin]#./dminit path=/dm/data port_num=5236 db_name=GRPI_RT_01 instance_name=DMSVR SYSDBA_PWD=Dameng123 SYSAUDITOR_PWD=Dameng123
[root@DWP ~]#cd /dm/script/root
[root@DWP /dm/script/root]#./dm_service_installer.sh -t dmserver -p DMTESTSVR -dm_ini /dm/data/GRPI_RT_01/dm.ini
Created symlink /etc/systemd/system/multi-user.target.wants/DmServiceDMTESTSVR.service → /usr/lib/systemd/system/DmServiceDMTESTSVR.service.
创建服务(DmServiceDMTESTSVR)完成
#从库
./dminit path=/dm/data port_num=5236 db_name=GRPI_RT_02 instance_name=DMSVR SYSDBA_PWD=Dameng123 SYSAUDITOR_PWD=Dameng123
./dm_service_installer.sh -t dmserver -p DMTESTSVR -dm_ini /dm/data/GRPI_RT_02/dm.ini
拍快照
主备库实例创建成功
配置数据守护 V4.0 之前,必须先通过备份还原方式同步各数据库的数据,确保各数据 库的数据保持完全一致。
如果是初始搭建环境,可以通过对主库脱机备份、对备库脱机还原的方式来准备数据, 如果主库已经处于运行状态,则可以对主库进行联机备份、对备库脱机还原的方式来准备数 据。
两种方式都需要服务器配置本地归档
主备两个节点都执行
dm.ini
[dmdba@DWP ~]#cd /dm/data/GRPI_RT_01/
[dmdba@DWP /dm/data/GRPI_RT_01]#ll
total 8661092
drwxr-xr-x 2 dmdba dinstall 6 Nov 4 16:56 bak
drwxr-xr-x 2 dmdba dinstall 42 Nov 4 16:57 ctl_bak
-rw-r--r-- 1 dmdba dinstall 5632 Nov 4 16:57 dm.ctl
-rw-r--r-- 1 dmdba dinstall 85024 Nov 4 16:57 dm.ini
-rw-r--r-- 1 dmdba dinstall 633 Nov 4 16:57 dm_service.prikey
-rw-r--r-- 1 dmdba dinstall 4294967296 Nov 4 16:57 GRPI_RT_0101.log
-rw-r--r-- 1 dmdba dinstall 4294967296 Nov 4 16:57 GRPI_RT_0102.log
drwxr-xr-x 2 dmdba dinstall 6 Nov 4 16:57 HMAIN
-rw-r--r-- 1 dmdba dinstall 134217728 Nov 4 16:57 MAIN.DBF
-rw-r--r-- 1 dmdba dinstall 134217728 Nov 4 16:57 ROLL.DBF
-rw-r--r-- 1 dmdba dinstall 714 Nov 4 16:57 sqllog.ini
-rw-r--r-- 1 dmdba dinstall 10485760 Nov 4 16:57 SYSTEM.DBF
[dmdba@DWP /dm/data/GRPI_RT_01]#vim dm.ini
ARCH_INI = 1 #打开归档配置
/dm/data/GRPI_RT_01/dmarch.ini
默认没有这个文件,vim自动创建
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm/data/GRPI_RT_01/arch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位 Mb,0 表示无限制,范围 1024~2147483647M
需要重启数据库才能生效,否则直接备份会报错
1.脱机备份
主库操作
[dmdba@DWP /dm/bin]#./dmrman CTLSTMT="BACKUP DATABASE '/dm/data/GRPI_RT_01/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/dm/data/BACKUP_FILE_01'"
拷贝备份文件到备库
[root@DWP ~]#scp -r /dm/data/BACKUP_FILE_01/ node2:/dm/data/
2.脱机数据库还原和恢复
数据库还原
[dmdba@DWSI /dm/bin]#./dmrman CTLSTMT="RESTORE DATABASE '/dm/data/GRPI_RT_02/dm.ini' FROM BACKUPSET
'/dm/data/BACKUP_FILE_01'"
dmrman V8
RESTORE DATABASE '/dm/data/GRPI_RT_02/dm.ini' FROM BACKUPSET '/dm/data/BACKUP_FILE_01'
file dm.key not found, use default license!
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:02][Remaining:00:00:00]
restore successfully.
time used: 00:00:02.785
因为脱机备份没有产生任何 REDO 日志,所以此处省略恢复数据库的操作步骤。
数据库更新:
[dmdba@DWSI /dm/bin]#./dmrman CTLSTMT="RECOVER DATABASE '/dm/data/GRPI_RT_02/dm.ini' UPDATE DB_MAGIC"
dmrman V8
RECOVER DATABASE '/dm/data/GRPI_RT_02/dm.ini' UPDATE DB_MAGIC
file dm.key not found, use default license!
recover successfully!
time used: 00:00:01.250
[dmdba@DWSI /dm/bin]#
拍快照:数据准备完毕
/dm/data/GRP1_RT_01/dm.ini
dm.ini是DM数据库配置文件,配置主库的实例名为GRP1_RT_01 ,指定监听端口,打开MAL系统的参数修改如下
#实例名,建议使用“组名_守护环境_序号”的命名方式,总长度不能超过 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 次的日志发送信息
/dm/data/GRPI_RT_01/dmmal.ini
注意:配置MAL系统时,主备库的配置必须完全一致,MAL_HOST使用内部网络,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 = GRPI_RT_01 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 10.47.70.2 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 10.47.70.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 = GRPI_RT_02
MAL_HOST = 10.47.70.9
MAL_PORT = 61142
MAL_INST_HOST = 10.47.70.9
MAL_INST_PORT = 5236
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142
/dm/data/GRPI_RT_01/dmarch.ini
修改dmarch.ini,配置本地归档和实时归档
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = GRPI_RT_02 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm/data/GRPI_RT_01/arch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位 Mb,0 表示无限制,范围 1024~2147483647M
/dm/data/GRPI_RT_01/dmwatcher.ini
修改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/GRPI_RT_01/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
启动主库
以mount方式启动
/dm/data/GRPI_RT_01/dm.ini
dm.ini
dm.ini是DM数据库配置文件,配置备库的实例名为GRP1_RT_02,指定监听端口,打开MAL系统的参数修改如下
INSTANCE_NAME = GRP1_RT_02
PORT_NUM = 5238 #数据库实例监听端口
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
dmmal.ini
注意:配置MAL系统时,主备库的配置必须完全一致,MAL_HOST使用内部网络,MAL_PORT与dm.ini中PORT_NUM使用不同的端口值,MAL_DW_PORT 是各实 例对应的守护进程之间,以及守护进程和监视器之间的通信端口,配置如下:
与主库一致
dmarch.ini
修改dmarch.ini,配置本地归档和实时归档
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = GRP1_RT_01#实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm/data/DAMENG/arch #本地归档文件路径
dmwatcher.ini
配置守护进程,配置为全局守护类型,使用自动切换模式
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #自动切换模式
启动备库
/dm/data/GRPI_RT_02/dm.ini
设置OGUID
启动命令行工具 DIsql,登录备库设置 OGUID 值为 453331
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);
设置备库为standby模式
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>ALTER DATABASE STANDBY;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
dmmonitor.ini
其中 MON_DW_IP 中的 IP 和 PORT 和 dmmal.ini 中的 MAL_HOST 和 MAL_DW_PORT 配置项保持一致。
#IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT
MON_DW_IP =
MON_DW_IP =
启动各个主备库上的守护进程
./dmwatcher /dm/data/GRPI_RT_01/dmwatcher.ini ./dmwatcher /dm/data/GRPI_RT_02/dmwatcher.ini
./dmmonitor /dm/data/dmmonitor.ini
至此一主一备的实时数据守护系统搭建完毕,在搭建步骤和各项配置都正确的情况下, 在监视器上执行 show 命令,可以监控到所有实例都处于 Open 状态,所有守护进程也都 处于 Open 状态,即为正常运行状态。
1.验证主备同步
启动之后,使用普通监视器查看集群是否正常
cp dmmonitor.ini dmmonitro_pt.ini /dmmonitor dmmonitro_pt.ini 进入后使用show即可查看集群状态
向主库中插入数据,验证备库数据是否同步
CREATE TABLE table1 (
id INT,
age INT,
name VARCHAR(50)
);
INSERT INTO table1 (id, age, name) VALUES (1, 18, 'jason');
2.验证自动切换
模拟主机数据库进程被杀死,查看故障切换情况
ps -ef|grep dmserver
kill -9 pid
监视器接收到主库GRP1_RT_01故障信息,守护进程检测到GRP1_RT_01数据库进程挂掉,监视器开始接管集群,将备库
GRP1_RT_02切换为primary,切换后数据库正常工作。
通过show查看主备切换情况
文章
阅读量
获赞
