实时同步 本节主要介绍实时同步 DRS支持直接同步不同schema的表到同一个schema吗 DRS支持直接同步不同schema的表到同一个schema,表不可以冲突。 DRS实时同步支持使用Online DDL工具吗 DRS MySQL到MySQL的表级增量同步支持使用Online DDL工具进行加减列的操作,需注意以下几点: 因为DRS同步机制和工具的冲突,在同步任务的“设置同步”页面,选择对象同步范围时,不能勾选“增量DDL”项。 使用Online DDL工具进行加列操作时,需先在目标库执行,然后在源库执行。 使用Online DDL工具进行减列操作时,需先在源库执行,再在目标库执行。 常见Online DDL工具: ptonlineschemachange ghost 源库Oracle为RAC集群时,为什么建议使用SCAN IP连接 源库Oracle为RAC集群时,建议使用SCAN IP+ SERVICENAMES方式创建任务,因为SCAN IP具有更强的容错性,更好的负载能力,更快的同步体验。 如果需要使用SCAN IP,需要保证SCAN IP与源库的所有VIP互通,否则无法通过测试连接检查。 若不使用SCAN IP,可以使用某一节点的VIP,其他节点异常不影响同步。 关于SCAN IP的说明,可参考Oracle官网文档。 源库Oracle补全日志检查方法 Oracle数据库在Physical Standby模式下,日志会从主库直接复制,而自身不产生任何日志。针对Oracle为源的增量同步链路,DRS需要用户提前手动在主库检查补全日志是否符合要求,以保证任务的正常运行。以下检查和设置方法中, 表级:针对指定表的设置。 库级:指整个数据库级别的设置。 PK/UI:每一行日志中除了记录变更的列以外,还额外记录了该行中主键和唯一键的值。 ALL:每一行日志中记录了该行所有列的值。 以下三项检查,满足其中一项即可符合DRS增量同步的基本要求。 表级补全日志PK/UI检查(最低要求) 针对用户选择的待同步的表级对象,检查补全日志是否满足要求。 步骤 1 在源库中执行以下sql语句。 select from ALLLOGGROUPS where (LOGGROUPTYPE'UNIQUE KEY LOGGING' or LOGGROUPTYPE'PRIMARY KEY LOGGING') and OWNER'大写SCHEMA名' and TABLENAME'大写表名'; 该表名在查询结果中能同时对应到LOGGROUPTYPE值为UNIQUE KEY LOGGING和PRIMARY KEY LOGGING的两条记录,即可满足DRS增量同步要求。 步骤 1 如果不满足要求,可执行以下sql语句开启表级PK/UI级别补全日志。 alter database add supplemental log data; alter table SCHEMA名.表名add supplemental log data(primary key,unique) columns; 表级补全日志ALL检查 针对用户选择的待同步的表级对象,检查补全日志是否满足要求。 步骤 2 在源库中执行以下sql语句。 select from ALLLOGGROUPS where LOGGROUPTYPE'ALL COLUMN LOGGING' and OWNER'大写SCHEMA名' and TABLENAME'大写表名'; 该表名在查询结果中有记录,即可满足DRS增量同步要求。 步骤 2 如果不满足要求,可执行以下sql语句开启表级ALL级别补全日志。 alter database add supplemental log data; alter table SCHEMA名.表名add supplemental log data(all) columns; 库级补全日志检查 针对待同步的库级对象,检查补全日志是否满足要求。 步骤 3 在源库执行以下sql语句。 select SUPPLEMENTALLOGDATAMIN MIN, SUPPLEMENTALLOGDATAPK PK, SUPPLEMENTALLOGDATAUI UI, SUPPLEMENTALLOGDATAALL ALLLOG from v$database; 步骤 3 满足以下其中一项要求即可。 PK和UI同时为YES,即可满足DRS增量同步要求。 如果不满足要求,可执行以下sql语句开启库级PK/UI级别补全日志。 alter database add supplemental log data(primary key, unique) columns; ALLLOG为YES,即可满足DRS增量同步要求。 如果不满足要求,可执行以下sql语句开启库级ALL级别补全日志。 alter database add supplemental log data(all) columns;