HERO联盟知识学堂第一期——数据库工程师进阶之路——化繁为简,从“新”开始——LV2——MySQL数据库迁移上云
微认证:MySQL数据库迁移上云
前言
华为云提供了以华为云数据库RDS为基础结合DAS、DRS、CDM服务实现数据库轻松迁移上云的解决方案。
目标
- 了解云上数据库的优势与价值
- 区分不同数据库迁移的方法与特点
- 描述RDS和CDM的迁移流程与技术原理
- 区分DRS和CDM的适用场景
数据库上云的背景与优势
传统数据库面临的难题
- 高投入
- 周期长
- 难运维
- 不灵活
云上数据库带来的经济效益
- 即开即用
- 实时生产目标实例
- 响应时间快,公网费用低
- 无需额外支出license费用
- 弹性伸缩
- 根据业务情况弹性伸缩资源
- 按需开支
- 灵活调整实例规格
- 运维便捷
- 实例状态信息实时监控
- 专业的数据库管理平台
- 一键式扩容
- 完全兼容
- 兼容原生数据库引擎
- 兼容现有的程序和工具
- 方便迁移数据库
云数据库与传统数据库对比
性能项目 | 云数据库RDS | 自购数据库搭建数据库服务 |
---|---|---|
服务可用性 | 8C|32G性能最高达23000QPS。 | 需要购买额外设备,自建主从,自建RAID。 |
数据可靠性 | 超高IO单盘最大IOPS33000,数据持久性达99.9999999%。 | 需要购买额外设备,自建主从,自建RAID。 |
系统安全性 | 防DDoS攻击,流量清洗;及时修复各种数据库安全漏洞。 | 需要购买昂贵的硬件设备和软件服务,需要自行检测和修复安全漏洞等。 |
数据库备份 | 支持自动备份,手动备份,自定义备份,选择备份周期、修改备份策略。 | 需要购买设备,并自行搭建设置和后期维护。 |
软硬件投入 | 无需投入软硬件成本,按需购买,弹性伸缩。 | 数据库服务器成本相对较高,对于SQL Server需支付许可证费用。 |
系统托管 | 无需托管。 | 需要自购2U服务器设备,如需实现主从,需要购买两台服务器,并进行自建。 |
维护成本 | 无需运维。 | 需要投入大量人力成本,招聘专业的DBA进行维护。 |
部署扩容 | 弹性扩容,快速升级,按需开通。 | 需采购和原设备匹配的硬件,需托管机房的配合,需部署设备,整体周期较长。 |
资源利用率 | 按实际结算,100%利用率。 | 考虑峰值,资源利用率低 |
个人总结 云数据库省事,花钱少,性能高;自购服务器搭建麻烦,花钱多,性能差。
云数据库是高速增长的百亿级市场
数据库上云是必然趋势
- 成本驱动
- 技术趋势
- 业务诉求
选择迁移目标
- ECS自建数据库
- 云数据库
数据库解决方案对比
自建数据库 | 数据库on云服务器 | 云数据库 | |
---|---|---|---|
自购并安装服务器、系统、数据库等软硬件 | 自购并安装数据库软件 | 无需购买和安装任何软硬件 | |
昂贵的机房托管费用 | 云服务器租用费用 | 只需支付服务费用 | |
昂贵的DBA成本 | 昂贵的DBA成本 | 减少DBA投入和成本 | |
应用优化 | 用户 | 用户 | 用户 |
数据库弹性伸缩 | 用户 | 用户 | 云服务提供商 |
数据库高可用 | 用户 | 用户 | 云服务提供商 |
数据备份与恢复 | 用户 | 用户 | 云服务提供商 |
数据库软件版本升级或打补丁 | 用户 | 用户 | 云服务提供商 |
数据库软件安装 | 用户 | 用户 | 云服务提供商 |
操作系统版本升级或打补丁 | 用户 | 云服务提供商 | 云服务提供商 |
操作系统安装 | 用户 | 云服务提供商 | 云服务提供商 |
服务器部署及维护 | 用户 | 云服务提供商 | 云服务提供商 |
机架堆叠 | 用户 | 云服务提供商 | 云服务提供商 |
机房、电力、空调、网络等基础设施 | 用户 | 云服务提供商 | 云服务提供商 |
首先考虑云数据库
以下情况不考虑云数据库
- 要求超出了云数据库限制或需要云数据库无法支持的功能,则考虑ECS数据库服务器
- 为了完全控制操作系统及软件的访问和管理,则考虑ECS数据库服务器
- ECS数据库服务器需要自行管理备份、复制和集群的问题
华为云数据库服务
SQL数据库——面向传统OLTP数据库业务
关系型数据库服务RDS
- MySQL
- PostgreSQL
- SQL Server
NoSQL数据库——面向海量扩展业务
文档型数据库服务DDS
- MongoDB
分布式缓存服务DCS
- Redis
- Memcached
数据库生态——构建完整的数据库解决方案
- 分布式数据库中间件DDM
- 数据库安全服务DBSS
- 数据复制服务DRS
- 数据管理服务DAS
关系型数据库RDS
Relational Database Service(关系型数据库服务,RDS)
华为云关系型数据库RDS是一种基于云计算平台的即开即用、稳定可靠、弹性伸缩、便捷管理的在线关系型数据库服务。
RDS MySQL的优势
MySQL是一个真正的多用户、多线程SQL数据库服务器,是全球最受欢迎的开源关系型数据库,良好的跨平台能力,支持大部分主流操作系统平台上运行。
- 高可用
- 支持AZ内/跨AZ高可用主备架构
- 安全防护
- 支持VPC、子网、安全组、SSL连接、审计日记,确保数据安全性
- 备份恢复
- 最高达35天的系统自动备份,PITR任意时间点恢复,支持手动创建快照,轻松应对灾难恢复
- 轻松扩容
- 最多支持5个只读副本,扩展读负载
- 一键CPU&内存/扩容
- 在线磁盘扩容
- 数据迁移
- 支持数据迁移让业务轻松上云
- 高性能
- 全面支持MySQL5.7
- 推出兼容MySQL5.6的优化版
- 性能大幅提升,解决复制延迟问题
数据管理服务DAS
Data Admin Service(数据管理服务,DAS)是一款专业的简化数据库管理工具,提供良好的可视化操作界面,大幅提高工作效率,让数据管理变得安全、简单。
- 支持关系型数据库实例的管理
- 支持ECS自建库实例的数据管理
数据库迁移的解决方案
传统数据库迁移原因
- 磁盘空间不够
- 一些老项目,选用的机型并不一定适用于数据库,随着时间的推移,磁盘很有可能出现短缺。
- 业务出现瓶颈
- 项目中采用单机承担现有的读写业务,业务压力增大,不堪重负。如果IO压力在可接受的范围,会采用读写分离方案。
- 设备性能瓶颈
- 设备性能瓶颈主要在磁盘IO能力、内存、CPU,此时除了针对瓶颈做一些优化外,选择迁移是不错的方案。
- 项目改造
- 数据库跨机房,增加节点或者不同业务共用一台服务器,为了缓解服务器压力以及方便维护,也会做迁移。
传统MySQL数据库迁移方案概览
MySQL迁移主要技术是围绕数据做工作,所以就是在保证业务平稳持续地运行的前提下做备份恢复。
问题就是如何快速安全地进行备份恢复。
- 备份
- 备份前提:考虑数据量大小,源库业务可停机时长,主从关系、读写分离顺序
- 备份策略:全量备份、增量备份
- 备份方法:物理备份或使用迁移工具
- 传输
- 网络因素:网络耗时、断点续传
- 传输方式:直接拷贝、使用工具
- 传输距离:rsync适用于本地异构设备传输和文件同步;异地使用硬盘快递
- 恢复
- 恢复条件:数据量大小和备库业务可停机时长
- 恢复方式: 直接导入或使用工具
- 恢复检验:数据一致性、主从一致性、业务读写正常
传统数据库迁移方案比较
迁移方法 | 优点 | 缺点 | 适用场景 |
---|---|---|---|
数据库直接导出,拷贝文件到新服务器,在新服务器上导入 | 1. 会重建数据文件,减少数据文件的占用空间 2. 兼容性最好 3. 导出导入很少发生问题,需求灵活 | 使用传统导出导入时间占用长 | 适用于业务瓶颈或项目改造等需要变动数据表结构的迁移 |
使用第三方迁移工具:mysqldump、mysqlpump、Xtrabackup等 | 1. 设置完成后传输无人值守,自动完成 2. 兼容性强,跨版本 | 1.不能导入数据量大的数据库 2. 不够灵活,设置繁琐 3. 传输时间长,异常后很难从异常的位置继续传输 | 适用于业务可停机时间较长的数据库的导入与导出 |
数据文件和库表结构文件直接拷贝到新服务器,挂载到同样配置的MySQL服务下 | 1. 时间占用短,文件可断点传输,操作步骤少 2. 备份和恢复速度相对较快 | 可移植性差,不同版本和操作系统之间不兼容 | 适用于数据量大,业务可停机时间长的数据库的迁移 |
华为云数据复制DRS
Data Replication Service(数据复制服务,DRS)是一种易用、稳定、高效,用于数据库在线迁移和数据库实时同步的云服务。DRS围绕云数据库,降低了数据库之间数据流通的复杂性,有效地帮助您减少数据传输的成本
华为云DRS适用场景
- DB在线迁移:业务不中断或者中断时间非常短
- DB实时同步:基于数据库日志处理的技术。不同于批量同步,批量同步是非实时的,在某些时间点是同步的,大部分时间点是非同步的
什么时候用DRS?
- 业务可中断时间非常短
- 数据库数据量非常大
- 需要一个简单、省心的迁移服务
云数据迁移CDM
Cloud Data Migration(云数据迁移,CDM)提供同构/异构数据源之间批量数据迁移服务,帮助实现数据自由流动。支持自建和云上的文件系统,关系数据库,数据仓库,NoSQL,大数据云服务,对象存储等数据源。
CDM应用场景
- 本地数据迁移上云
- 云上数据迁移到本地
- 云上服务之间的数据迁移
DRS与CDM的定位区别与关系
DRS:用于数据库在线迁移和数据库实时同步的云服务。
CDM:提供同构/异构数据源之间批量数据迁移服务,帮助实现数据自由流动。
困惑点:CDM对标的是数据集成服务,一般是做数据导入数据仓库的场景,也可以用于一小部分的迁移场景
区别点:
- 是否在意业务中断时间?数据量是否大于100GB?迁移是否要简单,易用?
- YES——DRS
- NO——DRS/CDM
华为云数据库迁移的技术原理
华为云DRS在线迁移场景
- VPC网络内的数据库在线迁移
- 客户ECS自己数据库迁移至RDS/DDS
- RDS之间的数据迁移
- RDS之间的数据同步
- 通过公网的数据库在线迁移
- 其他云数据库迁移至华为RDS/DDS
- 用户本地数据库迁移至RDS/DDS
- 通过VPN做在线迁移
- 本地数据中心数据库迁移至RDS/DDS
- 混合云间的数据同步
- 容灾
- RDS/DDS作为用户本地数据库的灾备
传统主从结构的的数据库迁移
- 搭建主从关系
- mysqldump导出数据
- 收集指定库需要的账号以及权限
- 使用rsync传输到目标库
- 导入数据到目标库,数据同步到目标从库
- 上述完成后,迁移源库业务到目标库,观察业务状态
- 如果业务没有问题,证明迁移成功
内网下自建MySQL数据库的迁移
- 准备RDS主备数据库
- 测试源数据库和目标端华为云云数据库MySQL实例之间的网络是否互通
- 收集账号与权限
- 使用DRS选择业务低峰期开始正式的数据库迁移
数据库迁移的华为云实践
MySQL数据库迁移上云实践
- DAS数据库管理:通过数据导入目标数据表对数据进行备份或迁移
- DRS数据复制:云数据库迁移的主要解决方案
- CDM云数据迁移:使用CDM整库迁移功能,迁移数据库
DRS引导式迁移流程
DRS多种迁移模式
- 选择数据流动方向:入云,出云
- 选择网络类型:公网网络、VPC网络
- 选择目标库读写设置:只读、读写
- 选择迁移模式:业务可中断,选择全量迁移;业务中断最小化,选择全量+增量迁移
DRS识别迁移条件
预检查可以提前识别迁移是否满足成功条件
提供:
- 失败原因
- 失败详情
- 处理建议
用户可以根据失败信息和处理建议的指导,调整环境,以确保迁移成功
DRS实时状态监控
剩余时间评估:持续的评估,辅助用户从容做好迁移计划
同步时延:宏观把握数据同步的实时性
DRS迁移对比
- 对象级对比
宏观对比对象是否缺失:数据库、表、视图、存储过程、触发过程、触发器等 - 数据级对比
详细校对数据,不同细度:行数对比,内容对比
迁移对比与业务割接
- 对象检查
- 全量迁移阶段结束后,使用对象级别对比功能,校验数据库对象是否缺失。
- 全面检查
- 确认迁移对象无缺失后,选择一个业务低峰期,使用数据级对比功能,进行一次或者多次数据级对比,对源数据库和目标数据库整体数据差异具有一个宏观的结论。
- 割接复查
- 在割接阶段,停止源业务写入几分钟,使用数据级对比功能,进行一次指定表的数据级对比,推荐的表特征为:活跃表,关键业务表,对比多次存在差异的表
- 结束任务
- 在割接阶段停止原业务写入,确认数据无丢失后,结束在线迁移任务,割接与切换新业务至新数据库。
CDM整库迁移实践
MySQL整体迁移到RDS
CDM数据库迁移的通用限制
- CDM以批量迁移为主,仅支持有限的数据库增量迁移,不支持数据库实时增量迁移,推荐使用数据复制服务(DRS)来实现数据库增量迁移到RDS。
- CDM支持的数据库整库迁移,仅支持数据表迁移,不支持存储过程、触发器、函数、视图等数据库对象迁移。其中视图会被当做表进行迁移。
- CDM仅适用于一次性将数据库迁移到云上的场景,包括同构数据库迁移和异构数据库迁移,不适合数据同步场景,比如容灾、实时同步。
自测题
- 与云数据库相比,自建的MySQL数据库拥有更多的运维成本和运维工作量。(对)
- 以下哪项不是传统自建数据库的缺点?(需要对业务数据进行查询)
- 以下哪种迁移场景选择CDM最为合适?(实现hadoop大数据迁移至云数据仓库)
- DRS支持哪些网络下的数据库迁移?(VPC网络、VPN网络、公网网络、专线网络)
- 对OBS桶的数据库文件进行备份迁移时,以下操作正确的是?(OBS桶所在区域必须跟实例所在区域相同;支持低版本的数据库备份文件在高版本实例数据库上进行还原;待还原数据库名称,必须跟备份文件中数据库名称一致)
MySQL本地数据库迁移实验细节
1. 准备环境
1.1 预置环境
点击上方的红色按钮——预置实验环境
1.2 登录华为云
2. 数据库迁移
2.1 创建云数据库RDS实例
- 计费方式:按需计费
- 区域:华北-北京四
- 实例名称:默认
- 选择数据库版本:MySQL5.7
- 实例类型:单机
- 储存类型:SSD云盘
- 可用区:可用区二
- 时区:UTC+08:00
- 性能规格:通用型,配置为2核4G
- 虚拟私有云:vpc-rds-mysql
- 端口:3306
- 密码:Seetraum123@
2.2 数据库测试程序
2.2.1 数据库测试程序
- 打开桌面的“Xfce”终端,输入命令ssh root@ECS公网IP
- 输入yes
- 输入密码Huawei@123,输入的密码不会显示
- 使用MySQL命令 mysql -u root -h ECS私网IP -p -e “create database loadtest”
- 输入密码Huawei@123,输入的密码不会显示
- 使用命令 sysbench --test=/usr/share/sysbench/tests/include/oltp_legacy/oltp.lua --db-driver=mysql --mysql-db=loadtest --mysql-user=root --mysql-password=Huawei@123 --mysql-port=3306 --mysql-host=ECS私网IP --oltp-tables-count=10 --oltp-table-size=10000 --num-threads=20 prepare
- 使用命令 sysbench --test=/usr/share/sysbench/tests/include/oltp_legacy/insert.lua --db-driver=mysql --mysql-db=loadtest --mysql-user=root --mysql-password=Huawei@123 --mysql-port=3306 --mysql-host=ECS私网IP --oltp-tables-count=10 --oltp-table-size=1000 --max-time=3600 --max-requests=0 --num-threads=10 --report-interval=3 --rate=20 --forced-shutdown=1 run
2.2.2 查看CPU、IP情况
- 新打开一个命令行窗口
- 输入命令 ssh root@ECS公网IP
- 输入密码 Huawei@123
- 使用命令 top
- 使用Ctrl+C 退出top命令
- 使用iostat -d vda vdb -m 1 10
- 使用Ctrl+C 退出命令
2.3 创建迁移命令
- 区域:华北-北京四
- 任务名称:默认
- 任务异常自动结束时间(天):14
- 数据流动方向:入云
- 源数据库引擎:MySQL
- 目标数据库引擎:MySQL
- 网络类型: 公网网络(下面那个我同意点上)
- 目标数据库实例:选择我们创建的RDS
- 目标库读写设置:读写
- 迁移模式:“全量+增量”
2.4 源库及目标库信息
源库信息:
- IP地址或域名:123.60.212.165
- 端口:3306
- 数据库用户名:root
- 数据库密码:Huawei@123
- SSL安全连接:关闭
- 等待实例创建成功后,点击下方的测试连接
目标库信息:
- 数据库实例名称:默认
- 数据库用户名:root
- 数据库密码:Seetraum123
- 所有Definer迁移到该用下:是
- 点击测试连接
2.5 设定迁移
- 确认所有备注
- 迁移对象:全部迁移
- 弹出提示:忽略,继续下一步
2.6 预检查
全部检查通过后,单击下一步
2.6.1 参数检查
如果 max_connections检查不一致,可直接忽略,进行下一步。
2.7 任务确认
- 启动时间:立即启动
- 单击启动任务
- 确认协议
- 启动任务
2.8 任务管理
2.8.1 全量迁移
2.8.2 增量迁移
2.8.3 迁移对比
数据级对比:
- 行数对比,立即启动
勾选loadtest下某个数据,点击蓝色的“>>”选入右侧,再点击页面中的“是”创建对比任务。 - 内容对比,DRS侧计算,立即启动
勾选loadtest下某个数据,点击蓝色的“>>”选入右侧,再点击页面中的“是”创建对比任务。
2.8.4 增量迁移CPU、IO资源使用情况
同步骤2.1
3. 业务割接
3.1 中断业务
3.2 割接业务
- 在终端窗口使用命令 sysbench --test=/usr/share/sysbench/tests/include/oltp_legacy/insert.lua --db-driver=mysql --mysql-db=loadtest --mysql-user=root --mysql-password=Seetraum123@ --mysql-port=3306 --mysql-host=RDSIP地址 --oltp-tables-count=10 --oltp-table-size=1000 --max-time=3600 --max-requests=0 --num-threads=20 --report-interval=4 --rate=20 --forced-shutdown=1 run
3.3 结束实验
- Ctrl + C结束上述命令
可能会遇到的题目
判断题
- 与云数据库相比,自建的MySQL数据库拥有更多的运维成本和运维工作量(True)
- 在RDS的备份策略中,可以设置备份时间段为2:30-3:30(False)
- DAS是一个可视化的数据库管理工具,可以支持ECS自建库实例的数据库管理(True)
- 数据库管理服务DAS支持华为云跨Region访问(False)
- 当主机发生故障时,系统无法自动将迁移实例或者同步实例切换到备机继续执行任务(False)
- 创建好MySQL云数据库后可以更换成PostgreSQL云数据库(False)
- 创建RDS备份一定会收取额外的费用(false)
单选题
- 以下哪项不是云数据库带来的经济效益(使用免费)
- 以下哪项是使用mysqldump迁移工具的优点(设置完成后传输无人值守,自动完成)
- 在传统的数据库迁移方案中,由于变动表结构而迁移数据库,以下哪种方法适用于该场景(数据库直接导出,拷贝文件到新服务器,在新服务器上导入)
- 以下哪个备份工具支持增量备份(Navicat)
- 以下哪个RDS的参数是指系统的字符集(character_set_server)
- 以下哪条命令是用来删除数据库的(drop database XXX)
- 以下哪项不是传统自建数据库的缺点(需要对业务数据进行查询)
- 关于DRS的在线同步特性,以下哪项不正确的是(支持MySQL与MangoDB的在线同步)
- CDM创建成功后,以下哪项集群配置是无法修改的(更改集群规格)
- 以下哪项不是DRS的特点(无需手动导入导出数据)
- 以下哪个不属于DRS预检查失败的修复方法(对数据正确性进行检查)
- 以下哪条命令可以用来登录MySQL数据库(mysql -u root -p)
- 关于传统主从结构数据库迁移步骤,以下选项正确的是(搭建主从关系–>使用mysql导出源数据库数据–>使用rsync传输到目标库–>导入数据到目标库)
- 以下哪项服务可以创建Redis数据库实例(DCS)
- 关于创建DRS迁移任务的步骤,以下哪项是正确的(创建迁移任务–>配置源库及目标库信息–>设定迁移用户及对象–>进行预检查)
多选题
- 可以用哪些方式在linux上安装MySQL数据库服务器(下载rpm安装集合包,解压后进行安装;下载yum源,使用yum命令在线安装)
- 以下哪些操作可以在DAS中执行(导入sql文件;用select命令查询数据;导出表结构)
- RDS MySQL提供下面哪些级别的高可用服务(同AZ;跨AZ)
- 在DRS迁移中,若目标库为RDS,以下哪些目标库信息是必填的(数据库用户名;数据库密码)
- 以下哪些是云数据迁移CDM所支持的数据源(OBS;Elasticsearch;DWS;MRS HDFS)
- 可以对已创建好的RDS MySQL数据库实例做哪些操作(创建备份;创建只读;创建灾备;购买相同配置)
- 在MySQL数据库迁移中,以下哪些服务或产品要收取费用(RDS;DRS;CDM)
- 以下哪些情况会考虑使用ECS自建MySQL数据库(使用super权限,完全控制数据库的访问和管理;对服务器自行进行备份,复制和集群的管理)
- 在创建DRS迁移任务中,可以选择哪些迁移模式(全量;全量+增量)
- 对OBS桶的数据库文件进行备份迁移时,以下操作正确的是?(OBS桶所在区域必须跟实例所在区域相同;支持低版本的数据库备份文件在高版本实例数据库上进行还原;待还原数据库名称,必须跟备份文件中数据库名称一致)
- DAS可以对以下哪些数据库进行管理(ECS自建的MySQL数据库;RDS云数据库;DDS云数据库)
- 在DRS出云迁移下,RDS MySQL源库的实例类型可以是(单机实例;主备实例;只读实例)
- 以下哪些操作在RDS备份策略中可以进行修改(关闭自动备份;设置备份保留天数;设置备份的周期)
- 在DRS迁移中设置源库信息时,以下哪些可能是测试连接失败的原因(数据库账号不允许远程连接;密码输入错误)
- 点赞
- 收藏
- 关注作者
评论(0)