支持的源和目标数据库
源数据库 | 目标数据库 |
---|---|
RDS for MySQL、 自建 MySQL 5.6部分版本/5.7/8.0 |
RDS for PostgreSQL |
支持的同步对象及SQL
同步对象
- 当前DTS仅支持表级(指定的表对象)同步。
- 数据同步仅针对数据源中的用户数据库,而系统库会被自动过滤。例如:MySQL 类型数据源中的 information_schema、mysql、performance_schema、sys 库不会出现在可同步列表当中。
- 若源库为空库(该库下未创建任何表),不支持作为待同步对象。
增量数据同步支持同步的SQL操作
- DML
- INSERT、UPDATE、DELETE
- DDL
- 增量同步的DDL操作仅支持CREATE INDEX、DROP INDEX、ALTER TABLE、TRUNCATE TABLE 和DROP TABLE,如果是整库同步,支持CREATE TABLE。
注意暂不支持 CREATE TABLE 表名 AS SELECT 语句。
数据库账号及权限
数据库账号及权限如下表:
数据库
所需权限 参考赋权语句 源库
源库为MySQL5.7时:
对MySQL库的SELECT权限。
对待同步库的SELECT,EVENT,TRIGGER权限。
部分全局权限:
REPLICATION CLIENT
REPLICATION SLAVE
SHOW VIEW
PROCESS
如果是整库同步,需要对所有数据库的查询权限。
源库为MySQL8.0时:
对MySQL库的SELECT权限。
对待同步库的SELECT, EXECUTE, EVENT,TRIGGER权限。
部分全局权限:
PROCESS
REPLICATION CLIENT
REPLICATION SLAVE
SHOW VIEW
SHOW_ROUTINE
如果是整库同步,需要对所有数据库的查询权限。
源库为MySQL5.7时:
GRANT SELECT ON mysql.* TO '同步账号'@'%';
GRANT SELECT, EVENT,TRIGGER ON 待同步的库.* TO '同步账号'@'%';
GRANT REPLICATION CLIENT, REPLICATION SLAVE, SHOW VIEW, PROCESS ON *.* TO '同步账号'@'%';
源库为MySQL8.0时:
GRANT SELECT ON mysql.* TO '同步账号'@'%';
GRANT SELECT, EXECUTE, EVENT, TRIGGER ON 待同步的库.* TO '同步账号'@'%';
GRANT PROCESS, REPLICATION SLAVE, REPLICATION CLIENT, SHOW VIEW, SHOW_ROUTINE ON *.* TO '同步账号'@'%';
目标库
schema的创建权限
授予用户user_name在数据库database_name下的schema创建权限:
GRANT CREATE ON DATABASE database_name TO user_name;
注意如果待同步对象包含用户自定义function,则在满足上述权限的基础上,目标端数据库同时需将log_bin_trust_function_creators参数设置为1,参考语句如下:set global log_bin_trust_function_creators = 1;
操作需知
DTS同步过程一般包含四个阶段:预检查阶段、结构同步阶段、全量阶段、增量阶段。为了确保数据同步各个阶段的平顺,在创建同步任务前,请务必阅读以下使用须知。
任务开始前
源库要求
- MySQL源数据库的binlog日志必须打开,且binlog日志格式必须为Row格式。
- 在磁盘空间允许的情况下,建议源数据库binlog保存时间越长越好,建议为3天。
- 源数据库expire_logs_days参数值为0,可能会导致同步失败。
- 增量同步时,必须设置MySQL源数据库的server_id。如果源数据库版本小于或等于MySQL5.6,server_id的取值范围在2-4294967296之间;如果源数据库版本大于或等于MySQL5.7,server_id的取值范围在1-4294967296之间。
- 源数据库GTID状态建议为开启状态,源数据库实例没有开启GTID的情况下DTS不支持主备HA切换,因为DTS任务会因为位点不续接而中断导致无法恢复。
- 目标库若已存在数据,DTS在增量同步过程中源库相同主键的数据将覆盖目标库已存在的数据,因此在同步前需要用户自行判断数据是否需要清除,建议用户在同步前自行清空目标库。
- 目标实例及关联RDS实例的运行状态必须正常,若关联RDS实例是主备实例,复制状态也必须正常。
- 目标库关联RDS实例必须有足够的磁盘空间,建议至少为待同步数据量的2.5倍。(全量数据同步会并发执行 INSERT 操作,导致目标数据库的表产生碎片,因此全量同步完成后目标数据库的表存储空间会比源实例的表存储空间大,且会产生大量的BINLOG,占用大量空间)。
- 目标库关联RDS数据库的字符集必须与源数据库一致。
- 由于DTS不同步USER信息,因此在调用目标库的视图、存储过程和函数时需要对调用者授予读写权限。
- 建议在适当的范围内设置源库的expire_log_day参数,以确保在服务中断后能够顺利恢复,并保证断点处的binlog尚未过期。
- 在任务进入增量迁移阶段之前,不建议对源数据库做DDL操作,这样可能会引起任务迁移失败。
- 迁移过程中,请勿修改、删除提供给DTS连接访问的源库和目标库及用户名、密码、权限,或修改源库和目标库的端口号;若用户源库、目标库的密码发生变化,请先暂停任务再修改DTS配置的连接源库、目标库的密码。
- 选择表级对象同步时,增量同步过程中不建议对表进行重命名操作。
- 增量同步场景下,不支持源数据库进行恢复操作。
- 当将MySQL5.x同步到PostgreSQL,如源端数据库的引擎类型为MyISAM时,请您先手工将源端的MyISAM存储引擎改为InnoDB再进行同步。
- 增量迁移并开启增量DDL支持的场景下,当前暂不支持在结构迁移与全量迁移详情页面显示增量阶段新增的表。
目标库要求
- 若要做增量同步,且同步对象包含外键,则目标数据库的session_replication_role参数必须设置为replica,同步结束后,此参数需改为origin。
- 目标库不可以包含与待同步对象类型相同且名称相同的表,否则任务可能出错。系统库、系统模式、系统表等除外。
- 选择表级对象同步时,增量同步过程中不建议对表进行重命名操作。
- 目标数据库关联RDS实例必须有足够的磁盘空间,磁盘大小建议取以下两种中的最小值:。
- 源库待同步数据量大小的1.5倍。
- 源库待同步数据量大小加200GB。
结构、全量过程中
- 请勿修改源库和目标库的端口号,请勿修改、删除源库和目标库连接用户的密码、权限,否则可能导致任务失败。
- 请勿在源库执行任何DDL,否则可能导致数据不一致或任务失败。
- 请勿在目标库做写入操作,否则可能导致数据不一致。
增量过程中
- 请勿修改源库和目标库的端口号,请勿修改、删除源库和目标库连接用户的密码、权限,否则可能导致任务失败。
- 请勿修改源数据库表的主键或者唯一键(主键不存在时),否则可能导致增量数据不一致或任务失败。
- 请勿在目标库做写入操作,否则可能导致数据不一致。
数据稽核
- 建议在源库的业务低峰期进行数据比对,防止误报不一致数据,以及减少对源库和DTS任务的冲击。
- 在增量同步过程中做对比时,源库若存在写入,则对比结果可能不一致。
操作步骤
-
购买DTS数据同步实例。
在管理控制台点击“创建实例”进入订购页面,“资源配置”选择“引导模式”中,“场景功能”选择“数据同步”,“源数据库”选择“MySQL”,“目标数据库”选择“PostgreSQL”,完成其他信息的填写并完成购买;说明相关配置信息,除“资源配置”的“链路规格”和“网络配置”订购后不可修改外,其他选择均可在实例配置页面修改。
-
进入实例配置页面。
DTS实例购买成功后,进入【数据同步】实例列表页面,上一步骤购买成功的实例在实例列表中显示状态为“待配置”,进入实例配置页面的操作。
-
配置源库及目标库信息。
进入实例配置第一个步骤的【配置源库及目标库信息】页面,填入源库与目标库的相关配置信息,包括数据库类型、IP地址端口、数据库账号、数据库密码等信息。
完成上述信息的填写后,点击源数据库和目标数据库的“测试连接”按钮进行数据库连接测试,检查数据库能否正常连接。
-
配置同步对象及高级配置。
源库和目标库连通性测试成功后,点下一步按钮,进入实例配置第二个步骤的【配置同步对象及高级配置】页面,在“源库对象”中选择要迁移的源库对象,包含:库、TABLE,选中后点击“>”按钮,将待同步对象移动到“已选择对象”中。
-
预检查和启动同步。
点击“下一步预检查”,进入【预检查】页面。预检查会检查如下列表信息,并给出检查结果,用户可以依据检查结果进行下一步操作。
检查项
检查内容
log_slave_updates参数检查
如果源库为集群的从节点,检查源库的log_slave_updates参数是否设置为ON。
存储引擎检查
检查源库中待同步的表的存储引擎。
待同步表主键检查
检查待同步表是否都存在主键。
源库binlog存在性检查
查看源库的binlog文件是否被误删除。
源库binlog影像类型检查
查看源库的binlog_row_image参数是不是FULL。
源库binlog是否开启检查
查看源库的log_bin参数是不是ON。
源库binlog保留时间检查
检查源库的binlog保留时间是否满足要求。
源库binlog模式检查
查看源库的binlog_format参数是不是ROW。
源库和目标库字符集一致性检查
检查源库和目标库的字符集是否一致。
源库用户权限检查
检查源库用于DTS任务的用户是否具有相应的权限。
目标库用户权限检查
检查目标库用于DTS任务的用户是否具有相应的权限。
目标库连接数检查
检查目标库的连接数是否满足任务要求。
目标库连通性检查
检查数据传输服务器能否连通目标数据库。
如果预检查通过,可点击【预检查】页面底部的“启动同步”按钮,开始同步任务。