标签:#达梦数据库 #DataWatch #DEM #高可用 #内网穿透
在数据库高可用(HA)方案中,数据守护(Data Watch) 是达梦数据库最核心的技术之一。本次实践旨在通过单机多实例的方式,模拟真实生产环境下的实时主备集群搭建。
本次任务具有一定的特殊性和挑战性:由于服务器的内存不足,管理端(DEM)部署在远程 Linux 服务器,而数据端(数据库实例 + Agent)运行在本地 Mac 虚拟机中。这种跨网段的混合架构,要求我们不仅要精通数据库原理,还需解决 SSH 隧道内网穿透、域名映射、端口冲突等多重网络难题。本文将完整复盘从环境规划、DEM 部署、手动搭建集群到最终实现可视化纳管的全过程,并重点记录了搭建过程中的“踩坑”与排错思路。
为了模拟真实的远程纳管场景(实则是服务器只有 2GB 内存,Mac 只有 8GB 内存:分配了 4GB 给虚拟机),本次环境采用了一种特殊的“混合云”架构:
| 架构层级 | 数据端 (Local) | ↔️ 通信隧道 (SSH Tunnel) ↔️ | 管理端 (Remote) |
|---|---|---|---|
| 物理环境 | 本地 Mac 虚拟机 | SSH 远程端口转发 (-R) | 远程 Linux 服务器 |
| IP 地址 | 10.211.55.11 (内网) |
流量穿透 | 8.148.x.x (公网) |
| 部署组件 | 1. 主库 (GRP1_RT_01) 2. 备库 (GRP1_RT_02) 3. dmagent (代理) | 端口映射规则 Remote:5236 ➡️ Local:5236 Remote:5237 ➡️ Local:5237 Remote:6364 ➡️ Local:6364 |
1. Tomcat 容器 2. DEM Web 应用 3. DEM 元数据库 |
| 关键配置 | /etc/hosts 映射:127.0.0.1 mac-db-server |
统一逻辑域名mac-db-server |
/etc/hosts 映射:127.0.0.1 mac-db-server |
由于只有一台虚拟机,我们需要在同一台 OS 上运行两个数据库实例(主库与备库)。为了避免冲突,必须对实例端口、MAL 通信端口及守护进程端口进行严格的错位规划。
| 角色 | 实例名 | 实例端口 (PORT_NUM) | MAL 内部通信端口 | 守护进程监听端口 | 实例监听守护端口 | 数据目录 |
|---|---|---|---|---|---|---|
| 主库 (A) | GRP1_RT_01 |
5236 | 61141 | 52141 | 5536 | /dmdata/data/DAMENG |
| 备库 (B) | GRP1_RT_02 |
5237 | 61142 | 52142 | 5537 | /dmdata/data/DAMENG_S |
根据达梦官方 ECO 社区的 运维监控工具指南,DEM 的部署并非简单的“解压即用”,而是需要对后台库、中间件及系统环境进行严格的调优,以确保监控数据的实时性与稳定性。
DEM 需要一个后台数据库来存储监控数据和告警日志。为了应对高并发写入,必须对 dm.ini 进行特定优化(参考官方推荐配置):
MEMORY_POOL = 200 # 内存池大小,建议 200M
BUFFER = 1000 # 系统缓冲区,建议 1000M
KEEP = 64 # KEEP 缓冲区,建议 64M
SORT_BUF_SIZE = 50 # 排序缓冲区,建议 50M
使用 disql 工具执行安装目录下的 /dem_init.sql 脚本。
set CHAR_CODE UTF8; 以免乱码。 SQL> set CHAR_CODE UTF8;
SQL> start dem/dem_init.sql;
在 conf/server.xml 的 <Connector> 标签中增加 maxPostSize="-1"。这能防止 dmagent 上报的大量监控数据被 Tomcat 截断。
<Connector port="8080" protocol="HTTP/1.1" ... maxPostSize="-1"/>
在 bin/catalina.sh 中配置 JAVA_OPTS,指定达梦本地驱动路径。这是解决启动报错 UnsatisfiedLinkError 的根本方法。
# Linux 环境示例
JAVA_OPTS="-server -Xms256m -Xmx1024m - Djava.library.path=/path/to/dmdbms/bin"
将DEM安装目录下 ./dem.war 上传至 Tomcat 的 webapps/ 目录。
DEM 启动后,需配置其连接后台数据库的方式。修改 webapps/dem/WEB-INF/db.xml。
ssh -N -R 5236:10.211.55.11:5236 dmdba@8.148.x.x)进行了映射。因此,这里的连接地址必须填写 隧道入口。<?xml version="1.0" encoding="UTF-8"?>
<ConnectPool>
<Server>127.0.0.1</Server>
<Port>5236</Port>
<User>SYSDBA</User>
<Password>*****</Password>
<InitPoolSize>5</InitPoolSize>
<CorePoolSize>10</CorePoolSize>
<MaxPoolSize>50</MaxPoolSize>
<KeepAliveTime>60</KeepAliveTime>
<DbDriver></DbDriver>
<DbTestStatement>select 1</DbTestStatement>
<SSLDir>../sslDir/client_ssl/SYSDBA</SSLDir>
<SSLPassword></SSLPassword>
</ConnectPool>
为了方便排查问题,建议修改 WEB-INF/classes/log4j.xml,将日志级别调整为 ERROR 或 WARN,避免过多 INFO 日志占用磁盘空间。如果遇到启动报错,可临时调整为 DEBUG或ALL。
根据项目的实际需要和磁盘的可用大小,调整 LOG_MAX_SIZE,LOG_MAX_COUNT,LOG_PRESERVE_DURATION 这 3 个参数的大小,避免出现磁盘爆盘的现象。此配置文件重启 Tomcat 之后才能生效。
日志最大大小= LOG_MAX_SIZE × LOG_MAX_COUNT × LOG_PRESERVE_DURATION;
dmagent 是监控数据的采集者,因此部署在被监控的数据库机器上。
获取 dmagent。dmagent 有两种获取方式:
(1)达梦数据库安装目录的 tool 下存有 dmagent。
(2)登录部署好的 DEM,在资源包中下载 dmagent 压缩包。
由于采取第一种方式,dmagent 无法正常运行(考虑版本不匹配),这里使用第二种方法:
编辑 dmagent/agent.ini,配置 DEM 中心的地址。
center.url:填写远程 DEM 服务器的公网访问地址。
ip_list:填写dmagent所在服务器地址。
# dem 所在机器的地址
center.url=http://8.148.x.x:8080/dem
# dmagent所在服务器的地址
ip_list = [mac-db-server]
同样修改 dmagent 目录下的 log4j.xml 文件,修改方法与 dem 端相同。
./start.sh -d agent.ini
##注册服务
[root@localhost dmagent]# ./service.sh install
input agent home [/home/dmdba/dm/dmdbms/tool/dmagent] :
input agent.ini path [/home/dmdba/dm/dmdbms/tool/dmagent/agent.ini] :
input service user [dmdba] :root
installation the service DmAgentService completed.
##以服务的方式启动 dmagent
[root@localhost dmagent]# cd service/
[root@localhost service]# ./DmAgentService start
Starting dmagentStarting dmagent.....
dmagent(pid: 28641) started successfully.
SUCCESS!
若要求不显示 manager 客户端工具,则在 tomcat/bin/catalina.sh 文件中追加属性字段 JAVA_OPTS=”…… -Drun_mode=DMA”。配置成功后则不会显示实例连接。
重启Tomcat服务,可以看到“客户端工具”部分不显示。
在完成上述标准部署后,遇到了一个棘手的问题:DEM 能看到 Agent,但无法监控数据库,且状态显示异常。
问题根源:
最终解决方案 —— “域名映射法”:
通过引入一个逻辑域名 mac-db-server,让 DEM 和 Agent 在不同的网络环境下达成“共识”。
我们需要在两端都配置 Hosts,让它们都能解析这个伪造的域名。
/etc/hosts,让 DEM 通过隧道访问。echo "127.0.0.1 mac-db-server" >> /etc/hosts
客户端(本地 Mac 虚拟机):修改 /etc/hosts,让 Agent 识别本机。
echo "127.0.0.1 mac-db-server" >> /etc/hosts
这是最关键的一步。我们需要强制 dmagent 上报这个逻辑域名,而不是它的真实 IP。
编辑本地虚拟机的 dmagent/agent.ini 文件,添加 ip_list 参数:
# dmagent/agent.ini
# ... 其他配置保持不变 ...
# 【关键】强制指定 Agent 上报的地址为逻辑域名
ip_list = [mac-db-server]
本章节参照达梦官方文档 数据守护集群安装部署,结合单机多实例的特殊环境,一步步完成实时主备集群的搭建。
在开始操作前,必须制定详细的端口与路径规划。由于本次是在单台虚拟机上模拟主备双机,因此核心要点是利用端口偏移来避免冲突。
| 配置项 | 主库 (A 机器) | 备库 (B 机器) | 说明 |
|---|---|---|---|
| IP 地址 | 127.0.0.1 (映射为内网IP) |
127.0.0.1 (映射为内网IP) |
单机环境共用同一 IP |
| 实例名 | GRP1_RT_01 |
GRP1_RT_02 |
需在 dm.ini 中修改 |
| 实例端口 | 5236 | 5237 | 必须错开,对外服务端口 |
| MAL 端口 | 61141 | 61142 | 必须错开,内部数据传输端口 |
| MAL 守护端口 | 52141 | 52142 | 必须错开,监视器连接端口 |
| 实例监听守护端口 | 5536 | 5537 | 必须错开,实例与守护进程通信端口 |
| OGUID | 45331 |
45331 |
必须一致,集群唯一标识 |
| 守护组 | GRP1 |
GRP1 |
守护进程组名 |
| 数据目录 | /dmdata/data/DAMENG |
/dmdata/data/DAMENG_S |
利用不同目录隔离数据 |
| 归档上限 | 51200 (MB) |
51200 (MB) |
防止归档撑爆磁盘 |
如果主库已存在(如端口 5236 的默认库),可跳过初始化,直接修改 dm.ini 参数。如果是新环境,需先执行 dminit。(本次用已存在的主库进行数据守护集群搭建)
修改 dm.ini:
INSTANCE_NAME = GRP1_RT_01 # 修改实例名
/home/dmdba/dmdbms/bin/dmserver /dmdata/data/DAMENG/dm.ini
/home/dmdba/dmdbms/bin/disql SYSDBA/******@127.0.0.1:5236
ALTER DATABASE MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE ADD ARCHIVELOG 'DEST=/dmdata/arch, TYPE=LOCAL, FILE_SIZE=1024, SPACE_LIMIT=51200';
ALTER DATABASE OPEN;
BACKUP DATABASE BACKUPSET '/dmdata/dmbak/BACKUP_FILE';
shutdown immediate; exit
vim /dmdata/data/DAMENG/dmarch.ini
#DaMeng Database Archive Configuration file
#this is comments
ARCH_WAIT_APPLY = 0
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdata/arch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 51200
ARCH_FLUSH_BUF_SIZE = 2
ARCH_HANG_FLAG = 1
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME # 实时归档(传给备库)
ARCH_DEST = GRP1_RT_02 # 目标实例名(备库的名字)
vim /dmdata/data/DAMENG/dmmal.ini
MAL_CHECK_INTERVAL = 10 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 10 #判定 MAL 链路断开的时间
MAL_TEMP_PATH = /dmdata/data/malpath/ #【注意】我改成了你的数据目录
MAL_BUF_SIZE = 512 #单个 MAL 缓存大小,单位 MB
MAL_SYS_BUF_SIZE = 2048 #MAL 总大小限制,单位 MB
MAL_COMPRESS_LEVEL = 0 #MAL 消息压缩等级,0 表示不压缩
[GRP1_RT_01]
MAL_INST_NAME = GRP1_RT_01
MAL_HOST = 10.211.55.11
MAL_PORT = 61141 # A 的内部端口
MAL_INST_HOST = 10.211.55.11
MAL_INST_PORT = 5236 # A 的服务端口
MAL_DW_PORT = 52141 # A 的守护端口
MAL_INST_DW_PORT = 5536 # 【补回】A 的实例监听守护端口
[GRP1_RT_02]
MAL_INST_NAME = GRP1_RT_02
MAL_HOST = 10.211.55.11
MAL_PORT = 61142 # B 的内部端口
MAL_INST_HOST = 10.211.55.11
MAL_INST_PORT = 5237 # B 的服务端口
MAL_DW_PORT = 52142 # B 的守护端口
MAL_INST_DW_PORT = 5537 # 【补回】B 的实例监听守护端口 (必须不同!)
vim /dmdata/data/DAMENG/dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #MANUAL:故障手切 AUTO:故障自切
DW_ERROR_TIME = 20 #远程守护进程故障认定时间
INST_ERROR_TIME = 20 #本地实例故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_OGUID = 45331 #守护系统唯一 OGUID 值
INST_INI = /dmdata/data/DAMENG/dm.ini #dm.ini 文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
由于采用的是单机多实例数据守护,无需拷贝,直接使用本机文件即可。
su - root
cd /home/dmdba/dmdbms/script/root
# 注册主库实例服务
./dm_service_installer.sh -t dmserver -p GRP1_RT_01 -dm_ini /dmdata/data/DAMENG/dm.ini -m mount
# 注册主库守护进程服务
# 关键!官方文档写的是 -p Watcher,但为了防止和备库的守护进程服务名冲突,我们把它改成了 -p GRP1_RT_01。
./dm_service_installer.sh -t dmwatcher -p GRP1_RT_01 -watcher_ini /dmdata/data/DAMENG/dmwatcher.ini
在单机多实例架构中,备库实际上是同一台机器上的另一个数据库实例。我们需要通过初始化、还原和配置修改三个步骤,将其打造为主库的副本。
虽然备库的数据后续会被主库备份覆盖,但必须先执行 dminit 以生成标准的目录结构和基础配置文件。为了与主库区分,我们使用新的端口 5237 和新的目录 DAMENG_S。
mkdir -p /dmdata/data/DAMENG_S
# 初始化备库,DB_NAME建议保持DAMENG,避免后续路径混乱
./dminit PATH=/dmdata/data/DAMENG_S DB_NAME=DAMENG INSTANCE_NAME=GRP1_RT_02 PAGE_SIZE=8 EXTENT_SIZE=16 LOG_SIZE=256 PORT_NUM=5237 CHARSET=1 CASE_SENSITIVE=1 SYSDBA_PWD=****** SYSAUDITOR_PWD=******
这一步是赋予备库“灵魂”的关键。我们将使用 dmrman 工具,把之前备份的主库数据还原到备库目录中。
cd /home/dmdba/dmdbms/bin
./dmrman CTLSTMT="RESTORE DATABASE '/dmdata/data/DAMENG_S/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/dmbak/BACKUP_FILE'"
./dmrman CTLSTMT="RECOVER DATABASE '/dmdata/data/DAMENG_S/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/dmbak/BACKUP_FILE'"
./dmrman CTLSTMT="RECOVER DATABASE '/dmdata/data/DAMENG_S/DAMENG/dm.ini' UPDATE DB_MAGIC"
vim /dmdata/data/DAMENG_S/DAMENG/dm.ini
dm.ini 参数修改如下
INSTANCE_NAME = GRP1_RT_02
PORT_NUM = 5237 #数据库实例监听端口
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、dmwatcher.ini 复制到备库目录。
cp /dmdata/data/DAMENG/dmmal.ini /dmdata/data/DAMENG_S/DAMENG/ cp /dmdata/data/DAMENG/dmarch.ini /dmdata/data/DAMENG_S/DAMENG/ cp /dmdata/data/DAMENG/dmwatcher.ini /dmdata/data/DAMENG_S/DAMENG/
vim /dmdata/data/DAMENG_S/DAMENG/dmarch.ini
#DaMeng Database Archive Configuration file
#this is comments
ARCH_WAIT_APPLY = 0
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdata/arch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 51200
ARCH_FLUSH_BUF_SIZE = 2
ARCH_HANG_FLAG = 1
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME # 实时归档(传给备库)
ARCH_DEST = GRP1_RT_01 # 目标实例名(备库的名字)
vim /dmdata/data/DAMENG_S/DAMENG/dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #MANUAL:故障手切 AUTO:故障自切
DW_ERROR_TIME = 20 #远程守护进程故障认定时间
INST_ERROR_TIME = 20 #本地实例故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_OGUID = 45331 #守护系统唯一 OGUID 值
INST_INI = /dmdata/data/DAMENG_S/DAMENG/dm.ini #dm.ini 文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
使用 root 用户注册备库服务。特别注意: 服务名后缀必须使用 -p GRP1_RT_02,以防止与主库服务冲突。
su - root
cd /home/dmdba/dmdbms/script/root
# 注册备库实例服务
./dm_service_installer.sh -t dmserver -p GRP1_RT_02 -dm_ini /dmdata/data/DAMENG_S/DAMENG/dm.ini -m mount
# 注册备库守护进程服务
./dm_service_installer.sh -t dmwatcher -p GRP1_RT_02 -watcher_ini /dmdata/data/DAMENG_S/DAMENG/dmwatcher.ini
为了兼顾“自动故障切换”的便利性和“人工运维介入”的灵活性,我们将参考官方最佳实践,同时配置确认监视器(后台自动跑)和非确认监视器(前台手动跑)。
mkdir -p /dmdata/data/monitor
这是集群的“自动驾驶”系统,负责故障自动切换。
vim /dmdata/data/monitor/dmmonitor.ini
MON_DW_CONFIRM = 1 #0:非确认(故障手切) 1:确认(故障自切)
MON_LOG_PATH = /dmdata/data/monitor/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 512 #单个日志大小,单位 MB
MON_LOG_SPACE_LIMIT = 2048 #日志上限,单位 MB
[GRP1]
MON_INST_OGUID = 45331 #组 GRP1 的唯一 OGUID 值
MON_DW_IP = 10.211.55.11:52141 #IP 对应 MAL_HOST,PORT 对应 MAL_DW_PORT
MON_DW_IP = 10.211.55.11:52142
这是给运维人员使用的“手动驾驶”控制台,用于日常状态查看和紧急手动切换。
vim /dmdata/data/monitor/dmmonitor_manual.ini
MON_DW_CONFIRM = 0 #0:非确认(故障手切) 1:确认(故障自切)
MON_LOG_PATH = /dmdata/data/monitor/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 512 #单个日志大小,单位 MB
MON_LOG_SPACE_LIMIT = 2048 #日志上限,单位 MB
[GRP1]
MON_INST_OGUID = 45331 #组 GRP1 的唯一 OGUID 值
MON_DW_IP = 127.0.0.1:52141 #IP 对应 MAL_HOST,PORT 对应 MAL_DW_PORT
MON_DW_IP = 127.0.0.1:52142
通常我们只需要将“确认监视器”注册为后台服务,随系统自启。
非确认监视器无需注册服务。
su - root
# 注册名为 Monitor 的服务,指向 dmmonitor.ini
./dm_service_installer.sh -t dmmonitor -p Monitor -monitor_ini /dmdata/data/monitor/dmmonitor.ini
所有的配置文件和环境都准备就绪,接下来我们将按照顺序启动集群。
由于在注册服务时指定了 -m mount 参数,启动服务后数据库会自动处于配置状态(Mount),此时我们可以直接连接数据库进行参数配置。
在终端执行以下命令启动主库:
# 启动主库实例服务
service DmServiceGRP1_RT_01 start
# 服务启动后,使用 disql 连接主库(端口 5236)并执行配置:
/home/dmdba/dmdbms/bin/disql SYSDBA/你的密码@localhost:5236
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL> SP_SET_OGUID(45331);
SQL> ALTER DATABASE PRIMARY; -- 设置为主库
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
# 启动备库实例服务
service DmServiceGRP1_RT_02 start
# 使用 disql 连接备库(端口 5237)并执行配置:
/home/dmdba/dmdbms/bin/disql SYSDBA/你的密码@localhost:5237
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL> SP_SET_OGUID(45331);
SQL> ALTER DATABASE STANDBY; -- 设置为备库
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
数据库实例配置完成后,启动守护进程(Watcher),它会自动接管数据库并将其状态从 MOUNT 切换为 OPEN。
# 启动主库守护
service DmWatcherServiceGRP1_RT_01 start
# 启动备库守护
service DmWatcherServiceGRP1_RT_02 start
使用监视器查看集群状态。为了直观看到状态变化,建议在前台启动。
/home/dmdba/dmdbms/bin/dmmonitor /dmdata/data/monitor/dmmonitor.ini
进入监视器界面后输入 show 命令。若看到以下关键指标,说明集群搭建成功:
在底层集群搭建成功并验证无误后,最后一步是将这套运行在本地 Mac 虚拟机上的集群,接入远程 Linux 服务器上的 DEM 平台,实现跨网络的可视化监控与管理。
由于集群新增了备库(5237 端口),原有的 SSH 隧道需要升级,以打通 DEM 到备库的连接。
在 Mac 终端重建隧道,加入备库端口转发:
# 转发规则:5236(主库) + 5237(备库) + 6364(Agent)
ssh -N -R 5236:10.211.55.11:5236 -R 5237:10.211.55.11:5237 -R 6364:10.211.55.11:6364 dmdba@8.148.x.x
添加成功后,DEM 会自动识别集群拓扑关系。我们可以看到以下核心监控视图:
| 主库节点 (Primary) | ↔️ 实时同步链路 (Realtime) ↔️ | 备库节点 (Standby) |
|---|---|---|
🖥️ GRP1_RT_01<br><br>Host: mac-db-server<br>Port: 5236<br>Role: PRIMARY |
<br>📡 MAL 通信<br>Mode: AUTO<br>Status: Connected<br><br>⏩ Redo Log 流向 ⏩ |
🖥️ GRP1_RT_02<br><br>Host: mac-db-server<br>Port: 5237<br>Role: STANDBY |
| 🟢 OPEN (状态正常) | ✅ VALID (链路有效) | 🟢 OPEN (状态正常) |
图解说明:
- 绿色状态:表示数据库实例运行正常。
- 中间链路:展示了从主库到备库的归档日志传输方向,VALID 表示数据实时同步中。
- 底层支撑:这一切的流量都通过 SSH 隧道 (
127.0.0.1<->10.211.55.11) 透明传输。
文章
阅读量
获赞
