达梦分布式集群DPC_影子和实体副本相互转换
- [1 背景介绍](#1 背景介绍)
- [2 RAFT库 → 影子库(DEM)](#2 RAFT库 → 影子库(DEM))
-
- [2.1 目的](#2.1 目的)
- [2.2 步骤总览](#2.2 步骤总览)
- 详细步骤
- [3 影子库 → RAFT库(DEM)](#3 影子库 → RAFT库(DEM))
-
- [3.1 目的](#3.1 目的)
- [3.2 命令行操作步骤](#3.2 命令行操作步骤)
- [3.3 DEM操作步骤解释](#3.3 DEM操作步骤解释)
- 4.常见报错
1 背景介绍
本方案详细说明 如何安全、正确地在影子库与 RAFT 库之间相互转换。
在 dpc多副本集群架构中,节点分为两类:
①RAFT 库(实体副本):
拥有完整数据文件 ,可读写、参与日志重演、提供完整服务。
②影子库(SHADOW 库):
无实际数据文件,不参与日志重演,仅参与选举和事务提交确认,用于节省存储资源。
注意:
Ⅰ. 影子库数量不得超过集群总节点数的一半。
Ⅱ. 影子库不能直接动态增删,必须通过先转为 RAFT 库再操作。
Ⅲ. 影子库不支持Learner 归档配置。
Ⅳ. 影子库不会随主库升级/降级自动同步版本,需手动重建。
2 RAFT库 → 影子库(DEM)
2.1 目的
节省该节点的存储资源,保留其参与选举和日志确认能力。
2.2 步骤总览
按顺序点击 【监控、数据库监控、选中集群后右键点维护、选中需要转换的副本点击影实转换、然后下一步到最后执行】
详细步骤
①实例规划
选中节点点击影实转换

②主机规划

③备份设置及实例规划

⑤表空间迁移

⑥地域、数据中心和容错域配置

⑦初始化参数配置

⑧上传服务器文件

⑨确定后保存并执行

⑩成功

2.4 DEM操作步骤解释
1.连接SP1(ip:15230)
查询集群当前配置参数:SELECT TOP 1 SF_GET_PARA_VALUE(2, 'BAK_USE_AP') as BAK_USE_AP, SF_GET_PARA_VALUE(2, 'EXTERNAL_AP_PORT') as EXTERNAL_AP_PORT,1 from DUAL
集群当前配置参数为:EXTERNAL_AP_PORT=4236,BAK_USE_AP=1
修改参数BAK_USE_AP: SP_SET_PARA_VALUE(1, 'BAK_USE_AP', 2);
2.查询参数(BAK_USE_AP,EXTERNAL_AP_PORT)的值:
SELECT TOP 1 SF_GET_PARA_VALUE(2, 'BAK_USE_AP'),
SF_GET_PARA_VALUE(2, 'EXTERNAL_AP_PORT')
BAK_USE_AP=2
EXTERNAL_AP_PORT=4236
联机备份: BACKUP DATABASE SHADOW BACKUPSET '/storage/dmagent/repository/deploy/db_full_20260202203253' MAXPIECESIZE 1024 COMPRESSED TASK THREAD 4 PARALLEL 4
将RAFT_2[BP2_C]的源数据库备份文件/storage/dmagent/repository/deploy/db_full_20260202203253_BP2_A上传到远端Agent(影子副本IP)的/storage/dmagent/repository/deploy/datafileBak_40971449740765783_RAFT_2
3.影实转换
①关闭实例...
检测[BP]BP2_C(影子副本IP:15242)进程是否存在...
②执行初始化命令[/storage/TEST/dmdpc/bin/dminit PATH=/storage/TEST/dmdpc/BP2_C PORT_NUM=15242 DB_NAME=DAMENG EXTENT_SIZE=16 PAGE_SIZE=8 LOG_SIZE=2048 TIME_ZONE=+08:00 CHARSET=0 CASE_SENSITIVE=1 BLANK_PAD_MODE=0 USE_NEW_HASH=1 SYSDBA_PWD=Sc_SYSDBA@2025 SYSAUDITOR_PWD=Sc_SYSDBA@2026 BUFFER=10000 AUTO_OVERWRITE=1 AP_PORT_NUM=11642 DPC_MODE=2]
修改数据库文件所有者
③BP2_C数据还原
检查备份集: CHECK BACKUPSET '/storage/dmagent/repository/deploy/datafileBak_40971449740765783_RAFT_2'
使用DMRMAN工具执行命令: RESTORE DATABASE '/storage/TEST/dmdpc/BP2_C/DAMENG/dm.ini' TO SHADOW OVERWRITE FROM BACKUPSET '/storage/dmagent/repository/deploy/datafileBak_40971449740765783_RAFT_2'
使用DMRMAN工具执行命令: RECOVER DATABASE '/storage/TEST/dmdpc/BP2_C/DAMENG/dm.ini' FROM BACKUPSET '/storage/dmagent/repository/deploy/datafileBak_40971449740765783_RAFT_2'
使用DMRMAN工具执行命令: RECOVER DATABASE '/storage/TEST/dmdpc/BP2_C/DAMENG/dm.ini' UPDATE DB_MAGIC
④启动数据库,并还原参数修改
还原修改参数BAK_USE_AP: SP_SET_PARA_VALUE(1, 'BAK_USE_AP', 1);
3 影子库 → RAFT库(DEM)
3.1 目的
使该节点具备完整数据能力,可承担读写或故障接管角色。
3.2 命令行操作步骤
①实例规划

②主机规划

③备份设置及实例规划

④初始化参数配置

⑤上传服务器文件

⑥保存并执行

3.3 DEM操作步骤解释
①集群环境准备
连接SP1(影子副本IP204:15230)
查询集群当前配置参数:SELECT TOP 1 SF_GET_PARA_VALUE(2, 'BAK_USE_AP') as BAK_USE_AP, SF_GET_PARA_VALUE(2, 'EXTERNAL_AP_PORT') as EXTERNAL_AP_PORT,1 from DUAL
集群当前配置参数为:EXTERNAL_AP_PORT=4236,BAK_USE_AP=1
修改参数BAK_USE_AP: SP_SET_PARA_VALUE(1, 'BAK_USE_AP', 2);
②联机备份
连接BP2_A(影子副本IP205:15240)
查询参数(BAK_USE_AP,EXTERNAL_AP_PORT)的值: SELECT TOP 1 SF_GET_PARA_VALUE(2, 'BAK_USE_AP'), SF_GET_PARA_VALUE(2, 'EXTERNAL_AP_PORT')
BAK_USE_AP=2
EXTERNAL_AP_PORT=4236
联机备份: BACKUP DATABASE BACKUPSET '/storage/dmagent/repository/deploy/db_full_20260202212501' MAXPIECESIZE 1024 COMPRESSED TASK THREAD 4 PARALLEL 4
将RAFT_2[BP2_C]的源数据库备份文件/storage/dmagent/repository/deploy/db_full_20260202212501_BP2_A上传到远端Agent(影子副本IP205)的/storage/dmagent/repository/deploy/datafileBak_40974460832288476_RAFT_2
③影子副本转换实体副本
数据库停止
执行初始化命令[/storage/TEST/dmdpc/bin/dminit PATH=/storage/TEST/dmdpc/BP2_C PORT_NUM=15242 DB_NAME=DAMENG EXTENT_SIZE=16 PAGE_SIZE=8 LOG_SIZE=2048 TIME_ZONE=+08:00 CHARSET=0 CASE_SENSITIVE=1 BLANK_PAD_MODE=0 USE_NEW_HASH=1 SYSDBA_PWD=Sc_SYSDBA@2025 SYSAUDITOR_PWD=Sc_SYSDBA@2026 BUFFER=10000 AUTO_OVERWRITE=1 AP_PORT_NUM=11642 DPC_MODE=2]
修改数据库文件所有者
数据库还原
BP2_C数据还原
检查备份集: CHECK BACKUPSET '/storage/dmagent/repository/deploy/datafileBak_40974460832288476_RAFT_2'
使用DMRMAN工具执行命令: RESTORE DATABASE '/storage/TEST/dmdpc/BP2_C/DAMENG/dm.ini' OVERWRITE FROM BACKUPSET '/storage/dmagent/repository/deploy/datafileBak_40974460832288476_RAFT_2'
使用DMRMAN工具执行命令: RECOVER DATABASE '/storage/TEST/dmdpc/BP2_C/DAMENG/dm.ini' FROM BACKUPSET '/storage/dmagent/repository/deploy/datafileBak_40974460832288476_RAFT_2'
使用DMRMAN工具执行命令: RECOVER DATABASE '/storage/TEST/dmdpc/BP2_C/DAMENG/dm.ini' UPDATE DB_MAGIC
启动实例
④集群维护环境还原
连接SP1(影子副本IP204:15230)
连接SP1(影子副本IP204:15230)
还原修改参数BAK_USE_AP: SP_SET_PARA_VALUE(1, 'BAK_USE_AP', 1);
4.常见报错
① 数据库初始化失败
拿出初始化脚本到服务器执行,查看报错原因
初始化参数配置模块错误,加上SYSSSO_PWD、SYSAUDITOR_PWD等密码参数,不然会因为初始化必须设置密码问题而报错;
② 备份还原失败
拿出dem备份还原脚本到服务器执行,查看报错原因
磁盘空间问题等
更多其他数据库相关专栏:
1.数据库优化
数据库优化基本思路、索引详解、执行计划、统计信息、CBO原理、单表优化、多表优化、分布式优化、子查询、优化案例等
数据库优化(sql优化)专栏连接
2.达梦分布式数据库:
部署详细步骤(DEM)、备份还原实战、核心特性理解、使用心得、表分区方式详细介绍、表分区最佳实践、DPC架构详解等
达梦分布式DPC专栏连接
3.应用开发类
jdbc、hibernate、ibatis、mybatis、MyBatis-Plus、Spring、中间件mycat、Sharding-JDBC等
达梦数据库应用开发专栏连接