tencent cloud

文档反馈

TDSQL MySQL 同步至 TDSQL MySQL

最后更新时间:2024-02-02 16:34:54

    操作场景

    本文为您介绍使用数据传输服务 DTS 从 TDSQL MySQL 数据库同步数据至 TDSQL MySQL 数据库的过程。支持的场景如下:
    入腾讯云:自建 TDSQL MySQL 同步至腾讯云 TDSQL MySQL。
    入腾讯云:腾讯云 TDSQL MySQL 同步至腾讯云 TDSQL MySQL。
    出腾讯云:腾讯云 TDSQL MySQL 同步至自建 TDSQL MySQL。

    注意事项

    DTS 在执行全量数据同步时,会占用一定源端实例资源,可能会导致源实例负载上升,增加数据库自身压力。如果您数据库配置过低,建议您在业务低峰期进行。
    为了避免数据重复,请确保需要同步的表具有主键或者非空唯一键。
    数据同步时,DTS 会使用执行同步任务的账号在源库中写入系统库__tencentdb__,用于记录同步任务过程中的数据对比信息。
    为保证后续数据对比问题可定位,同步任务结束后不会删除源库中的__tencentdb__
    __tencentdb__系统库占用空间非常小,约为源库存储空间的千分之一到万分之一(例如源库为50GB,则__tencentdb__系统库约为5MB - 50MB),并且采用单线程,等待连接机制,所以对源库的性能几乎无影响,也不会抢占资源。

    前提条件

    源数据库和目标数据库符合同步功能和版本要求,请参考 数据同步支持的数据库 进行核对。
    需要具备源数据库的权限如下:
    GRANT RELOAD,LOCK TABLES,REPLICATION CLIENT,REPLICATION SLAVE,SELECT ON *.* TO '迁移账号'@'%' IDENTIFIED BY '迁移密码';
    GRANT ALL PRIVILEGES ON `__tencentdb__`.* TO '迁移账号'@'%';
    FLUSH PRIVILEGES;
    需要具备目标数据库的权限:ALTER, ALTER ROUTINE, CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE USER, CREATE VIEW, DELETE, DROP, EVENT, EXECUTE, INDEX, INSERT, LOCK TABLES, PROCESS, REFERENCES, RELOAD, SELECT, SHOW DATABASES, SHOW VIEW, TRIGGER, UPDATE。

    应用限制

    只支持同步基础表,不支持同步视图、函数、触发器、存储过程等对象。
    源端如果是非 GTID 实例,DTS 不支持源端 HA 切换,一旦源端 MySQL 发生切换可能会导致 DTS 增量同步中断。
    只支持同步 InnoDB 数据库引擎,如果存在其他数据引擎表则任务校验时会报错。
    相互关联的数据对象需要同时同步,否则会导致同步失败。
    增量同步过程中,若源库产生了类型为 STATEMENT 格式的 Binlog 语句,则会导致同步失败。
    不支持同步 二级分区 表,如果同步的库表中包含二级分区表,则任务会报错暂停。
    TDSQL MySQL(MariaDB)作为源或者目标库时,不支持双向同步。
    TDSQL 同步功能为了提高增量阶段的同步速度,采用了行级并发策略。因此在增量同步过程中,可能会在极短的时间内在目标库观察到事务的中间值,但最终源库和目标库数据会保持一致。
    目前主键冲突处理策略只支持冲突覆盖,对于增量阶段的主键数据冲突,会直接进行冲突覆盖。但对于全量数据初始化阶段的冲突,任务会报错。
    不支持同时包含 DML 和 DDL 语句在一个事务的场景,遇到该情况任务会报错。
    不支持 Geometry 相关的数据类型,遇到该类型数据任务报错。
    源库如果是自建数据库,不支持源库进行扩缩容。首次配置 SET 节点,连接保存后,无法再增加或者删除 SET 节点,如果用户需要增加或者删除 SET 节点,需要重新建立同步任务。

    操作限制

    同步过程中请勿进行如下操作,否则会导致同步任务失败。
    请勿修改、删除源数据库和目标数据库中用户信息(包括用户名、密码和权限)和端口号。
    请勿在源库写入 Binlog 格式为 STATEMENT 的数据。
    请勿在源库上执行清除 Binlog 的操作。
    在同步增量阶段,请勿删除系统库表 __tencentdb__

    支持同步的 SQL 操作

    操作类型
    SQL 操作语句
    DML
    INSERT、UPDATE、DELETE
    DDL
    CREATE DATABASE、DROP DATABASE、ALTER DATABASE、CREATE TABLE、ALTER TABLE、DROP TABLE、TRUNCATE TABLE、RENAME TABLE、CREATE INDEX、DROP INDEX
    说明:
    暂不支持 CREATE TABLE 表名 AS SELECT 语句。

    环境要求

    类型
    环境要求
    源数据库要求
    源库和目标库网络能够连通。
    实例参数要求:
    源库 server_id 参数需要手动设置,且值不能设置为0。
    源库表的 row_format 不能设置为 FIXED。
    源库和目标库 lower_case_table_names 变量必须设置一致。
    源库变量 connect_timeout 设置数值必须大于10。
    Binlog 参数要求:
    源端 log_bin 变量必须设置为 ON。
    源端 binlog_format 变量必须设置为 ROW。
    源端 binlog_row_image 变量必须设置为 FULL。
    MySQL 5.6 及以上版本 gtid_mode 变量不为 ON 时会报警告,建议打开 gtid_mode。
    不允许设置 do_db, ignore_db。
    源实例为从库时,log_slave_updates 变量必须设置为 ON。
    建议源库 Binlog 日志至少保留3天及以上,否则可能会因任务暂停/中断时间大于 Binlog 日志保留时间,造成任务无法续传,进而导致任务失败。
    外键依赖:
    外键依赖只能设置为 NO ACTION,RESTRICT 两种类型。
    部分库表同步时,有外键依赖的表必须齐全。
    环境变量 innodb_stats_on_metadata 必须设置为 OFF。
    目标数据库要求
    目标库为分布式数据库时,推荐提前手动创建分表,并规划 shardkey,否则 DTS 会按照源库的表样式来在目标库创建表,如果源库为单机实例,则目标库会创建为单表。
    目标库的版本必须大于等于源库的版本。
    目标库需要有足够的存储空间,如果初始类型选择“全量数据初始化”,则目标库的空间大小须是源库待同步库表空间的1.2倍以上。
    目标库 max_allowed_packet 参数设置数值至少为4M。

    操作步骤

    因为 TDSQL MySQL 迁移到 TDSQL MySQL 入云,和出云的操作步骤类似,如下以自建 TDSQL MySQL 迁移到腾讯云 TDSQL MySQL 为例进行介绍。
    1. 登录 数据同步购买页,选择相应配置,单击立即购买
    参数
    描述
    计费模式
    支持包年包月和按量计费。
    源实例类型
    选择 TDSQL MySQL,购买后不可修改。
    云数据库 TDSQL MySQL 分为三种内核版本(MySQL/MariaDB/Percona),这里无需区分内核版本,选择本身的数据库类型 TDSQL MySQL。
    源实例地域
    选择 DTS 迁移服务的源端地域,如果源数据库为腾讯云数据库,这里请选择源数据库所属地域,如果源库为自建数据库,这里请选择离源数据库最近的一个地域,以便 DTS 选择最优同步路径,降低同步时长。
    目标实例类型
    选择 TDSQL MySQL,购买后不可修改。
    目标实例地域
    选择目的实例所在地域,购买后不可修改。
    规格
    目前只支持标准版。
    2. 购买完成后,返回 数据同步列表,可看到刚创建的数据同步任务,刚创建的同步任务需要进行配置后才可以使用。
    3. 在数据同步列表,单击操作列的配置,进入配置同步任务页面。
    
    4. 在配置同步任务页面,配置源端实例、账号密码,配置目标端实例、账号和密码,测试连通性后,单击下一步
    设置项
    参数
    描述
    任务设置
    任务名称
    DTS 会自动生成一个任务名称,用户可以根据实际情况进行设置。
    运行模式
    支持立即执行和定时执行两种模式。
    源实例设置
    源实例类型
    购买时所选择的源实例类型,不可修改。
    源实例地域
    购买时选择的源实例所在地域,不可修改。
    接入类型
    请根据您的场景选择,本场景选择“专线接入”或“VPN 接入”,该场景需要 配置 VPN 和 IDC 之间的互通,其他接入类型的准备工作请参考 准备工作概述
    公网:源数据库可以通过公网 IP 访问。
    云主机自建:源数据库部署在 腾讯云服务器 CVM 上。
    专线接入:源数据库可以通过 专线接入 方式与腾讯云私有网络打通。
    VPN 接入:源数据库可以通过 VPN 连接 方式与腾讯云私有网络打通。
    云数据库:源数据库属于腾讯云数据库实例。
    云联网:源数据库可以通过 云联网 与腾讯云私有网络打通。
    私有网络 VPC:源数据和目标数据库都部署在腾讯云上,且有 私有网络。如果需要使用私用网络 VPC 接入类型,请 提交工单 申请。
    私有网络专线网关/VPN 网关
    专线接入时只支持私有网络专线网关,请确认网关关联网络类型。VPN 网关,请选择通过 VPN 网关接入的 VPN 网关实例。
    私有网络
    选择私有网络专线网关和 VPN 网关关联的私有网络和子网。
    主机 - Proxy
    填入 Proxy 地址和端口。
    节点 - SET
    填入 TDSQL MySQL 分片节点 IP,每分片需输入一个节点 IP,多个节点请换行输入。
    源库如果是自建数据库,首次配置 SET 节点,连接保存后,无法再增加或者删除,如果用户需要增加或者删除 SET 节点,需要重新建立同步任务。
    账号
    源实例账号,账号权限需要满足要求。
    密码
    源实例账号的密码。
    目标实例设置
    目标实例类型
    购买时选择的目标实例类型,不可修改。
    目标实例地域
    购买时选择的目标实例地域,不可修改。
    接入类型
    根据您的场景选择,本场景选择“云数据库”。如果源实例接入类型选择了云数据库,目标实例接入类型这里可以选择公网/云主机自建/专线接入/VPN 接入/云数据库/云联网等方式。
    实例 ID
    选择目标实例 ID。
    账号
    目标实例账号,账号权限需要满足要求。
    密码
    目标实例账号的密码。
    5. 在设置同步选项和同步对象页面,将对数据初始化选项、数据同步选项、同步对象选项进行设置,在设置完成后单击保存并下一步
    说明
    如果用户在同步过程中确定会使用 gh-ost、pt-osc 等工具对某张表做 Online DDL,则同步对象需要选择这个表所在的整个库(或者整个实例),不能仅选择这个表,否则无法同步 Online DDL 变更产生的临时表数据到目标数据库。
    如果用户在同步过程中确定会对某张表使用 rename 操作(例如将 table A rename 为 table B),则同步对象需要选择 table A 所在的整个库(或者整个实例),不能仅选择 table A,否则 rename 操作后,table B 的数据不会同步到目标库。
    库表映射:在已选对象中,鼠标放在右侧将出现编辑按钮,单击后可在弹窗中填写映射名。
    设置项
    参数
    描述
    数据初始化选项
    初始化类型
    结构初始化:同步任务执行时会先将源实例中表结构初始化到目标实例中。
    全量数据初始化:同步任务执行时会先将源实例中数据初始化到目标实例中。仅选择全量数据初始化的场景,用户需要提前在目标库创建好表结构。
    默认两者都勾上,可根据实际情况取消。仅选择“全量数据初始化”时,用户需要提前在目标库创建好表结构。
    已存在同名表
    前置校验并报错:存在同名表则报错,流程不再继续。
    忽略并继续执行:全量数据和增量数据直接追加目标实例的表中。
    数据同步选项
    冲突处理机制
    冲突覆盖:在同步时发现表主键冲突,用源库主键记录覆盖目标库主键记录。
    同步操作类型
    支持操作:Insert、Update、Delete、DDL。
    同步对象选项
    源实例库表对象
    选择待同步的对象,支持库级别和表级别。
    已选对象
    展示已选择的同步对象,支持库表映射。
    6. 在校验任务页面,完成校验并全部校验项通过后,单击启动任务。 如果校验任务不通过,可以参考 校验不通过处理方法 修复问题后重新发起校验任务。
    失败:表示校验项检查未通过,任务阻断,需要修复问题后重新执行校验任务。
    警告:表示检验项检查不完全符合要求,可以继续任务,但对业务有一定的影响,用户需要根据提示自行评估是忽略警告项还是修复问题再继续。
    7. 返回数据同步任务列表,任务开始进入运行中状态。
    说明
    选择操作列的更多 > 结束可关闭同步任务,请您确保数据同步完成后再关闭任务。
    8. (可选)您可以单击任务 ID,进入任务详情页,查看任务初始化状态和监控数据。
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持