大家好,欢迎来到IT知识分享网。
作者:MeshCloud脉时云公有云架构师 张东升
1、引言
数据库迁移服务(Database Migration Service 简称DMS),它提供了一种独特的迁移方法,使用MySQL和PostgreSQL的复制能力进行数据迁移,并最大限度地提高数据的安全性、完整性和保真度。数据库迁移服务支持从源数据库到 Cloud SQL 目标数据库的一次性和持续性迁移。
2、整体架构
此次实践的是实例上自建MySQL到Cloud SQL for MySQL的数据迁移,涉及的迁移类型有一次性迁移和持续性迁移实践。
3、 技术简介
数据库迁移服务(DMS)帮助您将MySQL和PostgreSQL工作负载提升并转移到Cloud SQL中,数据库迁移服务简化了网络工作流程,管理初始快照和正在进行的复制,并为您提供迁移操作的状态。DMS支持两种类型的迁移,一次性迁移和持续性迁移。
一次性迁移:数据库的单个时间点快照,从源获取并应用于目标。本质上是一个转储和加载,当加载完成时,目的地就可以使用,在迁移的过程中,禁止DDL操作在源库中执行,防止数据不一致情况。
连续性迁移:在初始完全转储和加载之后从源到目标的连续变化流。在迁移的情况下,当切换到使用目标进行读写时,执行promote操作。此时目标云SQL实例与源实例断开连接,并从副本实例升级到主实例。
4、 目标
自建MySQL的数据全量和增量迁移到Cloud SQL for MySQL,自建MySQL数据源端和目标端Cloud SQL for MySQL实例数据一致性。
5、准备工作
5.1、创建云实例,请参阅创建并启动虚拟机
5.2、MySQL RPM包(mysql-5.7.20-1.el7.x86_64.rpm-bundle.tar),安装包下载地址请参阅:https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.20-1.el7.x86_64.rpm-bundle.tar
6、实施步骤
6.1、安装部署自建MySQL
wget https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.20-1.el7.x86_64.rpm-bundle.tar
tar -xvf mysql-5.7.20-1.el7.x86_64.rpm-bundle.tar
rpm -qa|grep mariadb-libs
rpm -e mariadb-libs(需要卸载mariadb-libs包,与mysql-community-common-5.7.20- 1.el7.x86_64.rpm安装时候有冲突)
rpm -ivh mysql-community-common-5.7.20-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.20-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.20-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-5.7.20-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.20-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.20-1.el7.x86_64.rpm
6.2、做DMS数据迁移对源端数据库有如下相应的配置要求
- 必须设置server-id选项为 1 或更大的值【server-id=1】
- 必须配置用于连接到源数据库的用户接受来自任何地方的连接 【host = %】
- 要执行一次性或连续迁移,请确保在源数据库上启用二进制日志【log-bin=mysql-bin】
- 使用基于行的二进制日志记录 【binlog_format=ROW】
- 二进制日志保留足够长的时间以支持数据库迁移,一般一周 【expire_logs_day=7】
- 所有表(系统数据库中的表除外)都使用 InnoDB 存储引擎
- 用于连接源数据库的用户帐户密码长度不得超过 32 个字符
6.3、插入测试数据并验证DDL操作脚本用法
- 插入测试数据
- 验证DDL操作脚本用法,模拟插入一条数据就会有在binlog日志中匹配到INSERT操作
6.4、创建源连接配置文件
- Database engine 选择MySQL并填写数据源端MySQL的远程连接信息,点击create完成源连接配置文件创建
6.5、创建迁移作业【一次性迁移】
- Source database engine选择MySQL、Migration job type选择One-time【一次性迁移类型】
- Select source connection profile选择TestDMS,关联6.4创建的源连接配置文件
- 创建目标端Cloud SQL实例、填写实例密码、实例版本【目标端的实例版本只能和数据源端版本相同或者更高版本】
- 实例的具体配置
- Connectivity method选择IP allowlist,创建的实例连接到数据源库的方式
- 点击CREATE JOB创建迁移作业,选定TestDMSJob的迁移作业,点击START开启迁移作业
- 查看作业的运行状态,此时状态已经是Completed完成状态。
6.6、创建迁移作业【持续性迁移类型】
- Migration job type选择Continuous【持续性迁移】,其他配置与创建一次性迁移Job的配置相同
7、 验证
7.1、验证一次性迁移类型Job运行结果
7.2、验证持续性迁移类型Job运行结果
- 模拟在数据源端库插入三条数据
- Cloud SQL for MySQL端验证数据是否同步完成
8、补充工作
8.1、支持的数据库版本
支持的源数据库
- RDS 5.6、5.7、8.0
- 自我管理(本地或任何云虚拟机)5.5、5.6、5.7、8.0
- Cloud SQL 5.6、5.7、8.0
- Amazon Aurora 5.6、5.7
支持的目标数据库
- 适用于 MySQL 5.6、5.7、8.0 的 Cloud SQL
8.2、一次性迁移要求
- 在初始完全转储阶段,对源的 DDL 操作可能会中断迁移过程,当迁移状态变为 Running时,请确保停止对源的所有 DDL 操作。
8.3、跨版本支持
- 数据库迁移服务支持 MySQL 到 Cloud SQL 迁移,其中目标版本与源数据库相同或高一个版本。例如,将 MySQL 5.6 源数据库迁移到 Cloud SQL 5.6 或 5.7 目标端。
8.4、未迁移的内容
- 迁移 MySQL 数据库时,不会迁移 MySQL 系统数据库,这些数据库包含有关用户和权限信息。用户帐户登录信息需要在目标 Cloud SQL 数据库实例中进行管理。
9、常见问题
9.1、数据源端的配置不符合相应的配置要求
9.2、创建源连接配置文件无法连接源端数据
9.3、针对一次性迁移,作业在运行的过程中,源库有DDL操作执行
9.4、针对跨版本支持,版本选择有误
- 针对以上情况,都会造成数据迁移失败或者数据迁移两端数据不一致
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/54740.html