数据传输服务DTS

    数据迁移

    迁移类型

    • 结构迁移:结构对象定义语法的迁移,包括表、视图等结构对象的语法迁移。异构数据库迁移时可以实现数据类型的映射,将源库语法调整为目标库对应的语法。
    • 全量数据迁移:将源库中的所有数据迁移到目标库中,不包含结构对象定义的语法。如果迁移过程中源库有新增数据,且迁移类型只选择了全量迁移,则新增数据不会迁移到目标库。
    • 增量数据迁移:将源库迁移过程中新增的数据同步到目标库中,主要用于源库和目标库的增量数据实时同步。如果创建数据迁移任务时,同时选择了全量数据迁移和增量数据迁移,则迁移过程中会先将源库中静态数据迁移到目标库,然后将增量数据同步到目标库。增量数据迁移不会自动结束,如果需要结束实时同步,需要在控制台手动结束该迁移任务。

    迁移限制

    • 源端必须存在主键,否则目标端将可能出现重复数据
    • 目前不支持存储过程、存储函数、触发器和外键的迁移,需要用户手动迁移
    • 源端binlog_format必须为row
    • 若源端为MySQL 5.6及以上版本,源端binlog_row_image必须为full

    迁移权限要求

    当源端为公网自建数据库或BCC自建数据库时,用户需要提供一个满足权限要求的迁移账号。

    用户可以对准备用于迁移的已有账号进行授权,也可以创建新的账号用于迁移,请参考如下授权语句: GRANT SELECT, LOCK TABLES, REPLICATION SLAVE, REPLICATION CLIENT, SHOW VIEW ON ∗.∗ TO '迁移账号'@'主机名' IDENTIFIED BY '迁移密码'; 其中「迁移账号」和「迁移密码」请按需自行填写;「主机名」可参考 DTS公网IP段 进行填写,实现仅对DTS服务器IP放开访问限制,或填写%对全部IP开放访问。

    授权完成后,继续刷新系统权限表,执行FLUSH PRIVILEGES;,确保账号权限立即生效。

    创建数据迁移任务

    数据迁移任务包含3个步骤:源库及目标库配置 -> 迁移类型及库表筛选 -> 预检查。

    1. 登录百度智能云控制台
    2. 选择“产品服务->数据传输服务DTS”,进入数据迁移列表。
    3. 点击“新建迁移任务”填写数据迁移任务相关信息。

      说明:

      1. DTS支持的源库类型包括:RDS上的实例、BCC自建数据库和公网自建数据库三种类型。
      2. DTS支持的目标库类型包括:RDS上的实例、BCC自建数据库。
    4. 任务添加后进入迁移类型及库表页签,选择迁移类型及源库对象,通过“添加所选”将需要迁移的源库对象添加到右侧。

      百度智能云支持的数据迁移类型有结构迁移、全量数据迁移和增量数据迁移三种。详情请参见迁移类型

      迁移过程中用户可以根据行过滤或者列过滤对表格数据进行筛选。当不填写过滤条件时默认不过滤。

      • 列筛选:当只需要获取部分列的数据和变更时,填写需要获取数据的列名,','分割,语法同数据库标准SQL select条件,如:id,name,data。
      • 行筛选:当只需要获取部分行的数据和变更时,填写行过滤条件,语法同数据库标准SQL where条件,如:id>10 and status='success'。
    5. 点击“保存并预检查”完成新建任务,然后在任务列表查看任务状态。

      • 状态列显示“前置检查通过”,可以勾选并启动迁移任务,任务启动后可以在任务进度列查看迁移进度。
      • 状态列显示“前置检查失败”,点击旁边的按钮查看失败原因并修改,重新启动检查直到成功后再启动迁移任务。

    6. 任务启动后可以通过任务详情页查看每个任务的信息,包括配置信息、运行详情及流量信息。

    预检查

    在创建完DTS数据迁移任务时,需要对源库和目的库的连通性进行检查。此外启动数据迁移前还会进行详细的内容检查,详细检查项参见以下解释。

    • 源库连通性预检查解释如下:
    ping测试 telnet测试 mysql connect测试 解释
    成功 成功 成功 连通成功
    成功 成功 失败 源数据库连接失败,请查看数据库服务是否开启了对应的端口,并查看授权是否添加,由于百度出口ip不是固定ip,需要对10.%的网段或直接对%授权,查看防火墙设置。
    成功 失败 失败 源数据库端口连接失败,请查看数据库服务是否启动,或者是否开启了对应的端口,查看防火墙设置,是否禁止该端口访问。
    失败 失败 失败 源ip和DTS服务器之间网络不通,请查看是否填写了外网可以访问到的ip,或者查看防火墙设置。
    • 目的库连通性预检查解释如下:
    ping测试 telnet测试 mysql connect测试 提示语
    成功 成功 成功 连通成功
    成功 成功 失败 目的数据库连接失败,请查看数据库服务是否开启了对应的端口,并查看授权是否添加,由于百度出口ip不是固定ip,需要对10.%的网段或直接对%授权,查看防火墙设置。
    成功 失败 失败 目的数据库端口连接失败,请查看数据库服务是否启动,或者是否开启了对应的端口,查看防火墙设置是否禁止该端口访问。
    失败 失败 失败 目的ip和DTS服务器之间网络不通,请查看是否填写了外网可以访问到的ip,或者查看防火墙设置。
    • 预检查项、失败原因及处理方法:
    预检查问题 失败原因 解决方案
    检查数据传输服务器是否能连通源数据库 网络不通、设置了防火墙、mysql未对所有ip授权 检查填写的ip是否在公网可以访问,检查防火墙配置,检查mysql的账号权限
    检查数据传输服务器是否能连通目的数据库 目的数据库网络不通,mysql授权问题 检查目的数据是否访问正常,检查mysql的账号权限
    检查源数据库的版本号 mysql版本低于5.1 升级mysql到5.1及以上版本
    检查目的数据库待迁入的数据库是否可用 目的数据库中的db不存在 创建目的数据库的db:create database dest_db;
    检查目的数据库是否只读 目的数据库是只读,不可写入 设置目的数据库可写:set global read_only=0;
    检查源数据库的账号权限是否满足迁移要求 源数据库的账号权限不满足迁移要求 增加源数据库账号的权限,具体见权限要求
    检查目的数据库的账号权限是否满足迁移要求 目的数据库的账号权限不满足迁移要求 增加目的数据库账号的权限,具体见权限要求
    检查源库、目标库的连接数是否满足要求 当前剩余的连接数无法满足dts需求 增加数据库最大连接数:set global max_connections=1000;
    检查目的库是否存在跟待迁移对象同名的结构对象 目的数据库中跟要迁移的表重名 删除目标数据库中的表,或选择增量迁移
    检查源端不同库是否存在同名的结构对象 源端不同的库存在相同的结构对象,如相同的表名 将相同的结构对象分割成不同的dts任务
    检查迁移表依赖的外键父表是否迁移 迁移的表的外键依赖的表没有迁移 选择库表信息时,将依赖的表一块迁移
    检查迁移表的表结构在目的库是否存在 目标库中不存在要迁移的表结构 在目标库中创建要迁移的表,或者迁移对象增加结构迁移
    检查迁移表是否有不支持的存储引擎 迁移的表中有不支持的存储引擎 去掉不支持迁移的表
    检查源库和目标库中SQL_MODE是否合法 源库和目标库的sql_mode不合法 改成合法的sql_mode,详见支持的sql_mode
    检查目的库中表是否为空 目的库中的表不为空 清空目标数据库的表的数据
    上一篇
    简介
    下一篇
    数据同步