千家信息网

DM7数据复制中模式级复制的配置及用法是什么

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,DM7数据复制中模式级复制的配置及用法是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。DM 的数据复制可以在表级,模
千家信息网最后更新 2026年11月01日DM7数据复制中模式级复制的配置及用法是什么

DM7数据复制中模式级复制的配置及用法是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

DM 的数据复制可以在表级,模式级和库级进行配置,表级复制因为不能同步DDL,所以必须要求主从段表的结构必须完全一致。 本篇我们看下模式级数据复制的配置过程。
下面举一个简单的例子来说明数据复制的配置。
1. 准备工作
参与复制的复制实例的信息如下表所示。
数据库 实例名 IP地址 数据库端口号 MAL端口号 文件目录
复制数据库 jydm 10.10.10.180 5236 5241 /dm_home/dmdba/dmdbms/data/
主数据库 hy 10.10.10.184 5236 5242 /dm_home/dmdba/dmdbms/data/
从数据库 wy 10.10.10.185 5236 5243 /dm_home/dmdba/dmdbms/data/

假设主数据库上存在hy用户,从数据库上存在wy用户,现需要创建一个主数据库上的hy用户到从数据库上wy用户的同步复制关系,其名称为REPHY2WY。

2. 参数设置
修改3台DM数据库的dm.ini 文件,添加如下内容:
数据库 dm.ini 设置
复制数据库 INSTANCE_NAME = jydm
PORT_NUM = 5236
MAL_INI = 1
主数据库 INSTANCE_NAME = hy
PORT_NUM = 5236
MAL_INI = 1
从数据库 INSTANCE_NAME = wy
PORT_NUM = 5236
MAL_INI = 1

配置dmmal.ini 文件
修改dmmal.ini文件,添加如下内容。Dmmal 配置文件默认没有,可以从示例目录下复制过来修改。

[root@shard1 ini_script]# pwd/dm_home/dmdba/dmdbms/samples/ini_script[root@shard1 ini_script]# ls -lrt总用量 48-rwxr-xr-x 1 dmdba dinstall  890 2月  14 2019 dmarch_example.ini-rwxr-xr-x 1 dmdba dinstall 1966 2月  14 2019 dmdcr_cfg_example.ini-rwxr-xr-x 1 dmdba dinstall  631 2月  14 2019 dmdcr_example.ini-rwxr-xr-x 1 dmdba dinstall 1537 2月  14 2019 dminit_example.ini-rwxr-xr-x 1 dmdba dinstall 2070 2月  14 2019 dmmal_example.ini-rwxr-xr-x 1 dmdba dinstall 1277 2月  14 2019 dmmonitor_example.ini-rwxr-xr-x 1 dmdba dinstall  288 2月  14 2019 dmmpp_example.ini-rwxr-xr-x 1 dmdba dinstall 1679 2月  14 2019 dmtimer_example.ini-rwxr-xr-x 1 dmdba dinstall 1241 2月  14 2019 dmwatch_example.ini-rwxr-xr-x 1 dmdba dinstall 2146 2月  14 2019 dmwatcher_example.ini-rwxr-xr-x 1 dmdba dinstall  522 2月  14 2019 dmwmon_example.ini-rwxr-xr-x 1 dmdba dinstall  636 2月  14 2019 sqllog_example.ini

在每个数据库服务器上创建一个dmmal.ini文件,每个dmmal.ini 配置必须一致:

MAL_CHECK_INTERVAL = 5MAL_CONN_FAIL_INTERVAL = 5[MAL_jydm]MAL_INST_NAME = jydmMAL_HOST = 10.10.10.180MAL_PORT = 5241MAL_INST_PORT = 5236 MAL_INST_HOST = 10.10.10.180[MAL_hy]MAL_INST_NAME = hyMAL_HOST = 10.10.10.184MAL_PORT = 5242MAL_INST_PORT = 5236 MAL_INST_HOST = 10.10.10.184[MAL_wy] MAL_INST_NAME =wyMAL_HOST = 10.10.10.185MAL_PORT = 5243MAL_INST_PORT = 5236 MAL_INST_HOST =10.10.10.185[dmdba@shard1 jydm]$ cat dmmal.iniMAL_CHECK_INTERVAL = 5MAL_CONN_FAIL_INTERVAL = 5[MAL_jydm]MAL_INST_NAME = jydmMAL_HOST = 10.10.10.180MAL_PORT = 5241MAL_INST_PORT = 5236 MAL_INST_HOST = 10.10.10.180[MAL_hy]MAL_INST_NAME = hyMAL_HOST = 10.10.10.184MAL_PORT = 5242MAL_INST_PORT = 5236 MAL_INST_HOST = 10.10.10.184[MAL_wy] MAL_INST_NAME =wyMAL_HOST = 10.10.10.185MAL_PORT = 5243MAL_INST_PORT = 5236 MAL_INST_HOST =10.10.10.185[dmdba@jydm2 hy]$ cat dmmal.iniMAL_CHECK_INTERVAL = 5MAL_CONN_FAIL_INTERVAL = 5[MAL_jydm]MAL_INST_NAME = jydmMAL_HOST = 10.10.10.180MAL_PORT = 5241MAL_INST_PORT = 5236 MAL_INST_HOST = 10.10.10.180[MAL_hy]MAL_INST_NAME = hyMAL_HOST = 10.10.10.184MAL_PORT = 5242MAL_INST_PORT = 5236 MAL_INST_HOST = 10.10.10.184[MAL_wy] MAL_INST_NAME =wyMAL_HOST = 10.10.10.185MAL_PORT = 5243MAL_INST_PORT = 5236 MAL_INST_HOST =10.10.10.185[dmdba@jydm3 wy]$ cat dmmal.iniMAL_CHECK_INTERVAL = 5MAL_CONN_FAIL_INTERVAL = 5[MAL_jydm]MAL_INST_NAME = jydmMAL_HOST = 10.10.10.180MAL_PORT = 5241MAL_INST_PORT = 5236 MAL_INST_HOST = 10.10.10.180[MAL_hy]MAL_INST_NAME = hyMAL_HOST = 10.10.10.184MAL_PORT = 5242MAL_INST_PORT = 5236 MAL_INST_HOST = 10.10.10.184[MAL_wy] MAL_INST_NAME =wyMAL_HOST = 10.10.10.185MAL_PORT = 5243MAL_INST_PORT = 5236 MAL_INST_HOST =10.10.10.185

对3个数据库都要启用mal_ini参数

SQL> sp_set_para_value(2,'MAL_INI',1);DMSQL executed successfullyused time: 7.465(ms). Execute id is 23.

复制数据库初始化
如果是第一次使用复制数据库,需要对复制数据库执行初始化操作。通过执行系统函数SP_INIT_REP_SYS(create_flag)来初始化复制数据库。其主要作用是创建复制用户(SYSREP/SYSREP)和创建复制数据库上需要的系统表。SP_INIT_REP_SYS 的参数create_flag为1时表示创建用户和系统表,为0时表示删除用户和系统表。

开始初始化:

SQL> SP_INIT_REP_SYS(1);DMSQL executed successfullyused time: 115.960(ms). Execute id is 30.SQL> conn SYSREP/SYSREPServer[LOCALHOST:5236]:mode is normal, state is openlogin used time: 9.684(ms)SQL> select table_name from user_tables;LINEID     TABLE_NAME       ---------- -----------------1          RPS_GROUPS2          RPS_INSTANCES3          RPS_REPLICATIONS4          RPS_TABMAPS5          RPS_FAULT_HISTORY6          RPS_CONFLICTS7          RPS_TIMERS7 rows gotused time: 170.443(ms). Execute id is 31.

创建的7张复制系统表如下:
1) 复制组表
CREATE TABLE SYSREP.RPS_GROUPS (
NAME VARCHAR(128), // 复制组名
ID INT, // 复制组ID
DESC$ VARCHAR(1000), // 描述
CLUSTER PRIMARY (NAME)
);
2) 复制节点实例表
CREATE TABLE SYSREP.RPS_INSTANCES(
INST_NAME VARCHAR(128), // 复制节点实例名
GRP_ID INT, // 复制组ID
INST_ID INT, // 实例在复制组中编号
FAULT_TIMEOUT INT, // 故障超时处理值,以秒为单位,0为立即超时
VALID_FLAG CHAR(1), // 节点系统状态
FAULT_TIME DATETIME, // 节点故障开始时间
NET_VALID_FLAG CHAR(1), // 网络状态
NET_FAULT_TIME DATETIME, // 网络故障开始时间
CLUSTER PRIMAY KEY(GRP_ID, INST_NAME)
);
3) 复制关系表
CREATE TABLE SYSREP.RPS_REPLICATIONS(
REP_NAME VARCHAR(128), // 复制名
GRP_ID INT, // 复制组ID
REP_ID INT, // 复制ID,全局唯一
MINST_ID INT, // 主节点实例编号
SINST_ID INT, // 从节点实例编号
ARCH_DIR VARCHAR(256), // 主节点归档日志路径
FAULT_TIMEOUT INT, // 故障超时处理值,以秒为单位,0为立即超时
VALID_FLAG CHAR(1), // 复制关系状态
FAULT_TIME DATETIME, // 故障开始时间
SYNC_FLAG INTEGER //指定同步或异步复制
TIMER_NAME VARCHAR(128) //指定异步复制的定时器(同步复制没有此项)
DESC$ VARCHAR(1000), // 复制描述
CLUSTER PRIMARY KEY(GRP_ID, REP_NAME)
);
4) 复制映射表
CREATE TABLE SYSREP.RPS_TABMAPS(
REP_ID INT, //复制ID
MSCH_NAME VARCHAR(128), //主表模式名
MTAB_NAME VARCHAR(128), //主表名
MSCH_ID INT, //主表模式ID
MTAB_ID INT, //主表ID
SSCH_NAME VARCHAR(128), //从表模式名
STAB_NAME VARCHAR(128), //从表名
SSCH_ID INT, //从表模式ID
STAB_ID INT, //从表ID
READONLY_MODE INT, //映射模式1:只读模式,0:非只读模式
CLUSTER PRIMARY KEY(REP_ID, MTAB_ID, STAB_ID)
);
5) 复制故障历史表
CREATE TABLE SYSREP.REP_FAULT_HISTORY(
GRP_NAME VARCHAR(128), // 复制组
OBJ_NAME VARCHAR(128), // 故障节点或关系
FAULT_TYPE VARCHAR(128), // 故障类型描述
START_TIME DATETIME, // 故障开始时间
END_TIME DATETIME // 故障结束时间
);
6) 复制冲突历史表
CREATE TABLE SYSREP.RPS_CONFLICTS
(
SEQ_NO BIGINT // 冲突序号
REP_ID INT, // 对应复制号
INST_ID INT, // 产生冲突的节点编号
TABLE_ID INT, // 冲突表ID
TYPE TINYINT // 操作类型
OCC_TIME DATETIME, // 冲突产生时间
KEY_DATA VARCHAR(8000), // 冲突数据的PK值,如包含多个KEY值,则以逗号分隔。如键值超长则截断
);
7) 复制定时器表
CREATE TABLE SYSREP.RPS_TIMERS (
NAME VARCHAR(128), // 定时器名称
TYPE$ INT, // 定时类型,取值可参见SP_RPS_CREATE_TIMER
FERQ_INTERVAL INT, // 间隔天数
FREQ_SUB_INTERVAL INT, // 间隔的月/周(调度类型决定)数
FREQ_MINUTE_INTERVAL INT, // 间隔的分钟数
START_TIME TIME, // 开始时间
END_TIME TIME, // 结束时间
DURING_START_DATE DATETIME // 开始时间点
DURING_END_DATE DATETIME, // 结束时间点
NO_END_DATA_FLAG INTEGER //是否有结束日期(0:有结束日期;1:没有结束日期)
DESC$ VARCHAR(1000), // 定时器描述
CLUSTER PRIMARY KEY(REP_NAME)
);
配置模式级复制

启动3台服务器,启动的顺序不分先后。

[root@shard1 jydm]# systemctl stop DmServicejydm.service[root@shard1 jydm]# systemctl start DmServicejydm.service[root@jydm2 ~]# systemctl stop DmServicehy.service[root@jydm2 ~]# systemctl start DmServicehy.service[root@jydm3 ~]# systemctl stop DmServicewy.service[root@jydm3 ~]# systemctl start DmServicewy.service

登录复制数据库(RPS jydm),保证服务器状态为OPEN,开始复制配置。

[dmdba@shard1 bin]$ ./disql sysdba/abcdServer[LOCALHOST:5236]:mode is normal, state is openlogin used time: 9.851(ms)disql V7.1.6.46-Build(2018.02.08-89107)ENT Connected to: DM 7.1.6.46

创建复制组REP_GRP_hy2wy

SQL> SP_RPS_ADD_GROUP('REP_GRP_hy2wy', '主从同步复制');DMSQL executed successfullyused time: 6.109(ms). Execute id is 55.SQL> select * from SYSREP.RPS_GROUPS;LINEID     NAME          ID          DESC$       ---------- ------------- ----------- ------------1          REP_GRP_hy2wy 2           主从同步复制used time: 1.182(ms). Execute id is 56.

开始设置

SQL> SP_RPS_SET_BEGIN('REP_GRP_hy2wy');DMSQL executed successfullyused time: 0.530(ms). Execute id is 57.

添加复制关系

SQL> SP_RPS_ADD_REPLICATION ('REP_GRP_hy2wy', 'REPhy2wy', 'hy到wy的同步复制', 'hy', 'wy', NULL, '/dm_home/dmdba/dmdbms/dmreplog');DMSQL executed successfullyused time: 2.623(ms). Execute id is 58.

添加模式级复制
添加复制映射, 注意这里用户名和表名要大写,否则会提示对象不存在

SQL> SP_RPS_ADD_SCH_MAP('REPhy2wy','hy','wy',0);SP_RPS_ADD_SCH_MAP('REPhy2wy','hy','wy',0);[-8713]:source table is not exists.used time: 1.738(ms). Execute id is 0.SQL> SP_RPS_ADD_SCH_MAP('REPhy2wy','HY','WY',0);DMSQL executed successfullyused time: 3.126(ms). Execute id is 6.

提交设置

SQL> SP_RPS_SET_APPLY();DMSQL executed successfullyused time: 00:00:05.041. Execute id is 7.SQL>  select * from SYSREP.RPS_REPLICATIONS;LINEID     REP_NAME GRP_ID      REP_ID      MINST_ID    SINST_ID    ARCH_DIR                       FAULT_TIMEOUT VALID_FLAG  FAULT_TIME                  SYNC_FLAG   TIMER_NAME DESC$           ---------- -------- ----------- ----------- ----------- ----------- ------------------------------ ------------- ----------- --------------------------- ----------- ---------- ----------------1          REPhy2wy 2           3           5           6           /dm_home/dmdba/dmdbms/dmreplog -1            0           NULL                        1           NULL       hy到wy的同步复制used time: 1.362(ms). Execute id is 8.SQL> select * from SYSREP.RPS_INSTANCES;LINEID     INST_NAME GRP_ID      INST_ID     FAULT_TIMEOUT VALID_FLAG  FAULT_TIME                  NET_VALID_FLAG NET_FAULT_TIME             ---------- --------- ----------- ----------- ------------- ----------- --------------------------- -------------- ---------------------------1          hy        2           5           -1            0           NULL                        0              NULL2          wy        2           6           -1            0           NULL                        0              NULLused time: 0.981(ms). Execute id is 9.SQL> select * from SYSREP.RPS_TABMAPS;LINEID     REP_ID      MSCH_NAME MTAB_NAME MSCH_ID     MTAB_ID     SSCH_NAME STAB_NAME SSCH_ID     STAB_ID     READONLY_MODE---------- ----------- --------- --------- ----------- ----------- --------- --------- ----------- ----------- -------------1          3           HY        NULL      150995951   -1          WY        NULL      150995951   -1          0used time: 1.178(ms). Execute id is 10.SQL>

至此,模式级复制配置完成。注意一点,DM的复制配置必须在开始复制配置之前执行SP_RPS_SET_BEGIN,配置完成之后执行SP_RPS_SET_APPLY提交。

验证同步
先测试DML操作:在主库insert 数据:

SQL> insert into t1 values(1,'hy1');affect rows 1used time: 1.565(ms). Execute id is 6.SQL> commit;executed successfullyused time: 1.442(ms). Execute id is 7.SQL> select * from t1;LINEID     ID USERNAME---------- -- --------1          1  hy1used time: 0.548(ms). Execute id is 8.

从库查询,同步成功:

SQL> select * from t1;LINEID     ID USERNAME---------- -- --------1          1  hy1used time: 2.538(ms). Execute id is 5.

在主库上的hy用户下创建一个测试表t2

SQL> create table t2 as select * from sysobjects;executed successfullyused time: 12.763(ms). Execute id is 6.SQL> select count(*) from t2;LINEID     COUNT(*)            ---------- --------------------1          1480used time: 1.266(ms). Execute id is 7.

在从库上的wy用户查询这个表t2

SQL> select count(*) from t2;LINEID     COUNT(*)            ---------- --------------------1          1480used time: 0.463(ms). Execute id is 8.

可以看到创建表的DDL语句已经同步到wy用户下。

因为我这里的复制从库是0级,就是非只读的,删除后重新添加1级,即只读模式在测试:

SQL> SP_RPS_SET_BEGIN('REP_GRP_hy2wy');DMSQL executed successfullyused time: 0.408(ms). Execute id is 12.SQL> SP_RPS_DROP_SCH_MAP('REPhy2wy','HY','WY');DMSQL executed successfullyused time: 1.456(ms). Execute id is 13.SQL> SP_RPS_ADD_SCH_MAP('REPhy2wy','HY','WY',1);DMSQL executed successfullyused time: 2.820(ms). Execute id is 14.SQL> SP_RPS_SET_APPLY();DMSQL executed successfullyused time: 00:00:05.039. Execute id is 15.

再测试
从主库的hy用户中创建表t3

SQL> create table t3 as select * from sysobjects;executed successfullyused time: 9.925(ms). Execute id is 9.SQL> select count(*) from t3;LINEID     COUNT(*)            ---------- --------------------1          1480used time: 0.861(ms). Execute id is 10.

在从库上的wy用户下查询表t3显示不存在

SQL> select count(*) from t3;select count(*) from t3;[-2106]:Error in line: 1Invalid table or view name [T3].used time: 0.774(ms). Execute id is 0.

从测试结果可以看到在只读模式下的模式级复制不能同步DDL操作。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

数据 数据库 模式 配置 用户 同步 故障 时间 节点 实例 文件 系统 冲突 测试 定时器 状态 类型 主从 内容 参数 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广东万易互联网科技有限公司惠州分公司 哈尔滨大商圈互联网科技有限公司 河南云网互联网络科技有限公司 互联网的科技 苏州互联网科技贷款公司 互联网高科技股票 博兴的互联网电子科技公司 互联网科技教育视频 栖莱科技互联网股份有限公司 互联网科技项目计划书材料类 互联网对科技的发展 互联网为啥属于高科技 彤创互联网科技有限公司 语蝶互联网科技有限公司 云南省自由互联网科技有限公司 互联网科技股为什么大涨 杭州科技互联网公司有哪些 互联网科技创业计划的风险分析 山东亿川互联网科技有限责任公司 如何强化互联网金融科技 科技赋能下的互联网金融 互联网科技公司电话 有马互联网科技 互联网金融科技创新 云电互联网科技 赫美联合互联网科技 西藏七维空间互联网科技有限公司 武汉健翔互联网络科技有限公司 坤平互联网科技 互联网科技扶贫时间
0