阿里云产品1000元现金卷:https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=vfdcdk6o
购买云数据库最高减1000元,提交付款会自动选择优惠卷。
详见:https://help.aliyun.com/document_detail/64548.html?spm=a2c4g.11186623.6.751.L61wRF
本地数据库和云数据库的几点对比:
1、 预算紧张!
对于资金不充裕的中小规模数据库用户而言,相比较自建数据库需要的运维人员和DBA的人工费用,将数据库迁移到公有云托管,可以利用云服务托管的便利性和丰富的运维工具,降低成本。
2、 时间紧急!
预期或非预期的规模快速伸缩的场景下,利用云数据库服务的弹性伸缩能力,构建弹性伸缩服务既可以减少采购周期导致的扩容困难,亦可以避免收缩引发的高额成本。在规模和成本间动态平衡。
3、 开发验证需求量大!
对于需要利用大规模数据库进行验证的开发项目来说,自行搭建完整的大规模数据库环境用于开发验证,在时间和经济上都是不合适的,利用云数据库服务根据项目节奏动态申请测试资源,可以在确定的预算下取得更大规模和更完善的场景覆盖。
4、 高可靠性、高扩展性场景,如全球或多国运营的商业支持系统!
自行搭建跨国的大规模和高可靠性数据库集群,不仅在技术上非常复杂,成本上也非常高昂。利用公有云的跨 Region 服务,可以快速实现高可靠性,高扩展能力的数据库服务,并由公有云服务商提供 SLA 保证。
使用 数据传输服务 DTS 可以将本地 MySQL 实例的数据迁移到 RDS for MySQL 实例。数据传输服务 DTS (以下简称 DTS) 提供的增量数据同步功能,可以实现在本地应用不停服的情况下,平滑完成 MySQL 数据的迁移工作。
此列讲述本地 MySQL->RDS for MySQL 的数据迁移,更对数据库迁移相见:https://help.aliyun.com/document_detail/26618.html?spm=a2c4g.11186623.6.571.QBksan
本小节简单介绍使用 DTS 进行本地 MySQL->RDS for MySQL 数据迁移的任务配置流程。
迁移步骤
对于本地 MySQL->RDS for MySQL 的数据迁移,DTS 支持结构迁移、全量数据迁移及增量数据迁移,这个迁移类型的功能及限制如下:
-
结构迁移
数据传输会将迁移对象的结构定义迁移到目标实例。目前 DTS 支持结构迁移的对象有:表、视图、触发器、存储过程、存储函数。
-
全量数据迁移
全量迁移将本地 MySQL 实例的存量数据全部迁移到目标 RDS for MySQL 实例。
如果用户只进行全量数据迁移,那么迁移过程中本地 MySQL 实例新增的业务写入不会被同步到目标 RDS for MySQL 实例。
-
增量数据迁移
增量数据迁移会将全量数据迁移过程中,本地 MySQL 实例的增量变更数据同步到目标 RDS for MySQL 实例,增量数据迁移可以实现本地 MySQL 实例在迁移过程中产生的增量数据被实时同步到目标库,最终实现本地 MySQL 实例同目标 RDS for MySQL 实例进入动态数据同步的过程。
迁移限制
- 迁移过程中,不支持 DDL 操作
- 结构迁移不支持 event 的迁移
- 如果使用了对象名映射功能后,依赖这个对象的其他对象可能迁移失败
- 当选择增量迁移时,源端的本地 MySQL 实例需要按照要求开启 binlog
- 当选择增量迁移时,源库的 binlog_format 要为 row
- 当选择增量迁移且源 MySQL 如果为 5.6 及以上版本时,它的 binlog_row_image 必须为 full
- 当选择增量迁移时,增量迁移过程中如果源MySQL实例出现因实例跨机迁移或跨机重建等导致的binlog 文件ID乱序,可能导致增量迁移数据丢失
迁移权限要求
当使用 DTS 进行本地 MySQL->RDS for MySQL迁移时,在不同迁移类型,对源端和目标端 MySQL 实例的迁移帐号权限要求如下:
迁移类型 | 结构迁移 | 全量迁移 | 增量迁移 |
---|---|---|---|
本地 MySQL 实例 | select | select | super select replication slave replication client |
目标端 RDS for MySQL 实例 | 读写权限 | 读写权限 | 读写权限 |
迁移流程
DTS 在进行本地 MySQL->RDS for Mysql 数据迁移时,为了解决对象间的依赖关系,提高迁移成功率。结构对象及数据的迁移顺序如下:
- 结构对象:表、视图的迁移
- 全量数据迁移
- 结构对象:存储过程、函数、触发器、外键的迁移
- 增量数据迁移
如果任务没有选择增量数据迁移,那么当全量数据迁移完成后,任务列表中的迁移进度为:结构迁移 100%,全量迁移 100%,迁移状态为“迁移中”。此时迁移任务正在进行步骤(3) 中的对象的迁移。此时,请勿手动结束任务,否则会造成迁移数据丢失。
迁移任务配置
下面详细介绍使用 DTS 将本地 MySQL 实例中的数据迁移到阿里云 RDS for MySQL 实例的任务配置流程。
RDS for MySQL 实例数据库创建
在数据迁移过程中,如果待迁移的数据库在目标 RDS 实例中不存在,那么 DTS 自动会创建。但是对于如下两种情况,用户需要在配置迁移任务之前,手动创建数据库。
- 数据库名称不符合 RDS 定义规范(由小写字母、数字、下划线、中划线组成,字母开头,字母或数字结尾,最长 64 个字符)。
- 待迁移数据库,在源端本地 MySQL 和目标端 RDS for MySQL 实例中名称不同。
对于这两种情况,用户需要在配置迁移任务之前,先在 RDS 控制台完成数据库创建。具体参考 RDS使用手册 - 创建数据库”。
迁移帐号创建
迁移任务配置,需要提供本地 MySQL 数据库及目标 RDS for MySQL 实例的迁移账号。迁移账号所需权限详见上文的 迁移权限要求 部分。
如果源端 MySQL 实例迁移账号尚未创建,那么您可以参考 Grant 语法说明,创建满足权限要求的迁移账号。
如果目标端 RDS for MySQL 实例迁移账号创建,那么您可以参考 RDS 账号创建流程,创建对待迁移数据库有读写权限的迁移账号。
其他准备工作
如果需要进行增量迁移,那么需要确认源库的 binlog 是否开启,格式是否满足要求。具体确认项如下。
-
确认源库的 binlog 是否开启。
如果这里面查询出来的 log_bin=OFF,则说明源库没有开启 binlog,这个时候如果需要使用增量迁移的话,需要修改本地 MySQL 的 binlog 配置,打开 binlog 日志。
- 开启二进制日志,修改 log_bin=mysql_bin。
- 设置 binlog 模式为 row,修改 binlog_format=row。
- 配置 server_id 大于 1,即 server_id=某一个大于 1 的整数。
- 如果版本为 5.6,修改 binlog_row_image=full。
- 修改完成后,重启 MySQL 进程。
-
确认源库的 binlog 格式为 row 模式。
使用上面的命令确认本地 MySQL 的 binlog 格式是否为 ROW,如果查询出来的结果不为 ROW 的话,那么通过如下的参数设置命令将模式修改为 ROW。
当修改完成后,建议将源库上已有的连接 KILL 掉,并且重新连接,否则可能出现其他的连接依然使用 statement 格式记录 binlog 日志。
-
当本地 MySQL 版本大等于 5.6.2 时,确认源库的 binlog_row_image=full。
如果查询出来的结果不为 FULL 的话,那么通过如下的参数设置命令将其修改为 FULL。
迁移任务配置
当数据库、迁移账号都创建完成后,就可以开始配置迁移任务了。下面详细介绍下具体的配置步骤。
- 进入 数据传输 DTS 控制台,点击右上角的 创建迁移任务,开始任务配置。
-
本地 MySQL 实例及目标 RDS for MySQL 实例连接信息配置。
在这个步骤中,主要配置迁移任务名称,迁移源实例及目标实例连接信息。其中:
-
任务名称
默认情况下,DTS 为每个任务自动生成一个任务名称。任务名称没有唯一性要求,您可以修改这个名称,为任务配置一个具有业务意义的名称,便于后续的任务识别。
-
源实例连接信息
- 实例类型:选择 有公网 IP 的自建数据库
- 数据库类型:选择 MySQL
- 主机名或 IP 地址:配置本地 MySQL 数据库实例的访问地址,这个地址必须为公网访问方式
- 端口:MySQL 实例监听端口
- 账号:MySQL 实例访问账号
- 密码:上面指定的 MySQL 访问账号对应的密码
-
目标 RDS for MySQL 实例连接信息。
- 实例类型:选择 RDS 实例
- RDS 实例 ID: 配置迁移的目标 RDS 实例的实例 ID。 DTS 支持经典网络、VPC 网络的 RDS for MySQL 实例
- 数据库账号:RDS for MySQL 实例的连接账号
- 数据库密码:上面指定的数据库账号对应的数据库密码
-
-
迁移对象及迁移类型配置。
-
迁移类型
DTS 支持 结构迁移、全量数据迁移、增量数据迁移。
如果需要进行不停机迁移,那么需要选择:结构迁移+全量数据迁移+增量数据迁移。
如果只进行全量迁移,那么需要选择:结构迁移+全量数据迁移。
-
迁移对象
迁移对象,需要选择您要迁移的对象。迁移对象选择的粒度可以为:库、表、列三个粒度。
默认情况下,对象迁移到 RDS for MySQL 实例后,对象名跟本地 MySQL 实例一致。如果您迁移的对象在源实例跟目标实例上名称不同,那么需要使用 DTS 提供的对象名映射功能,详细使用方式可以参考 库表列映射。
当配置完迁移对象及迁移类型后,即进入任务启动前的预检查步骤
-
-
预检查。
在迁移任务正式启动之前,会先进行前置预检查,只有预检查通过后,才能成功启动迁移。
如果预检查失败,那么可以点击具体检查项后的按钮,查看具体的失败详情,并根据失败原因修复后,重新进行预检查。
-
启动迁移任务。
当预检查通过后,我们可以启动迁移任务,任务启动后,可以到任务列表中查看任务具体的迁移状态及进度。
增量数据迁移是个动态同步的过程,所以建议在增量迁移达到无延迟状态时,在目标数据库上进行业务验证,如果验证成功,那么可以停掉迁移任务,然后将业务切换到目标数据库。
至此,完成将本地 MySQL 数据库实例到阿里云 RDS for MySQL 的数据迁移任务配置。
原链接:https://help.aliyun.com/document_detail/26621.html?spm=a2c4g.11186623.2.2.2j0YDZ