MySQL升级最佳实践

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:
MySQL升级最佳实践:
升级的原因 :
1、 旧版本的BUG
2、 旧版本的安全问题
3、 在新版中受益的地方(新特性,可扩展性,性能等)
4、 数据库支持受限
继续保留使用旧版本的原因:
1、 app处在一种隔离的网络状态,更新成本高
2、 app已不在有新的功能更新
3、 app活跃度下降已不在上升
4、 platform 中的硬件或者os 没有发生变化等
哪些情况版本升级危险性大:
1、 主版本的变化,比如5.1到5.5的升级
2、 MySQL to  Percona  or mariadb的升级
3、 一次性跳过太多的副版本号,比如从5.1.20 到 5.1.61
4、 从原来的开发版本升级到其他更高的稳定版或开发版
5、 跳过一个或多个主版本号如: 4.1到5.5 而不是从5.1到5.5
 
升级需要考虑的问题:
1、 数据、数据类型(是否兼容)
在磁盘上存储的格式,MySQL数据类型的变化,
排序方面的变化;
Timestamp类型是否自动更新时间
新的一些限制;哪些是保留字;统计信息的改变等
2、 Queries(reads and writes)
语法的变化;警告或错误等提示消息
查询使用方式所带来的结果是否与原先版本的结果一致。
在函数等其他查询中哪些是不确定的query
3、 性能和可扩展性
Query执行时间,query执行计划,在可扩展和locking方面的性能
4、 复制方面的变化
在一定压力负载下,复制的一些情况,在err_log中是否有报警或错误消息;
是否存在“data drift” 造成主从数据不一致?性能是否有波动等?
5、 资源的使用
内存的使用情况,是减少了还是增多啦?
6、 高级的新特性
更多的新特点前提是 是否牺牲了其他的特性
对 存储程序、plugin、触发器、events、视图 这些方面看看是否收到影响!
 
是直接升级还是使用复制的方式升级?
对于小的系统来说是直接进行升级,这样会造成宕机或造成其他的危险,使用LVM进行快照的话,可以很快的进行rollback。
 
对于使用shards 的环境:挨个对mysql进行升级 将危险降到最低;
使用replication 方式的升级方式是值得推荐的(将新版本server做slave,最后在切换)。
 
在Cloud 中进行升级:
建立一个“clone”的 updated server,直接进行测试;
 
升级过程中所涉及到其他的问题:
在升级MySQL的时候,是否还要升级硬件?OS?应用程序? 配置文件如何修改等?
如果单单进行MySQL升级的话,可以用很多时间进行测试;
还有升级其他组件的话,出现问题话,还要查询是否是其他组件的问题,这样做危险系数直线上升。
 
对存在复制架构的情况,进行升级:
1、 对于 MM双主的情况,先对不活跃的master进行升级;
对shard 环境的数据库,你可以走个捷径:
就是不需要对所有的MySQL进行测试, 先升级一个shard,并进行监控,等确认后,在批量升级其他的shard,在进行整体的测试。
 
升级的具体过程:
1、 先阅读新版本改进的地方,及新特性
2、 对新版本设置QA环节,列出哪些特性,及改进是需要使用并改变的。
3、 调整MySQL配置文件;移去过时的参数,对某些参数进行改进(比如:在5.5. 中 storage_engine=Innodb; innodb_file_format=Barracuda;例如某些兼容性的需求:在5.5 中 Read-Comitted 在 statement replication环境下是不起作用的。)
4、 迁移数据:
Mysqldump and   import back; 最保险的方式,是整个的移动数据,但也最慢,这样对于跳过很多版本的数据库升级方式,是很有帮助的。
然后执行 MySQL_upgrade 会检查table 的兼容性并尝试进行修复;并且升级system table
5、 对数据进行校验
比较原先备份文件和升级后的备份文件的差别
Checksum table(pt-table_checksum工具的使用)
6、 如果不打算停掉业务,可使用replication的方式
使用 pt-table-checksum 进行同步数据check
在slave上检查错误日志或警告。
必要的情况下在进行一次回滚,即replication old-new- 来100%确定。
大部分情况下, 采用复制的方式,从5.0-5.5 还是有效果的。
   Replication  new-new 这样做的目的是 检查是否还有额外的安全或其他错误;升级的事后验证。
7、 验证复制的性能:
测量slave catch up 的速度。查看thread利用情况。
8、 从线上获取真实的查询:
可以打开general_log 或 slow log(long_query_time=0)
或使用tcpdump抓包,pt-query_digest 解包分析
截取部分数据:
Pt-query_digest  --sample 5 –print  --no-report  queries.log > samples.log
9、 检查query
单connection测试:对这些 samples.log 运行 pt-upgrade 
高并发测试: 运行pt-log-player 两次,第一次热机,第二次才是真正的运行。
Look at pt-query_digest report on full query  log is good to check in both cases
10、进行压力测试: full application load testing 





本文转自 位鹏飞 51CTO博客,原文链接:http://blog.51cto.com/weipengfei/1183247,如需转载请自行联系原作者
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
监控 关系型数据库 MySQL
mysql升级和降级
mysql升级和降级
62 9
|
3月前
|
存储 缓存 关系型数据库
鱼和熊掌如何兼得?一文解析RDS数据库存储架构升级
阿里云RDS率先推出新型存储类型通用云盘,提供低延迟、低成本、高持久性的用户体验。
鱼和熊掌如何兼得?一文解析RDS数据库存储架构升级
|
3月前
|
存储 关系型数据库 MySQL
升级宝典!阿里云RDS MySQL助力MySQL5.7升级到8.0
2023年10月,社区MySQL5.7停服。阿里云RDS MySQL对MySQL5.7的服务将进行到2024年10月21日,同时,并将通过有效的方案和大量的升级经验,鼓励和助力广大企业和开发者将MySQL5.7升级到MySQL8.0。
|
21天前
|
SQL 关系型数据库 MySQL
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(8.0版本升级篇)
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(8.0版本升级篇)
94 0
|
7月前
|
关系型数据库 MySQL 数据库
【Navicat 连接MySQL时出现错误1251:客户端不支持服务器请求的身份验证协议;请考虑升级MySQL客户端】
【Navicat 连接MySQL时出现错误1251:客户端不支持服务器请求的身份验证协议;请考虑升级MySQL客户端】
367 0
|
4月前
|
存储 分布式计算 关系型数据库
云原生数据仓库AnalyticDB MySQL湖仓版架构升级,持续释放技术红利!
云原生数据仓库AnalyticDB MySQL湖仓版架降价23%!持续提供高性价比的产品服务
|
4月前
|
存储 SQL 关系型数据库
MySQL5.7到8.0的升级迁移!高效的MySQL跨版本迁移技术解读
NineData是一种高效、稳定且易于使用的迁移工具,可帮助用户将MySQL 5.7迁移到MySQL 8.0。由于MySQL 5.7已经结束生命周期并不再获得技术支持,因此迁移至MySQL 8.0是必要的。NineData提供了数据复制功能,包括数据迁移和实时同步,还支持双向复制。与传统迁移方法相比,NineData具有简单易用、数据一致、强劲性能和高可靠性的优势。它提供了完善的观测和干预能力,保障迁移的成功。此外,NineData还提供了对比功能,确保数据的一致性。通过简单的配置过程,用户可以实现自动化的数据迁移。NineData还提供了完善的观测和干预能力,帮助用户追踪迁移进展并诊断和修复
454 3
|
4月前
|
存储 分布式计算 关系型数据库
|
5月前
|
存储 关系型数据库 MySQL
58到家MySQL军规升级版
58到家MySQL军规升级版
|
9月前
|
存储 SQL 分布式计算
AnalyticDB MySQL升级为湖仓一体架构:从湖到仓,打造云原生一站式数据分析平台
AnalyticDB MySQL湖仓版同时支持低成本离线处理和高性能在线分析,适合ETL/BI报表/交互式查询/APP应用等多场景,并可无缝替换CDH/TDH/Databricks/Presto/Spark/Hive等