签到成功

知道了

CNDBA社区CNDBA社区

DM7 达梦数据库 数据复制概念 及 配置存储过程 说明

2019-09-06 00:05 3836 0 转载 DM 达梦
作者: dave

1 数据复制概述

  达梦数据复制(DATA REPLICATION)是一个分担系统访问压力、加快异地访问响应速度、提高数据可靠性的解决方案。将一个数据库实例上的数据变更复制到另外的数据库实例。可以用于解决大、中型应用中出现的因来自不同地域、不同部门、不同类型的数据访问请求导致数据库数据库超负荷运行、网络阻塞、远程用户的数据响应迟缓的问题。

1.1 相关概念

1)主数据库:发起复制操作的数据库,称为主数据库。
2)从数据库:接收主数据库发送的数据并进行复制的数据库,称为从数据库。
3)复制节点:涉及到复制的数据库,主服务和从服务的统称。一个节点既可以是主数据库也可以是从数据库。
4)复制数据库(RPS):在数据复制环境中,负责配置复制环境,定义复制关系的数据库。RPS 有且仅有一台,它只负责配置和监控,并不参与到复制过程中。
5)复制关系:复制关系指明主数据库和从数据库以何种方式进行复制。按照复制的方式,复制关系分为同步复制和异步复制。
6)同步复制关系:主数据库数据更新立即复制到从数据库。
7)异步复制关系:主数据库和从数据库在某段时间内数据可能是不同的,主数据库数据更新不会立刻同步到从数据库,而是在经过一段时间后才进行复制。异步复制的同步时机由指定的定时器确定。
8)逻辑日志:记录产生数据变化的逻辑操作的日志。记录的逻辑操作包括INSERT、UPDATE、DELETE、TRUNCATE、ROLLBACK 和 COMMIT。
9)复制源对象:主数据库上作为复制数据源的对象,可以是库、模式或表。在该对象上的操作都会被记录成逻辑日志,发送给从数据库进行复制操作。
10)复制目标对象:从数据库上作为复制数据目标的对象。从数据库接收到逻辑日志后,将复制源对象的变化复制到复制目标对象中。
11)复制对象映射:一对复制源对象和复制目标对象构成一个复制对象映射。构成映射的源对象和目标对象必须是同一类型的对象。根据对象的类型,复制映射分为库级、模式级和表级三个级别。其中表级要求源表和目标表结构完全一致,库级和模式级没有要求。库级和模式级复制映射会将其 DDL 也进行复制。复制映射包括只读模式和非只读模式。对于只读模式的映射,映射的目的表禁止用户更新。
12)复制组:一组逻辑相关的复制关系可以构造成为复制组。通过复制组,可以构造出一对多复制、多对一复制、级联复制、对称复制、循环复制等复杂的逻辑复制环境。

1.2 体系构架

数据复制系统由以下部件构成:http://www.cndba.cn/cndba/dave/article/3648http://www.cndba.cn/cndba/dave/article/3648http://www.cndba.cn/cndba/dave/article/3648

  1. 复制数据库;
  2. 复制节点;
  3. 各实例站点间通讯的 MAL 系统。

除了系统管理员通过复制数据库定义复制和处理异常外,其他部分的处理及主从数据库之间复制操作对于用户是透明的。整个复制环境的配置境况如下图所示。

  在整个环境中有且仅有一台复制数据库(RPS),用户通过 RPS 定义复制及复制环境,但 RPS 并不参与到复制过程中。
  DM7 中,将复制逻辑日志按照配置归档到本站点指定目录称为本地归档,将日志的发送称为日志的远程归档。
  复制节点上,与复制相关的配置文件有 dmtimer.ini、dmllog.ini、dmrep.ini。

各个配置文件在复制中的功能如下表所示。

名称 简介 有效节点 功能
dmtimer.ini 定时器配置文件 主数据库 记录异步复制的定时器信息
dmllog.ini 逻辑日志配置文件 主数据库 记录复制源对象及其逻辑日志相关的信息(包括逻辑本地归档信息和远程归档信息)
dmrep.ini 复制信息配置文件 主数据库、从数据库 主数据库上记录复制相关逻辑日志的编号;从数据库上记录复制关系的主数据库信息以及复制对象映射的信息

这些文件均是 RPS 依据用户配置通过 MAL 系统自动生成或修改的,管理员不需要手动进行管理。

在数据复制过程中,除了配置文件,其他的重要文件如下表。 http://www.cndba.cn/cndba/dave/article/3648

名称 有效节点 功能
逻辑日志文件 主数据库 在数据文件夹内的 llog_01.log 和 llog_02.log 两个文件,记录在执行过程中所有的逻辑日志。
逻辑日志归档文件 主数据库 根据配置,生成在指定的逻辑日志归档路径中,名称为llog生成时间.log,是特定逻辑日志下所有记录的本地归档文件,也是发送给复制从数据库的数据来源
复制数据文件 从数据库 在数据文件夹下的 repx(x为复制关系的id)下,以 repx_y.rep(x,y为该文件内记录的编号)为文件名,是从数据库接收到复制数据之后的临时缓存文件,也是复制执行的依据。

  这些文件都是流式文件,主数据库在执行过程中,逻辑日志先记录到逻辑日志文件中,并根据配置的信息,将逻辑日志分别分发归档到不同的逻辑日志归档文件中,并在恰当的时机将逻辑日志归档文件的内容发送给从数据库。

http://www.cndba.cn/cndba/dave/article/3648

  从数据库接收到一批数据就产生一个复制数据文件将数据存储其中,防止从数据库复制速度低导致复制数据的丢失。
逻辑日志文件大小限制为 32M,两个文件交替使用。

http://www.cndba.cn/cndba/dave/article/3648
http://www.cndba.cn/cndba/dave/article/3648http://www.cndba.cn/cndba/dave/article/3648

  归档路径内每个逻辑日志归档文件大小限制为 32M,文件写满后增加新文件来存放新的记录。在 dmllog.ini 中有配置归档路径内所有文件总的空间限制,若达到限制的空间,则会删除之前的文件;若配置为无空间限制,则管理员可根据复制情况进行删除。复制数据文件是从数据库一次接收的复制数据的临时文件,其大小不会超过 32K;在其数据复制结束后会被自动删除。

http://www.cndba.cn/cndba/dave/article/3648

2 数据复制配置存储过程

在数据配置过程中涉及到的18个存储过程如下。 http://www.cndba.cn/cndba/dave/article/3648

2.1 SP_INIT_REP_SYS*

定义:
SP_INIT_REP_SYS(
CREATE_FLAG INT
);

功能说明:创建或删除数据复制所需的系统表

参数说明:CREATE_FLAG:为 1 表示创建复制所需系统表;为 0 表示删除这些系统表

返回值:无

举例说明:创建复制所需的系统表
SP_INIT_REP_SYS(1);

2.2 SP_RPS_ADD_GROUP

定义:
SP_RPS_ADD_GROUP(
GROUP_NAME VARCHAR(128),
GROUP_DESC VARCHAR(1000)
);

功能说明:创建复制组

参数说明:
GROUP_NAME:创建的复制组名称
GROUP_DESC:复制组描述

返回值:无
备注:指示 RPS 创建一个新的复制组。如果已存在同名复制组则报错。

举例说明:创建复制组 REP_GRP_B2C
SP_RPS_ADD_GROUP('REP_GRP_B2C','主从同步复制');

2.3 SP_RPS_DROP_GROUP

定义:
SP_RPS_DROP_GROUP(
GROUP_NAME VARCHAR(128)
);

功能说明:删除复制组
参数说明:GROUP_NAME:复制组名称
返回值:无

举例说明:删除复制组 REP_GRP_B2C
SP_RPS_DROP_GROUP ('REP_GRP_B2C');

2.4 SP_RPS_ADD_REPLICATION

定义:
SP_RPS_ADD_REPLICATION(
GRP_NAME VARCHAR(128),
REP_NAME VARCHAR(128),
REP_DESC VARCHAR(1000),
MINSTANCE VARCHAR(128),
SINSTANCE VARCHAR(128),
REP_TIMER VARCHAR(128),
ARCH_PATH VARCHAR(256)
);
功能说明:创建复制关系

参数说明:
GRP_NAME:复制组名
REP_NAME:复制名,必须在 RPS 上唯一
REP_DESC:复制描述
MINSTANCE:主节点实例名,必须在 RPS 的 MAL 中已配置
SINSTANCE:从节点实例名,必须在 RPS 的 MAL 中已配置
REP_TIMER:复制定时器名。借助定时器,可以设置复制数据的同步时机。如果是同步复制则为 NULL
ARCH_PATH:主服务器上逻辑日志的完整归档路径。

返回值:无

举例说明:创建复制关系
SP_RPS_ADD_REPLICATION ('REP_GRP_B2C', 'REPB2C', 'B 到 C 的同步复制', 'B', 'C', NULL, '{ DEFARCHPATH}/REPB2C');

2.5 SP_RPS_DROP_REPLICATION

定义:
SP_RPS_DROP_REPLICATION (
REP_NAME VARCHAR(128)
);
功能说明:删除复制关系

参数说明:REP_NAME:复制名称
返回值:无

举例说明:删除复制关系
SP_RPS_DROP_REPLICATION ('REPB2C');

2.6 SP_RPS_SET_ROUTE_FAULT_TIMEOUT

定义:
SP_RPS_SET_ROUTE_FAULT_TIMEOUT (
REP_NAME VARCHAR(128),
TIMEOUTS INT
);
功能说明:设置复制路径故障超时
参数说明:
REP_NAME:复制关系名。
TIMEOUTS:故障超时值,以秒为单位。0 为立即超时;-1 表示无超时限制

返回值:无
备注:该接口用于设置复制路径故障处理策略。设置后,RPS 如检测到复制路径产生故障,且故障持续超过设定的超时值后,则需要取消故障的复制关系。

举例说明:设置复制路径故障超时
SP_RPS_SET_ROUTE_FAULT_TIMEOUT ('REPB2C',10);

2.7 SP_RPS_SET_INST_FAULT_TIMEOUT

定义:
SP_RPS_SET_INST_FAULT_TIMEOUT (
INST_NAME VARCHAR(128),
TIMEOUTS INT
);
功能说明:设置复制节点故障超时

参数说明:
INST_NAME:复制节点实例名
TIMEOUTS:故障超时值,以秒为单位。0 为立即超时;-1 表示无超时限制

返回值:无

举例说明:设置复制节点故障超时
SP_RPS_SET_INST_FAULT_TIMEOUT ('B',10);

2.8 SP_RPS_ADD_TIMER

定义:
SP_RPS_ADD_TIMER(
TIMER_NAME VARCHAR(128),
TIMER_DESC VARCHAR(1000),
TYPE$ INT,
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 INT
);
功能说明:设置复制关系的定时器

参数说明:
TIMER_NAME:定时器名
TIMER_DESC:定时器描述
TYPE$:定时器类型,取值如下:
1:执行一次
2:每日执行
3:每周执行
4:按月执行的第几天
5:按月执行的第一周
6:按月执行的第二周
7:按月执行的第三周
8:按月执行的第四周
9:按月执行的最后一周
FREQ_INTERVAL:间隔的月/周(调度类型决定)数
FREQ_SUB_INTERVAL: 间隔天数
FREQ_MINUTE_INTERVAL:间隔的分钟数
START_TIME:开始时间
END_TIME:结束时间
DURING_START_DATE:有效日期时间段的开始日期时间
DURING_END_DATE:有效日期时间段结束日期时间
NO_END_DATA_FLAG:结束日期是否无效标识,0 表示结束日期有效,1 表示无效

本过程的 TYPE$ 、 FERQ_INTERVAL 、 FREQ_SUB_INTERVAL 、FREQ_MINUTE_INTERVAL、START_TIME、END_TIME、DURING_START_DATE、DURING_END_DATE 和 NO_END_DATA_FLAG 分别与过程 SP_ADD_TIMER 的参数TYPE 、 FREQ_MONTH_WEEK_INTERVAL 、 FREQ_SUB_INTERVAL 、FREQ_MINUTE_INTERVAL、START_TIME、END_TIME、DURING_START_DATE、DURING_END_DATE 和 NO_END_DATE_FLAG 对应,其具体说明可参考过程SP_ADD_TIMER 的说明。

返回值:无

举例说明:设置复制关系的定时器
SP_RPS_ADD_TIMER ('TIMER1','按天计算', 1, 1, 0, 1, CURTIME, '23:59:59', NOW, NULL, 1);

2.9 SP_RPS_REP_RESET_TIMER

定义:
SP_RPS_REP_RESET_TIMER(
REP_NAME VARCHAR(128),
TIMER_NAME VARCHAR(128)
);
功能说明:重新设置复制关系的定时器

参数说明:
REP_NAME:复制名
TIMER_NAME:新的定时器名

返回值:无

举例说明:重新设置复制关系的定时器
SP_RPS_REP_RESET_TIMER ('REPB2C', 'TIMER1');

2.10 SP_RPS_ADD_TAB_MAP

定义:
SP_RPS_ADD_TAB_MAP(
REP_NAME VARCHAR(128),
MTAB_SCHEMA VARCHAR(128),
MTAB_NAME VARCHAR(128),
STAB_SCHEMA VARCHAR(128),
STAB_NAME VARCHAR(128),
READ_ONLY_MODE INT
);
功能说明:添加表级复制映射

参数说明:
REP_NAME:复制关系名
MTAB_SCHEMA:主表模式名
MTAB_NAME:主表名
STAB_SCHEMA:从表模式名
STAB_NAME:从表名
READ_ONLY_MODE:只读复制模式,1 表示只读模式,从表只接受复制更新, 0 表示非只读模式

返回值:无
举例说明:添加复制映射
SP_RPS_ADD_TAB_MAP('REPB2C', 'USER1', 'T1', 'USER2', 'T2', 0);
`

2.11 SP_RPS_DROP_TAB_MAP

定义:
SP_RPS_DROP_TAB_MAP(
REP_NAME VARCHAR(128),
MTAB_SCHEMA VARCHAR(128),
MTAB_NAME VARCHAR(128),
STAB_SCHEMA VARCHAR(128),
STAB_NAME VARCHAR(128),
);
功能说明:删除表级复制映射

参数说明:
REP_NAME:复制关系名
MTAB_SCHEMA:主表模式名
MTAB_NAME:主表名
STAB_SCHEMA:从表模式名
STAB_NAME:从表名

返回值:无

举例说明:删除表级复制映射
SP_RPS_DROP_TAB_MAP('REPB2C', 'USER1', 'T1', 'USER2', 'T2');

2.12 SP_RPS_ADD_SCH_MAP

定义:
SP_RPS_ADD_SCH_MAP(
REP_NAME VARCHAR(128),
MSCH VARCHAR(128),
SSCH VARCHAR(128),
READ_ONLY_MODE INT
);
功能说明:添加模式级复制映射

参数说明:
REP_NAME:复制关系名
MSCH:主模式名
SSCH: 从表模式名
READ_ONLY_MODE:只读复制模式,1 表示只读模式,从表只接受复制更新,0 表示非只读模式

返回值:无
举例说明:添加复制映射
SP_RPS_ADD_SCH_MAP('REPB2C', 'USER1', 'USER2', 0);

2.13 SP_RPS_DROP_SCH_MAP

定义:
SP_RPS_DROP_SCH_MAP(
REP_NAME VARCHAR(128),
MSCH VARCHAR(128),
SSCH VARCHAR(128)
);
功能说明:删除模式级复制映射

参数说明:
REP_NAME:复制关系名
MSCH:主模式名
SSCH:从模式名

返回值:无
举例说明:删除模式级复制映射
SP_RPS_DROP_SCH_MAP('REPB2C', 'USER1', 'USER2');

2.14 SP_RPS_ADD_DB_MAP

定义:
SP_RPS_ADD_DB_MAP(
REP_NAME VARCHAR(128),
READ_ONLY_MODE INT
);
功能说明:添加库级复制映射

参数说明:
REP_NAME:复制关系名
READ_ONLY_MODE:只读复制模式,1 表示只读模式,从表只接受复制更新,0 表示非只读模式

返回值:无
举例说明:添加库级复制映射
SP_RPS_ADD_DB_MAP('REPB2C', 0);

2.15 SP_RPS_DROP_DB_MAP

定义:
SP_RPS_DROP_DB_MAP(
REP_NAME VARCHAR(128)
);
功能说明:删除库级复制映射
参数说明:REP_NAME:复制关系名

返回值:无
举例说明:删除库级复制映射
SP_RPS_DROP_DB_MAP('REPB2C');

2.16 SP_RPS_SET_BEGIN

定义:
SP_RPS_SET_BEGIN(
GRP_NAME VARCHAR(128),
);
功能说明:开始复制设置
参数说明:GRP_NAME:复制组名
返回值:无
备注:开始对指定复制组进行属性设置。创建/删除复制关系与创建/删除复制映射等接口都必须在此接口调用后执行,否则会报错“错误的复制设置序列”。同一会话中也不能同时开始多个复制设置。

举例说明:复制组 REPB2C 开始复制
SP_RPS_SET_BEGIN(' REP_GRP_B2C');

2.17 SP_RPS_SET_APPLY

定义:
SP_RPS_SET_APPLY ();

功能说明:提交复制设置,保存并提交本次设置的所有操作。如果需要继续设置,则必须重新调用 SP_RPS_SET_BEGIN
参数说明:无
返回值:无

举例说明:提交复制设置
SP_RPS_SET_APPLY ();

2.18 SP_RPS_SET_CANCEL

定义:
SP_RPS_SET_CANCEL ();

功能说明:放弃复制设置,放弃本次设置的所有操作。如果需要重新设置,则必须再次调用 SP_RPS_SET_BEGIN
参数说明:无
返回值:无

举例说明:放弃复制设置
SP_RPS_SET_CANCEL();
用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
dave

dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 2297
    原创
  • 3
    翻译
  • 680
    转载
  • 200
    评论
  • 访问:10147871次
  • 积分:4578
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ