如何将自建库迁移到阿里云RDS
前提条件
已完成 RDS 实例数据库的准备,可参见申请外网地址和 MySQL 5.7高可用版/5.5/5.6创建数据库和账号。
操作步骤
本例以有公网 IP 的本地数据库迁移到 RDS 上为例。
准备本地数据
在正式迁移之前,需要先在本地数据库和 RDS 实例中创建迁移账号,并在 RDS 实例中创建要迁移的数据库,并将要迁移的数据库的读写权限授权给迁移账号。不同的迁移类型需要不同的权限,如下表所示。
迁移类型
结构迁移
全量迁移
增量迁移
本地数据库 select select select replication slave replication client
RDS 实例 读写权限 读写权限 读写权限
在本地数据库中创建迁移账号。
CREATE USER 'username'@'host' IDENTIFIED BY 'password';参数说明:
例:要创建账号为 William,密码为 Changme123 的账号从任意主机登录本地数据库,命令如下:
CREATE USER 'William'@'%' IDENTIFIED BY 'Changme123';username:要创建的账号
host:指定该账号登录数据库的主机。如果是本地用户可以使用 localhost,如果想让该用户从任意主机登录,可以使用通配符 %
password:该账号的登录密码
在本地数据库中给迁移账号授权,本地数据库中迁移账号的权限要求请参见上表。
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命令,该参数为可选
开启本地数据库的 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 时,则需设置该项修改完成后,重启 MySQL 进程。
$mysql_dir/bin/mysqladmin -u root -p shutdown$mysql_dir/bin/safe_mysqld &其中,“mysql_dir”为MySQL安装目录。
- 正式迁移操作
在 RDS 管理控制台 上单击迁移数据库,进入 DTS,如下图所示。
单击 创建在线迁移任务,进入 创建迁移任务 页面,如下图所示。
输入任务名称、本地数据库信息和目标数据库信息,单击 授权白名单并进入下一步,如下图所示。
实例类型:默认为 RDS 实例
RDS 实例 ID:目标 RDS 实例的 ID。点击下拉菜单将自动联想当前登录 RDS 管理控制台 的账号的 RDS 实例,点击选择所需要的实例
账号:目标 RDS 数据库的迁移账号
密码:目标 RDS 数据库迁移账号对应的密码
实例类型:本地数据库的实例类型,可以选择有公网IP的自建数据库、ECS上的自建数据库、RDS实例、云数据库MongoDB
数据库类型:本地数据库的类型,可以选择 Oracle、MySQL、SQLServer、PostgreSQL、MongoDB
主机名或 IP 地址:本地数据库的公网地址
端口:本地数据库的公网端口
账号:本地数据库的迁移账号
密码:本地数据库迁移账号对应的密码
任务名称:自定义任务名称,可以保持默认值
源库信息
目标库信息
择迁移类型,并在 迁移对象 中选择要迁移的对象,单击 > 将要迁移的对象放入已选择中,单击 预检查并启动,如下图所示。
说明
数据迁移只会将本地数据库的数据(结构)复制一份到目标数据库,并不会对本地数据库数据(结构)造成影响。
如果要修改迁移对象在目标数据库上的名字,可以在 已选择 列表右侧单击 编辑,修改已选择的对象名称,如上图4所示。
说明
以下以预检查不通过为例进行描述,如果预检查通过,请直接参见步骤 8。
系统显示预检查结果,如下图所示。
单击检测结果 为失败的检测项后的 !,查看失败详细信息,根据失败详细信息完成错误排查。
错误排查完毕后,在 迁移任务列表页面,选择当前迁移任务,单击 启动,如下图所示。
系统预检查通过后,单击确定,自动进行迁移任务,如下图所示。
数据准备完毕后,即可进入正式的迁移操作。
后续操作
因迁移账号拥有读写权限,为了保证本地数据库安全,请在数据迁移完成后,删除本地数据库和 RDS 实例中的迁移账号