达梦数据复制配置

达梦数据复制配置,全部参照官方文档。

  1. DM数据复制(data replication)是一个分担系统访问压力、加快异地访问响应速度、提高数据可靠性的解决方案。将一个服务器实例上的数据变更复制到另外的服务器实例。可以用于解决大中型应用中出现的因来自不同地域、不同部门、不同类型的数据访问请求导致数据库服务器超负荷运行、网络阻塞、远程用户的数据响应迟缓的问题。
  2. 发起复制操作的服务器称为主服务器;接收主服务器发送的数据并进行复制的服务器称为从服务器;复制节点是指涉及到复制的服务器,是主服务器和从服务器的统称,一个节点既可以是主服务器也可以是从服务器;在数据复制环境中,负责配置复制环境,定义复制关系的服务器称为复制服务器(RPS),RPS有且仅有一台,它只负责配置和监控,并不参与到复制过程中。
  3. 复制关系指明主服务器和从服务器以何种方式进行复制,按照复制的方式可以分为同步复制和异步复制。同步复制关系指主服务器数据更新立即复制到从服务器;异步复制关系中,主服务器和从服务器在某段时间内数据可能是不同的,主服务器数据更新不会立刻同步到从服务器,而是在经过一段时间后才进行复制,异步复制的同步时机由指定的定时器决定。
  4. 逻辑日志是指记录产生数据变化的逻辑操作的日志。记录的逻辑操作包括INSERT、UPDATE、DELETE、TRUNCATE、ROLLBACK和COMMIT(应该还不止,如果复制源对象是模式或者库的话,建表、删表这些应该都会记录吧)。
  5. 复制源对象是指主服务器上作为复制源的对象,可以是库、模式或表,在该对象上的操作都会被记录成逻辑日志,发送给从服务器进行复制操作;复制目标对象是指从服务器上作为复制数据目标的对象,从服务器接收到逻辑日志后,将复制源对象的变化复制到复制目标对象中;一对复制源对象和复制目标对象构成一个复制对象映射,构成映射的源对象和目标对象必须是同一类型的对象,根据对象的类型,复制映射分为库级、模式级和表级三个级别,其中表级要求源表和目标表结构完全一致,库级和模式级没有要求,库级和模式级复制映射会将其DDL也进行复制(那表级复制映射,DDL不会同步吗?测试了,对复制表进行DDL操作时会报错“试图操作涉及复制的表”),复制映射包括只读模式和非只读模式,对于只读模式的映射,映射的目的表禁止用户更新;一组逻辑相关的复制关系可以构造成为复制组,通过复制组,可以构造出一对多复制、多对一复制、级联复制、对称复制、循环复制等复杂的逻辑复制环境。
  6. DM中,将复制逻辑日志按照配置归档到本站点指定目录称为本地归档,将日志的发送称为日志的远程归档。复制节点上,与复制相关的配置文件有dmtimer.ini(记录异步复制的定时器信息,只存在于主服务器上)、dmllog.ini(记录复制源对象及其逻辑日志的相关信息,包括逻辑本地归档信息和远程归档信息,只存在于主服务器上)、dmrep.ini(主服务器上记录复制相关逻辑日志的编号,从服务器上记录复制关系的主服务器信息以及复制对象映射的信息)。
  7. 在数据复制过程中,除了配置文件,还有一些其它文件,如逻辑日志文件(位于主服务器,在数据文件夹内的llog_01.log和llog_02.log两个文件,记录在执行过程中所有的逻辑日志)、逻辑日志归档文件(位于主服务器,根据配置,生成在指定的逻辑日志归档路径中,名称为llog生成时间.log,是特定逻辑日志下所有记录的本地归档文件,也是发送给复制从服务器的数据来源)、复制数据文件(位于从服务器,在数据文件夹下的repx下,x表示复制关系的id,以repx_y.rep为文件名,y为该文件内记录的编号,是从服务器收到复制数据后的临时缓存文件,也是复制执行的依据),这些文件都是流式文件,主服务器在执行过程中,逻辑日志先记录到逻辑日志文件中,并根据配置的信息,将逻辑日志分发归档到不同的逻辑日志归档文件中,并在恰当的时机将逻辑日志归档文件的内容发送给从服务器。从服务器接收到一批数据就产生一个复制数据文件将数据存储其中,防止从服务器复制速度过低导致复制数据的丢失。逻辑日志文件大小限制为32M,两个文件交替使用。
  8. 配置数据复制在RPS上进行,在配置数据复制之前,需要保证复制服务器和所有待配置节点的实例名各不相同,配置好其MAL系统并保证网络环境正常。按照复制组、复制关系、复制表映射的顺序配置复制环境。
  9. 复制配置实例
    1. 初始化3个实例,分别为A(复制服务器)、B(复制主服务器)、C(复制从服务器),3个实例配置在同一个mal系统中;
    2. 复制服务器初始化,通过执行系统函数SP_INIT_REP_SYS(CREATE_FLAG)来初始化复制服务器,其主要作用是创建复制用户(SYSREP/SYSREP)和复制服务器上需要的系统表。create_flag为1时表示创建用户和系统表,为0时表示删除用户和系统表。生成的系统表有(RPS_CONFILCTS用来记录数据冲突,比如在多对一复制关系中、RPS_FAULT_HISTORY、RPS_GROUPS、RPS_INTANCES、RPS_REPLICATIONS、RPS_TABMAPS、RPS_TIMERS);
    3. 登陆复制服务器,开始复制配置
      • 创建复制组:SP_RPS_ADD_GROUP(‘REP_GRP_B2C’,’主从同步复制’);执行了这一句之后在SYSREP.RPS_GROUPS表下可以查到一条新纪录。
      • 开始设置:SP_RPS_SET_BEGIN(‘REP_GRP_B2C);
      • 添加复制关系:SP_RPS_ADD_REPLICATION(‘REP_GRP_B2C’,’REPB2C’,’B到C的同步复制’,’B’,’C’,NULL,’/opt/dameng/data’);这个会在SYSREP.RPS_REPLICATIONS中新加一个复制关系记录,并且在SYSREP.RPS_INSTANCES中新增B和C两个实例,但由于还没提交配置,所以执行完这一句还看不到,要执行完步骤5才行
      • 添加复制映射:SP_RPS_ADD_TAB_MAP(‘REPB2C’,’USER1’,’T1’,’USER2’,’T2’,0);这一步需要指定的源表和目标表都存在,执行完这一句会在SYSREP.RPS_TABMAPS表中新增一条记录,但由于还没提交配置,所以执行完这一句还看不到,要执行完步骤5才行。其中最后一个参数表示是否以只读方式复制,0表示非只读,1表示只读。
      • 提交设置:SP_RPS_SET_APPLY();
  10. 以上的例子只是一个最简单的复制环境,复制的配置灵活,在同一个复制组内,一个主服务器可以有多个从服务器,一个复制节点可以既是主服务器又是从服务器。管理员可以根据需要配置出对称、一对多、多对一、级联、循环的复制环境。
  11. 在配置过程中或配置完成后,可以对复制的配置进行修改,修改报错复制组、复制关系、复制对象的删除和复制关系属性的修改。这些修改操作都必须在开始复制SP_RPS_SET_BEGIN()和提交复制SP_RPS_SET_APPLY()之间进行。若要删除复制组,则该复制组不能处于配置阶段,即该组的配置已经提交或取消。
  12. 删除表复制映射:SP_RPS_DROP_TAB_MAP(‘复制关系名’,’主模式名’,’主表名’,’从模式名’,’从表名’);
  13. 添加一个定时器,将同步复制修改为异步复制:SP_RPS_ADD_TIMER(‘定时器名称’,’’,1,0,0,0,’19:00:00’,NULL,’2019-11-28 19:00:00’,NULL,1);
  14. 修改复制的错误超时时间:SP_RPS_SET_ROUTE_FAULT_TIMEOUT(‘复制关系名’,60);
  15. 删除复制关系:SP_RPS_DROP_REPLICATION(‘复制关系名’);
  16. 删除整个复制组:SP_RPS_DROP_GROUP(‘复制组名’);
  17. 取消配置操作:SP_RPS_SET_CANCEL();
  18. 添加模式级复制映射:SP_RPS_ADD_SCH_MAP(‘复制关系名’,’主模式名’,’从模式名’,0);
  19. 添加库级复制映射:SP_RPS_ADD_DB_MAP(‘复制关系名’,0);
  20. 更多功能参见SQL手册的系统存储过程和函数章节的数据复制管理部分。
  21. 配置完成后,复制服务器RPS虽然不参与复制的具体执行,但在复制过程中,还是建议保持RPS的运行来对复制进行监控。可以在SYSREP.RPS_INSTANCES和SYSREP.RPS_REPLICATIONS中获取复制关系、复制节点的状态。复制的监视按复制组为单位进行,RPS每隔1分钟轮询探查所有的复制组,在每个复制组内,依次探查各个复制节点,要求其返回复制节点本身的状态和其所涉及的复制的状态。若复制节点或复制关系发生异常,这些异常都会记录在SYSREP.RPS_FAULT_HISTORY表中,若其END_TIME字段为NULL,表示该故障还没有结束。

你可能感兴趣的:(达梦数据库)