mysql转dm7_DM7 达梦数据库 数据库级 数据复制(DATA REPLICATION) 搭建手册

在之前的博客我们做了DM 数据复制的几个测试::

DM 的数据复制可以在表级,模式级和库级进行配置,并且根据官方文档的说明,模式级别是支持DDL复制的,但之前的测试并不成功,所以本篇我们测试下数据库级别的复制是否支持DDL复制。https://www.cndba.cn/Dave/article/3655

1 准备工作

参与复制的复制实例的信息如下表所示。

数据库

实例名

IP地址

数据库端口号

MAL端口号

文件目录

复制数据库

China

192.168.20.191

5236

5241

/dm/dmdbms/data

主数据库

AnQing

192.168.20.192

5236

5242

/dm/dmdbms/data

从数据库

HeFei

192.168.20.193

5236

5243

/dm/dmdbms/data

我们将 AnQing 实例同步到HeFei HeFei实例。

实例的创建参考我的博客,如下,这里不在描述:

https://www.cndba.cn/Dave/article/3655

2 参数设置

2.1 配置dm.ini 文件

修改3台DM数据库的dm.ini 文件,添加如下内容:

数据库

dm.ini 设置

复制数据库

INSTANCE_NAME = China

PORT_NUM = 5236

MAL_INI = 1

主数据库

INSTANCE_NAME = AnQing

PORT_NUM = 5236

MAL_INI = 1

从数据库

INSTANCE_NAME = HeFei

PORT_NUM = 5236

MAL_INI = 1

2.2 配置dmmal.ini 文件

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

[dave@www.cndba.cn1 ini_script]$ pwd

/dm/dmdbms/samples/ini_script

[dave@www.cndba.cn1 ini_script]$ ll

总用量 48

-rwxr-xr-x 1 dmdba dinstall 890 2月 23 2029 dmarch_example.ini

-rwxr-xr-x 1 dmdba dinstall 1966 2月 23 2029 dmdcr_cfg_example.ini

-rwxr-xr-x 1 dmdba dinstall 631 2月 23 2029 dmdcr_example.ini

-rwxr-xr-x 1 dmdba dinstall 1537 2月 23 2029 dminit_example.ini

-rwxr-xr-x 1 dmdba dinstall 2070 2月 23 2029 dmmal_example.ini

-rwxr-xr-x 1 dmdba dinstall 1277 2月 23 2029 dmmonitor_example.ini

-rwxr-xr-x 1 dmdba dinstall 288 2月 23 2029 dmmpp_example.ini

-rwxr-xr-x 1 dmdba dinstall 1679 2月 23 2029 dmtimer_example.ini

-rwxr-xr-x 1 dmdba dinstall 2146 2月 23 2029 dmwatcher_example.ini

-rwxr-xr-x 1 dmdba dinstall 1241 2月 23 2029 dmwatch_example.ini

-rwxr-xr-x 1 dmdba dinstall 522 2月 23 2029 dmwmon_example.ini

-rwxr-xr-x 1 dmdba dinstall 636 2月 23 2029 sqllog_example.ini

[dave@www.cndba.cn1 ini_script]$

每个站点的 dmmal.ini 配置必须一致,我们这里直接touch文件并粘贴内容:

MAL_CHECK_INTERVAL = 5

MAL_CONN_FAIL_INTERVAL = 5

[MAL_China]

MAL_INST_NAME = China

MAL_HOST = 192.168.20.191

MAL_PORT = 5241

MAL_INST_PORT = 5236

MAL_INST_HOST = 192.168.20.191

[MAL_AnQing]

MAL_INST_NAME = AnQing

MAL_HOST = 192.168.20.192

MAL_PORT = 5242

MAL_INST_PORT = 5236

MAL_INST_HOST = 192.168.20.192

[MAL_HeFei]

MAL_INST_NAME = HeFei

MAL_HOST = 192.168.20.193

MAL_PORT = 5243

MAL_INST_PORT = 5236

MAL_INST_HOST = 192.168.20.193

3 复制数据库初始化

配置数据复制在 RPS(复制数据库:China) 上进行,在配置数据复制之前,需要保证复制数据库和所有待配置节点的实例名各不相同,配置好其 MAL 系统并保证网络环境正常。按照复制组、复制关系、复制表映射的顺序配置复制环境。

注意:MAL 系统是基于 TCP 协议实现的一种内部通信机制,具有可靠、灵活、高效的特性。

如果是第一次使用复制数据库,需要对复制数据库(China)执行初始化操作。通过执行系统函数SP_INIT_REP_SYS(create_flag)来初始化复制数据库。SP_INIT_REP_SYS 的参数create_flag 为 1 时表示创建用户和系统表,为 0 时表示删除用户和系统表。https://www.cndba.cn/Dave/article/3655

执行系统函数 SP_INIT_REP_SYS(1)创建的复制用户SYSREP,该用户默认密码也是SYSREP,具有RESOURCE的角色。

创建的7张复制系统表如下:

1)复制组表(SYSREP.RPS_GROUPS)

2)复制节点实例表(SYSREP.RPS_INSTANCES)

3)复制关系表(SYSREP.RPS_REPLICATIONS)

4)复制映射表( SYSREP.RPS_TABMAPS)

5)故障历史表(SYSREP.REP_FAULT_HISTORY)

6)冲突历史表( SYSREP.RPS_CONFLICTS)

7)复制定时器表(SYSREP.RPS_TIMERS)

开始初始化:

SQL> SP_INIT_REP_SYS(1);

DMSQL executed successfully

used time: 20.316(ms). Execute id is 835.

SQL>

SQL> conn SYSREP/SYSREP

Server[LOCALHOST:5236]:mode is normal, state is open

login used time: 9.226(ms)

SQL>

SQL> select table_name from user_tables;

LINEID TABLE_NAME

---------- -----------------

1 RPS_GROUPS

2 RPS_INSTANCES

3 RPS_REPLICATIONS

4 RPS_TABMAPS

5 RPS_FAULT_HISTORY

6 RPS_CONFLICTS

7 RPS_TIMERS

7 rows got

used time: 32.359(ms). Execute id is 837.

SQL>

4 配置表级复制

配置复制涉及到存储过程说明可以参考如下博客:

这里看具体的配置步骤。

4.1 启动DB

启动 3 台数据库,启动的顺序不分先后。

[dmdba@dm2 AnQing]$ service DmServiceAnQing start

Starting DmServiceAnQing: [ OK ]

[dmdba@dm2 AnQing]$

[dmdba@dm3 HeFei]$ service DmServiceHeFei start

Starting DmServiceHeFei: [ OK ]

[dmdba@dm3 HeFei]$

4.2 配置模式级复制

登录 RPS (China),配置复制:

https://www.cndba.cn/Dave/article/3655https://www.cndba.cn/Dave/article/3655

#创建复制组 REP_GRP_B2C

SQL> SP_RPS_ADD_GROUP('REP_GRP_AnQing2HeFei', '主从同步复制');

DMSQL executed successfully

used time: 40.909(ms). Execute id is 838.

SQL>

#开始设置

SQL> SP_RPS_SET_BEGIN('REP_GRP_AnQing2HeFei');

DMSQL executed successfully

used time: 0.733(ms). Execute id is 839.

#添加复制关系

SQL> SP_RPS_ADD_REPLICATION('REP_GRP_AnQing2HeFei', 'AnQing2HeFei', 'AnQing 到 HeFei 的同步复制', 'AnQing', 'HeFei', NULL, '/dm/dmreplog');

DMSQL executed successfully

used time: 6.277(ms). Execute id is 840.

SQL>

这里可能会遇到的问题:

https://www.cndba.cn/Dave/article/3655

DM7 达梦数据库 数据复制 SP_RPS_ADD_REPLICATION [-2401]:Database file path [/dm/dmreplog] is invalid 解决方法

https://www.cndba.cn/dave/article/3654https://www.cndba.cn/Dave/article/3655

#添加数据库级复制:

SQL> SP_RPS_ADD_DB_MAP('AnQing2HeFei', 0);

DMSQL executed successfully

used time: 1.007(ms). Execute id is 893.

SQL>

#提交设置

SQL> SP_RPS_SET_APPLY();

DMSQL executed successfully

used time: 00:00:05.359. Execute id is 894.

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

其他的复制配置比如对修改复制组,修改复制关系,删除映射等可以参考之前的博客:

4.3 验证同步

主库:

SQL> create table anqing4 as select * from sysobjects;

executed successfully

used time: 13.936(ms). Execute id is 16.

从库查询,DDL 同步正常:

SQL> select count(1) from anqing4;

LINEID COUNT(1)

---------- --------------------

1 1296

used time: 1.371(ms). Execute id is 1303.

SQL>

但是测试创建用户:

SQL> create user anqing5 identified by "www.cndba.cn";

executed successfully

used time: 7.731(ms). Execute id is 17.

SQL> grant resource to anqing5;

executed successfully

used time: 4.775(ms). Execute id is 18.

SQL>

#在备库连接时直接导致备库崩溃:

SQL> conn anqing2/"www.cndba.cn"

[-70028]:Create SOCKET connection failure.

查看日志:

2029-03-06 00:46:36 [WARNING] database P0000010365 main_thread Failure occurs in data_recv_inet_once, code 6

2029-03-06 00:47:49 [WARNING] database P0000010365 main_thread Failure occurs in data_recv_inet_once, code 6

2029-03-06 00:48:33 [WARNING] database P0000010365 main_thread Failure occurs in data_recv_inet_once, code 6

2029-03-06 00:49:04 [WARNING] database P0000010365 main_thread Failure occurs in data_recv_inet_once, code 6

查看数据复制的错误日志:

SQL> select * from SYSREP.RPS_FAULT_HISTORY;

LINEID GRP_NAME OBJ_NAME FAULT_TYPE START_TIME END_TIME

---------- -------------------- --------------- ------------------ --------------------------- ---------------------------

1 REP_GRP_AnQing2HeFei REPAnQing2HeFei REPLICATION FAULT 2019-09-06 14:17:36.845301 2019-09-06 14:20:37.730592

2 REP_GRP_AnQing2HeFei HeFei INSTANCE SYS FAULT 2019-09-06 14:17:36.845301 2019-09-06 14:20:37.730592

3 REP_GRP_AnQing2HeFei REPAnQing2HeFei REPLICATION FAULT 2019-09-06 14:32:37.367312 2019-09-06 14:32:38.102332

4 REP_GRP_AnQing2HeFei REPAnQing2HeFei REPLICATION FAULT 2019-09-06 14:33:37.380201 2019-09-06 14:34:38.238927

5 REP_GRP_AnQing2HeFei HeFei INSTANCE SYS FAULT 2019-09-06 14:33:37.380201 2019-09-06 14:34:38.238927

6 REP_GRP_AnQing2HeFei REPAnQing2HeFei REPLICATION FAULT 2019-09-06 14:38:37.626817 2019-09-06 14:39:38.410274

7 REP_GRP_AnQing2HeFei HeFei INSTANCE SYS FAULT 2019-09-06 14:38:37.626817 2019-09-06 14:39:38.410274

8 REP_GRP_AnQing2HeFei REPAnQing2HeFei REPLICATION FAULT 2019-09-06 14:40:37.727185 2019-09-06 14:41:38.466104

9 REP_GRP_AnQing2HeFei HeFei INSTANCE SYS FAULT 2019-09-06 14:40:37.727185 2019-09-06 14:41:38.466104

10 REP_GRP_AnQing2HeFei REPAnQing2HeFei REPLICATION FAULT 2019-09-06 14:45:38.095558 2019-09-06 14:46:38.879511

11 REP_GRP_AnQing2HeFei HeFei INSTANCE SYS FAULT 2019-09-06 14:45:38.095558 2019-09-06 14:46:38.879511

12 REP_GRP_AnQing2HeFei REPAnQing2HeFei REPLICATION FAULT 2019-09-06 14:47:38.140739 2019-09-06 14:48:38.160495

13 REP_GRP_AnQing2HeFei HeFei INSTANCE SYS FAULT 2019-09-06 14:47:38.140739 2019-09-06 14:48:38.158135

14 REP_GRP_AnQing2HeFei REPAnQing2HeFei REPLICATION FAULT 2019-09-06 14:49:38.174090 NULL

15 REP_GRP_AnQing2HeFei HeFei INSTANCE SYS FAULT 2019-09-06 14:49:38.174090 NULL

15 rows got

used time: 0.652(ms). Execute id is 912.

SQL>

所以根据测试结果,得出的结论是:

1)数据库级的数据复制支持DDL.

2)数据库的数据复制对创建用户的操作处理异常,会导致从库奔溃。https://www.cndba.cn/Dave/article/3655https://www.cndba.cn/Dave/article/3655

但鉴于目前DM 官方文档也没有更多的说明。 仅测试到此。记录一下。

版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值