云优惠
 云服务器优惠大全

首页    数据库    怎么使用数据传输服务(DTS)将本地数据库迁移到 RDS for MySQL

怎么使用数据传输服务(DTS)将本地数据库迁移到 RDS for MySQL

创建时间:2019-01-14 10:53
浏览量:0
收藏

使用数据传输服务(DTS)将本地数据库迁移到 RDS for MySQL,可以实现应用不停服务的情况下,平滑完成数据库的迁移工作。

背景信息

DTS 数据迁移支持 MySQL 的结构迁移、全量迁移和增量迁移。

  • 结构迁移
    DTS 会将本地数据库的结构定义迁移到目标实例。目前 DTS 支持结构迁移的对象有:表、视图、触发器、存储过程、存储函数。

  • 全量迁移
    DTS 会将本地数据库迁移对象的数据全部迁移到目标实例。如果用户还选择了增量迁移,那么全量迁移过程中,为了保证数据一致性,无主键的非事务表会被锁定,锁定期间这些表无法写入,锁定时长依赖于这些表的数据量大小,在这些无主键非事务表迁移完成后,锁才会释放。

  • 增量迁移
    增量迁移会将迁移过程进行数据变更同步到目标实例,如果迁移期间进行了 DDL 操作,那么这些结构变更不会迁移到目标实例。

迁移限制

将本地数据库迁移到 RDS 上有以下限制。

  • 迁移过程中,不支持 DDL 操作。

  • 结构迁移不支持 event 的迁移。

  • 如果使用了对象名映射功能后,依赖这个对象的其他对象可能迁移失败。

  • 当选择增量迁移时,本地 MySQL 实例需要开启 binlog,且本地库的 binlog_format 要为 row。如果本地 MySQL 为5.6版本时,它的 binlog_row_image 还须设置为 full。

  • 迁移后的表不区分大小写,统一变为小写。

前提条件

已完成 RDS 实例数据库的准备,可参见申请外网地址和 创建账号和数据库

操作步骤

本例以有公网 IP 的本地数据库迁移到 RDS 上为例。

准备本地数据

在正式迁移之前,需要先在本地数据库和 RDS 实例中创建迁移账号,并在 RDS 实例中创建要迁移的数据库,并将要迁移的数据库的读写权限授权给迁移账号。不同的迁移类型需要不同的权限,如下表所示。


迁移类型结构迁移全量迁移增量迁移
本地数据库selectselectselect replication slave replication client
RDS 实例读写权限读写权限读写权限
  1. 在本地数据库中创建迁移账号。

    CREATE USER 'username'@'host' IDENTIFIED BY 'password';

    参数说明:

    例:要创建账号为 William,密码为 Changme123 的账号从任意主机登录本地数据库,命令如下:

    CREATE USER 'William'@'%' IDENTIFIED BY 'Changme123';
    • username:要创建的账号

    • host:指定该账号登录数据库的主机。如果是本地用户可以使用 localhost,如果想让该用户从任意主机登录,可以使用通配符 %

    • password:该账号的登录密码

  2. 在本地数据库中给迁移账号授权,本地数据库中迁移账号的权限要求请参见上表。

    GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;

    参数说明:

    例:授权账号 William 对所有数据库和表的所有权限,并可以从任意主机登录本地数据库,命令如下:

    GRANT ALL ON *.* TO 'William'@'%';

    说明 如果需要进行增量迁移,那么需要确认本地数据库的 binlog 是否开启并正确设置,执行以下步骤。

    • privileges:该账号的操作权限,如 SELECT、INSERT、UPDATE 等。如果要授权该账号所有权限,则使用 ALL

    • databasename:数据库名。如果要授权该账号所有的数据库权限,则使用通配符 *

    • tablename:表名。如果要授权该账号所有的表权限,则使用通配符 *

    • username:要授权的账号名

    • host:授权登录数据库的主机名。如果是本地用户可以使用 localhost,如果想让该用户从任意主机登录,可以使用通配符 %

    • WITH GRANT OPTION:授权该账号能使用GRANT命令,该参数为可选

  3. 开启本地数据库的 binlog。

    使用如下命令查询是否开启了binlog。

    show global variables like "log_bin";

    如果查询结果为 log_bin=OFF,那么本地数据库没有开启 binlog。为了使迁移过程中产生的增量数据能同步迁移,需要修改配置文件 my.cnf 中的如下参数。

    log_bin=mysql_binbinlog_format=rowserver_id=大于 1 的整数binlog_row_image=full //当本地 MySQL 版本大于 5.6 时,则需设置该项
  4. 修改完成后,重启 MySQL 进程。

    $mysql_dir/bin/mysqladmin -u root -p shutdown$mysql_dir/bin/safe_mysqld &

    其中,“mysql_dir”为MySQL安装目录。

正式迁移操作

数据准备完毕后,即可进入正式的迁移操作。

  1. 进入DTS管理控制台

  2. 在左侧选择数据迁移,然后单击 创建迁移任务


     

  3. 输入任务名称、本地数据库信息和目标数据库信息,单击 授权白名单并进入下一步,如下图所示。



    • 实例类型:默认为 RDS 实例

    • RDS 实例 ID:目标 RDS 实例的 ID。点击下拉菜单将自动联想当前登录 RDS 管理控制台 的账号的 RDS 实例,点击选择所需要的实例

    • 账号:目标 RDS 数据库的迁移账号

    • 密码:目标 RDS 数据库迁移账号对应的密码

    • 实例类型:本地数据库的实例类型,可以选择有公网IP的自建数据库、ECS上的自建数据库、RDS实例、云数据库MongoDB

    • 数据库类型:本地数据库的类型,可以选择 Oracle、MySQL、SQLServer、PostgreSQL、MongoDB

    • 主机名或 IP 地址:本地数据库所在设备的公网地址

    • 端口:本地数据库的公网端口

    • 账号:本地数据库的迁移账号

    • 密码:本地数据库迁移账号对应的密码

    • 任务名称:自定义任务名称,可以保持默认值。

    • 源库信息

    • 目标库信息

  4. 择迁移类型,并在 迁移对象 中选择要迁移的对象,单击 > 将要迁移的对象放入已选择中,单击 预检查并启动,如下图所示。

    说明 数据迁移只会将本地数据库的数据(结构)复制一份到目标数据库,并不会对本地数据库数据(结构)造成影响。



    如果要修改迁移对象在目标数据库上的名字,可以在 已选择 列表右侧单击 编辑,修改已选择的对象名称,如上图4所示。

    说明 以下以预检查不通过为例进行描述,如果预检查通过,请直接参见步骤 8。

  5. 系统显示预检查结果,如下图所示。


     

  6. 单击检测结果 为失败的检测项后的 !,查看失败详细信息,根据失败详细信息完成错误排查。

  7. 错误排查完毕后,在 迁移任务列表页面,选择当前迁移任务,单击 启动,如下图所示。



  8. 系统预检查通过后,单击确定,自动进行迁移任务,如下图所示。


     

后续操作

因迁移账号拥有读写权限,为了保证本地数据库安全,请在数据迁移完成后,删除本地数据库和 RDS 实例中的迁移账号。


免费领取阿里云1888元代金券大礼包

 

阿里云新老用户均可领取!
自领取后:限时7天使用!

阿里云服务器2折优惠:低至293元/年

 

 

突发性能实例t5 1核1G:293元/年

突发性能实例t5 1核2G:459元/年

突发性能实例t5 2核4G:798元/年

共享型xn4实例1核1G内存:394元/年

共享型n4实例1核2G内存:653元/年

计算网络增强型实例2核4G内存:1566元/年

计算网络增强型实例4核8G内存:2991元/年

点此查看2折活动详情

阿里云高性能云服务器

 

 

网络增强型云服务器:2核4G ¥720元/年

高频应用云服务器:8核16G ¥4109元/年

本地SSD型云服务器:4核16G ¥6218.40元/年

大数据型云服务器:8核32G ¥11375.00元/年

GPU异构云服务器:16核40G ¥15563.00元/年

新用户满立减:每满1000立减50

 

1、到阿里云官网选购产品
2、加入到购物车
3、结算时立享满减

注意:新用户首次购买时必须先加到购物车,然后一起结算才享受此优惠。

腾讯云CVM云服务器22.07元起

 

 

腾讯云1核1G:22.07元/月、794.73元/3年

腾讯云2核2G:36.48元/月、1313.35元/3年

腾讯云2核4G:43.01元/月、1548.5元/3年

腾讯云4核8G:178.5元/月、6426元/3年