数据库的复制技术,提供了一种机制,使对某一个站点上数据的修改操作能够传递到其他站点,从而保证站点间数据的一致性。
复制:将数据库中的数据拷贝到另外一个或多个不同的物理站点上,从而保持源数据库与目标数据库中指定数据的一致性。
复制的方法
1. 同步复制
复制数据在任何时间在任何复制节点均保持一致。如果复制环境中的任何一个节点的复制数据发生了更新操作,这种变化会立刻反映到其他所有的复制节点。这种技术适用于那些对于实时性要求较高的商业应用中。
2. 异步复制
所有复制节点的数据在一定时间内是不同步的。如果复制环境中的其中的一个节点的复制数据发生了更新操作,这种改变将在不同的事务中被传播和应用到其他所有复制节点。这些不同的事务间可以间隔几秒,几分种,几小时,也可以是几天之后。复制节点之间的数据临时是不同步的,但传播最终将保证所有复制节点间的数据一致。
复制的对象
DM6支持以下对象的复制:
站点:将数据服务器看做一个站点,对其下所有数据库中的表对象进行复制;
数据库:仅对某一个数据库中的表对象进行复制;
模式:仅对某一个数据库中的某一个模式中的表对象进行复制;
表:仅对某一个表对象进行复制;
复制方式
DM6支持如下的复制方式:
一对一单向复制:单一数据对象到单一数据对象的复制过程。
例如:数据库服务器A中的对象向数据库服务器B中的对象进行复制的过程;
一对多单向复制:单一数据对象到多个数据对象的复制过程。
例如:数据库服务器A中的对象同时向数据库服务器B、C、D(甚至更多数据库服务器)中的对象进行复制的过程;
多对一单向复制:多个数据对象到单一数据对象的复制过程。
例如:数据库服务器A、B、C(甚至更多数据库服务器)中的对象同时向数据库服务器Z中的对象进行的复制过程;
级联复制:多个复制过程之间形成不交叉的复制链路的复制过程。
例如:数据库服务器A中的对象向数据库服务器B中的对象进行复制,数据库服务器B中的对象又向数据库服务器C中的对象进行复制,数据库服务器C中的对象又向数据库服务器D中的对象进行复制,依次链接下去,形成一个复制的链路。
多主多从复制:多个服务器数据对象向多个服务器对象进行复制的过程。
例如:数据库服务器A中的对象同时向数据库服务器X、Y、Z中的对象进行复制;数据库服务器B中对象同时向数据库服务器X、Z中的对象进行复制;数据库服务器C中对象同时向数据库服务器Y、Z中的对象进行复制的过程。该过程有多个复制的起点,同时存在多个复制的终点,形成多个主服务器(复制的起点)和多个从服务器(复制的终点)的复制过程。
环形复制:一种特殊的级联复制。最终形成的复制链路是一个环形的复制过程。
例如:数据库服务器A中的对象向数据库服务器B中的对象进行复制,数据库服务器B中对象又向数据库服务器A中的对象进行复制,这样就形成了一个最小的环形复制链路。
对称复制:在数据库服务器A、B之间进行复制的过程,是一种最小的环形复制过程。
约束条件
1. 只复制包含CLUSTER PK约束的表数据。
2. 复制关系的主表和从表必须分布在不同的服务器上。
3. 从服务器的PAGE SIZE必须大于等于主服务器的PAGE SIZE
DM6复制实现
下面通过实例介绍一对一表级同步复制的实现。
约定:
SERVER1:数据库服务器1,IP为223.254.102.27;
SERVER2:数据库服务器2,IP为223.254.100.63;
1.参数配置
在启动数据库服务器前,先修改服务器SERVER1上设置dm.ini参数,使REPLICATE_MODE = 1,然后启动主、从数据库服务器。
2.对象建立
复制表对象的建立:
以SYSDBA/SYSDBA登录SERVER1执行:
CREATE TABLE TABLE01_S1 (C1 INT CLUSTER PRIMARY KEY,C2 VARCHAR(100)); |
以SYSDBA/SYSDBA登录SERVER2执行:
CREATE TABLE TABLE01_S2 (C1 INT CLUSTER PRIMARY KEY,C2 VARCHAR(100)); |
建立同步复制关系
以SYSDBA/SYSDBA登录SERVER1执行:
CALL SP_CREATE_REPLICATE_LOGIN(‘223.254.100.63′,12345,’SYSDBA’,’SYSDBA’); CALL SP_CREATE_TABLE_REPLICATE(‘SYSTEM.SYSDBA.TABLE01_S1′,’SYSTEM.SYSDBA.TABLE01_S2′,’223.254.100.63′,’SYNC’); |
通过调用以上两个函数,来建立主数据库服务器对象SYSTEM.SYSDBA.TABLE01_S1向从数据库服务器对象SYSTEM.SYSDBA.TABLE01_S2进行复制的关系,只有在建立该复制关系后,在主数据库服务器对象上的操作才会被复制到从数据库服务器的对象上。
系统函数SP_CREATE_REPLICATE_LOGIN,用来建立复制过程中登录从服务器的登录信息。其参数分别表示:
s_server: 从服务器名或IP地址;
s_port: 从服务器端口号;
s_login: 从服务器登录名;
s_password: 从服务器登录口令;
系统函数SP_CREATE_TABLE_REPLICATE,用来建立主数据库服务器表对象SYSTEM.SYSDBA.TABLE01_S1向从数据库服务器SYSTEM.SYSDBA.TABLE01_S2进行复制的关系。建立此关系后,在主服务器表对象SYSTEM.SYSDBA.TABLE01_S1才会复制到从服务器表对象SYSTEM.SYSDBA.TABLE01_S2中。其参数分别表示:
m_db_sch_tab: 主服务器表对象名;
s_db_sch_tab: 从服务器表对象名;
s_server: 从服务器名或IP地址;
type: 复制类型(同步复制、异步复制);
3.复制操作
插入操作:
SYSDBA/SYSDBA登录SERVER1执行:
INSERT INTO TABLE01_S1 VALUES (1,’INSERT ONE ROW’); SELECT * FROM TABLE01_S1; |
预期结果:1, INSERT ONE ROW
SYSDBA/SYSDBA登录SERVER2执行:
SELECT * FROM TABLE01_S2; |
预期结果:1, INSERT ONE ROW
更新操作:
SYSDBA/SYSDBA登录SERVER1执行:
UPDATE TABLE01_S1 SET C2=’UPDATE ONE COL’; SELECT * FROM TABLE01_S1; |
预期结果:1, UPDATE ONE COL
SYSDBA/SYSDBA登录SERVER2执行:
SELECT * FROM TABLE01_S2; |
预期结果:1, UPDATE ONE COL
删除操作:
SYSDBA/SYSDBA登录SERVER1执行:
DELETE FROM TABLE01_S1; SELECT * FROM TABLE01_S1; |
预期结果:空;
SYSDBA/SYSDBA登录SERVER2执行:
SELECT * FROM TABLE01_S2; |
预期结果:空;
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
相关推荐
-
达梦数据库携手赛凡科技全面启动战略合作
2015年10月27日,知名国产数据库厂商北京达梦数据库技术有限公司和国内自主创新存储厂商北京赛凡智慧科技有限公司战略合作协议签约仪式在北京举行。
-
深入分析国产数据库在发展中遇到的问题及解决之道(一)
国产数据库厂商,通过市场化运作、在市场的竞争中,也都发展了近10年了,但是在这期间,依然没有能够实现有效的突破,究其原因,我们认为,至少存在如下原因……
-
深入分析国产数据库在发展中遇到的问题及解决之道(三)
本文中的几点分析是从国产数据库厂家的角度出发,看待和分析国产数据库在市场发展中所遇到的问题和解决之道。既有技术层面上的问题……
-
深入分析国产数据库在发展中遇到的问题及解决之道(二)
不可否认的是,与主流数据库产品相比,国产数据库还是存在的一定的技术差距。国外主流产品,经过长年的市场化运作,已经能够主导市场,并推出新的概念……