文章目录
-
-
- 一、不容忽视的挑战:MySQL 5.7 EOL
- 二、解决方案的曙光:腾讯云 TDSQL-C for MySQL Serverless版
- 三、实际案例:MySQL 5.7 迁移到 TDSQL-C for MySQL Serverless版
-
- 1.案例背景:
- 2.迁移过程:
-
- 2.1 创建TDSQL-C for MySQL Serverless实例
- 2.2 兼容性测试
- 2.3 使用Navicat将所有数据从MySQL 5.7导入到TDSQL-C for MySQL Serverless。
- 2.4 修改系统的数据库连接配置,并启动系统服务。
- 2.5 进行业务系统回归测试
- 四、结论
-
2023 年 10 月 21 日,MySQL 5.7 将达到其生命周期的终点(EOL,End of Life),此后Oracle将不再为MySQL 5.7 提供官方更新、错误修复或安全补丁。自此,MySQL 5.x 版本全部 EOL,拥有官方支持的版本将只有8.x。对于那些仍在使用 MySQL 5.7 的用户来说,这是一个重要的时刻!随着 MySQL 5.7 EOL 的到来,升级到MySQL 8.0 似乎是最直接的方案,但是否还有其他选择呢?
本篇博文将基于腾讯云 TDSQL-C for MySQL Serverless版
,探索企业如何以最小的成本
,解决 MySQL 5.7 EOL 后的困境。
一、不容忽视的挑战:MySQL 5.7 EOL
MySQL 5.7 EOL 后,仍在使用 MySQL 5.7 的用户将面临一系列风险和挑战,其中一些主要影响包括但不限于:
- 安全漏洞和风险:MySQL 5.7将不再接收官方的安全补丁和更新,因此容易受到新的安全漏洞和攻击的威胁,这可能导致未经授权的访问、数据泄露、数据破坏或拒绝服务攻击等安全问题,对企业的数据安全构成潜在威胁。
- 兼容性问题:随着时间的推移,MySQL 5.7可能会变得越来越不兼容新的硬件或操作系统。这可能会导致应用程序无法运行或需要修改来适应新的硬件设施或其他相关组件。
- 性能瓶颈:MySQL 5.7可能无法满足现代应用程序对性能的高需求。随着数据量和用户访问量的增加,可能会遇到性能瓶颈,影响应用程序的响应时间和吞吐量。
- 缺乏新功能和改进:由于MySQL 5.7已经停止了官方开发,不再引入新功能或性能改进。这可能会限制用户对数据库的扩展和改进的能力。
- 数据库管理和维护负担:随着时间的推移,MySQL 5.7的管理和维护可能会变得更加复杂,因为用户需要处理老旧的硬件和操作系统,以及可能出现的问题,而没有官方支持,同时生态系统的衰退,包括第三方工具、库和插件,可能会逐渐减少支持或停止更新,也将影响数据库的可用性和生产力。
- 合规性:如果用户的应用程序需要遵守特定的法规或合规性要求,使用不再受支持的数据库版本可能会导致合规性问题。
作为在DB-Engines流行度排名中常年霸榜的MySQL,其在关系型数据库领域的霸主地位是无可置疑的。根据2022年 Slintel 网站的统计数据,在全球关系型数据库市场中,MySQL市场份额最高,达到43.04%,排名第二的Oracle仅为16.76%。同时在 Shadowserver Foundation 于2022年5月份发布的一份全网 MySQL 扫描报告中,MySQL的不同版本份额占比如下:
- MySQL 8.0 占比为8%
- MySQL 5.7占比为46.7%
- MySQL 5.6 占比为30%
- MariaDB各版本占比为14%,其中包括了MariaDB 5.5占比8.1%,其10.1版本占比6%
从该份数据中我们可以发现,早在 2021 年 10 月份就 EOL 的 MySQL 5.6 份额占比仍高达30%,在其 EOL 后的半年时间里,相当一部分用户选择忽视EOL带来的潜在风险,仍然继续使用MySQL 5.6。窥一斑而知全豹,在10月份的MySQL 5.7 EOL后,也会有很大一部分用户继续坚守MySQL 5.7。是什么原因造成了这种局面呢?迁移难度
、改造成本
、兼容性
或许是阻挡企业迁移MySQL 5.7 的最大阻力。在9月21日由中国信通院举办的2023 OSCAR开源产业大会上发布的《开源数据库生态发展研究报告》中也有提到:
在选择替换MySQL5.7时,迁移难度与改造成本是企业⾸要考虑因素。
超过70%的企业在选择MySQL5.7替代数据库时会考虑产品迁移难度与改造成本。
超五成的企业会考虑迁移数据库的可靠性、可⽤性与可服务性。
此外,数据库安全性、兼容性与产品性能等也是企业选择替代数据库时的重要考虑因素。相关主管部⻔的政策也会影响企业对替代数据库进⾏进⼀步选择。
二、解决方案的曙光:腾讯云 TDSQL-C for MySQL Serverless版
TDSQL-C MySQL 版(TDSQL-C for MySQL)是腾讯云自研的新一代云原生关系型数据库。融合了传统数据库、云计算与新硬件技术的优势,为用户提供具备高弹性、高性能、海量存储、安全可靠的数据库服务。TDSQL-C MySQL 版100%兼容 MySQL 5.7、8.0。实现超百万级 QPS 的高吞吐,最高 PB 级智能存储,保障数据安全可靠。
Serverless 服务是腾讯云自研的新一代云原生关系型数据库 TDSQL-C MySQL 版的无服务器架构版,是全 Serverless 架构的云原生数据库。Serverless 服务支持按实际计算和存储资源使用量收取费用,不用不付费,将腾讯云云原生技术普惠用户。
TDSQL-C for MySQL Serverless版的产品优势:
- 完全兼容:TDSQL-C MySQL 版将开源数据库的计算和存储分离,存储构建在腾讯云分布式云存储服务之上,计算层全面兼容开源数据库引擎
MySQL 5.7、8.0
,业务无需改造
即可平滑迁移。- 超高性能:单节点百万 QPS 的超高性能,可以满足高并发高性能的场景,保证关键业务的连续性,并可进一步提供读写分离以及读写扩展性。
- 海量存储:最高支持 PB 级的海量存储,为客户免去面对海量的数据时频繁分库分表的繁琐操作,同时支持数据压缩,在海量数据检索和写入性能上进行了大量优化。
- 秒级故障恢复:计算节点实现了无状态,支持秒级的故障切换和恢复,即便计算节点所在的物理机宕机也可以在一分钟之内恢复。
- 数据高可靠:集群支持安全组和 VPC 网络隔离。自动维护数据和备份的多个副本,保障数据安全可靠,可靠性达99.9999999%。
- 弹性扩展:计算节点可根据业务需要快速升降配,秒级完成扩容,结合弹性存储,实现计算资源的成本最优。
- 快速只读扩展:计算节点可根据业务需要快速添加只读节点,一个集群支持秒级添加或删除1个 – 15个只读节点,快速应对业务峰值和变化场景。
- 快照备份回档:基于数据多版本的秒级快照备份对用户的数据进行连续备份保护,免去主从架构备份回档数据的同步和搬迁,最高以GB/秒的速度极速并行回档,保证业务数据迅速恢复。
- Serverless 架构:Serverless 是腾讯自研云原生数据库 TDSQL-C MySQL 版的无服务器架构版,自动扩缩容,仅按照实际使用量计费,不用不计费,轻松应对业务数据量动态变化和持续增长。其核心服务特性如下:
- 资源扩缩范围(CCU):调整 CCU 弹性扩缩容的范围。Serverless 集群会在该范围内根据实际业务压力自动增加或减少 CCU。
- 弹性策略:Serverless 集群会持续监控用户的 CPU、内存等 workload 负载情况,根据一定的规则触发自动扩缩容策略。
- 自动启停:Serverless 服务支持自定义实例自动暂停时间,无连接时实例会自动暂停。当有任务连接接入时,实例会秒级无间断自动唤醒。
以上内容摘抄整理自腾讯云TDSQL-C MySQL 版官方文档,其官方宣传定义的产品优势,总结下来无非是:100%兼容MySQL、数据安全性高,高可靠、高可⽤、高服务、低成本。这与我们在上文中提及的,企业迁移 MySQL 5.7 所要考虑的迁移难度、改造成本、兼容性、可靠性、可⽤性、可服务性、安全性等因素高度契合。
解决了企业迁移的阻碍,那么TDSQL-C for MySQL Serverless版又该如何应对MySQL 5.7 EOL 后潜在风险与挑战呢?
-
首先是上文提及的新硬件或者操作系统兼容性问题、数据库管理和维护负担、性能瓶颈等问题,TDSQL-C for MySQL Serverless版作为全托管的云原生数据库,天然具备
完全免运维
的优势,企业无需承担数据库的基础设施运维工作,Serverless架构自动扩缩容特性则可以应对各种复杂的负载场景而无需用户手动对数据库扩缩容; -
其次是合规性问题,不同企业不同行业的要求不尽相同,需要具体情况具体分析,不过在当前
国产化软件
的浪潮下,腾讯云的背书应该可以满足大部分的合规审查; -
最后也是最重要的安全漏洞和风险、缺乏新功能和改进这两个问题,针对这两个问题,通过查看 TDSQL-C MySQL 版-产品动态,发现最近一次更新是在9月21日,在8月25日,还对TDSQL-C MySQL 版5.7的内核版本进行了更新。
博主同时分别咨询了腾讯云的售后支持以及工单,最终两个渠道给出的反馈是:
MySQL 5.7 EOL 后,腾讯云这边会进行功能性更新。安全相关的修复,目前暂时没有停更的计划,如果后续有变动,将在产品公告或动态中进行更新发布说明:https://cloud.tencent.com/document/product/1003/51268
。有趣的是,在工单系统中,一开始工程师并未直接回复5.7版本的后续支持计划,只是说会停止接收官方更新并建议升级至8.0版本,后面才正式回答暂时没有停更的计划,会继续进行功能性质更新及安全相关修复。
三、实际案例:MySQL 5.7 迁移到 TDSQL-C for MySQL Serverless版
实践出真知,为了更具体地了解MySQL 5.7迁移到TDSQL-C for MySQL Serverless的过程,让我们来看一个实际迁移案例。
1.案例背景:
一个企业内部培训平台,包含培训资源管理、课程管理、学员管理,在线考试,积分商城等功能。数据库使用MySQL 5.7.36,数据库所在服务器配置为2C4G。
2.迁移过程:
2.1 创建TDSQL-C for MySQL Serverless实例
这里重点解释一下几个“相对陌生”的参数:
- 算力配置:与我们平常的总接触数据库配置是几核几G不同,Serverless版本的计算资源配置单位是CCU(TDSQL-C Compute Unit),1 CCU 近似等于1C2G的计算资源,最小算力代表数据库最小可缩容的谷值,最大算力则代表数据库最大可扩容的峰值。此处的配置建议是:
最小算力与原数据库平值相对应,目的是避免数据库过于频繁的扩缩容影响性能;最大算力与原数据库的配置对应或略高,保障稳定度过业务峰值
。 - 自动暂停:开启状态下,需要设定自动暂停时间,默认为1小时。数据库在该时间内没有连接和 CPU 使用时,将自动暂停,暂停后计算资源不计费,存储资源仍然按实际使用量计费;关闭状态下,数据库会保持持续运行,在没有连接和 CPU 使用时,按用户配置的最小 CCU 算力进行计费,适用于业务有心跳连接的应用场景。需要特别注意的是:
自动暂停的判断条件为是否存在用户连接,如果业务场景需要使用 event_scheduler 来实现定时触发 SQL 的操作,则不建议开启自动暂停
。 - 资源包:Serverless版本下的计算资源、存储资源默认都是按量付费,用户可选择预付费,分为计算资源包和存储资源包。相比而言,资源包最高可比按量计费节省60%。
2.2 兼容性测试
虽然TDSQL-C for MySQL Serverless版的官方文档中说明100%兼容MySQL5.7,但数据库迁移必须慎之又慎,应做好全面的测试工作,避免因配置不同、小版本不同导致的语法不兼容、语义不兼容等兼容性问题。本次兼容性测试使用pt-upgrade工具进行。pt-upgrade 是 Percona Toolkit 中的一个工具,可帮助我们从业务 SQL 层面检查新老版本的兼容性。它的检测思路很简单,给定一个 SQL,分别在两个不同版本的实例上执行,看看是否一致。关于pt-upgrade的更多信息以及使用方法,请参考其官方文档。
-
安装pt-upgrade
# 安装依赖包 yum -y install perl-Digest-MD5 # 获取pt-upgrade wget www.percona.com/get/pt-upgrade # 赋予执行权限 chmod +x pt-upgrade # 查看版本,验证是否成功 ./pt-upgrade --version
-
准备测试SQL脚本
测试SQL应涵盖业务系统所涉及的各类SQL语句,包含但不限于DDL语句、DML语句、DQL语句、存储过程、自定义函数、内置函数。SQL脚本的格式要求:每一行都是一条完整的SQL语句。脚本示例:
select "a word a" REGEXP "[[::]]"; select dept_no,count(*) from test.dept_emp group by dept_no desc; grant select on test.* to 'u1'@'%' identified by '123456'; create table test.t1(id int primary key,c1 text not null default ('')); select * from test.dept_emp group by dept_no; SELECT `name` FROM test.`user` GROUP BY age;
-
运行pt-upgrade
./pt-upgrade h=host1,P=3306,u=root,p=password1 h=host2,P=27149,u=root,p=password2 --type rawlog ./test.sql --no-read-only
-
查看pt-upgrade报告
从报告中我们可以看到有一处SQL在本地数据库运行无报错,在TDSQL-C for MySQL Serverless中运行错误,根据错误提示,发现是sql_mode配置错误。
-
解决pt-upgrade报告中发现的问题
上一步中我们发现由于sql_mode配置不一致导致的查询失败的问题,我们尝试修改TDSQL-C for MySQL Serverless的sql_mode参数修复该错误,发现修改失败,提示权限不足,缺少SUPER权限。
查看一下root用户的权限,发现TDSQL-C for MySQL Serverless出于安全角度,对root用户权限进行了限制,缺少File、Shutdown、Super这三个高风险权限。
那我们应该如何一些数据库系统参数呢?答案是使用腾讯云控制台中的
参数设置
功能 -
再次执行命令并查看报告
2.3 使用Navicat将所有数据从MySQL 5.7导入到TDSQL-C for MySQL Serverless。
2.4 修改系统的数据库连接配置,并启动系统服务。
2.5 进行业务系统回归测试
按照业务系统测试用例进行回归性测试,测试系统各项功能是否正常无报错。
四、结论
MySQL 5.7的EOL意味着数据库管理员和开发者们需要寻找更现代、高效的数据库解决方案。TDSQL-C for MySQL Serverless作为腾讯云的Serverless数据库产品,为迁移提供了一个强大的选择,具备弹性伸缩、按需付费、管理简单、高可用性和100%的兼容性等优势。
通过正确的迁移步骤和实际案例的示范,我们可以看到将MySQL 5.7迁移到TDSQL-C for MySQL Serverless是一个可行的解决方案,可以帮助企业解决MySQL 5.7 EOL后的挑战,提高性能,降低成本
,简化管理。因此,如果您正考虑迁移数据库,不妨考虑TDSQL-C for MySQL Serverless,以最低的成本甩掉自建数据库的历史包袱,感受云原生技术带来的高效便捷。