网站首页 > 技术文章 正文
(关注“数据库架构师”公众号,提升数据库技能,助力职业发展)
0 - 升级背景
MySQL 5.5发布于2010年,至今已有十年历史,官方已经停止更新。2008年发布的MySQL 5.1版本,在2018年发布的MySQL 8.0版本后,也已不再兼容和更新。
为了保证提供更稳定、高效的MySQL服务,我们准备启动MySQL升级计划。秉承“由简入繁”、“由易到难”的原则,逐步升级MySQL 5.5至5.7版本【8.0由于变更过大,暂不考虑升级到8.0版本】。
各个版本维护周期:
1 - 升级收益
MySQL 5.7版本对InnoDB引擎做了较大的优化。增加了很多实用性的新功能,比如:
- 在线调整buffer pool;
- 快速扩展varchar列;
- 在线回收undo;
- 高并发场景下,支持关闭死锁检测,提高行锁效率;
- 部分SQL可并行读
- ……
性能方面,MySQL 5.7相比于MySQL 5.5,SQL性能提升明显。这得益于InnoDB优化器的重构,对于join + sort的读请求,优化得尤为显著。
在主从复制方面,MySQL 5.7支持并行复制,可有效地减少大批量写入下的从库延时情况。借助GTID的半同步复制,可更好的保证主从数据的一致性。
安全方面,支持密码过期策略、用户锁定等功能,保证短期账户超过规定时间即不可使用。
在平台中,支持SQL访问统计,可直观看到每张表的访问情况,已经SQL的访问情况。
2 - 升级前注意事项
DBA核对:
- 所有表自增字段的ID从1开始;
- datetime类型的范围在’1000-01-01’到’9999-12-31’之间;
- 表名大小写不敏感;
开发人员核对:
- MySQL的应用驱动包(mysql-connector-java),建议在5.1.34及以上;
3 - 升级步骤
3.1 - 准备升级环境
- 从现有MySQL 5.5集群的备份中,还原一个节点至升级中转机;
- 在新集群所在服务器搭建一套空的MySQL 5.7集群;
- 从还原的节点中导出账号权限,导入至新集群;
- 将还原节点的数据(MySQL 5.5)导出至新集群(MySQL 5.7),平均速度为15M/s;
- 待数据导出完成,将新主库挂载到老主库,依靠MySQL主从,同步增量数据;
- 等待同步完成;
- 将新节点加监控;
3.2 - 切换步骤
- 与开发人员约定切换时间;
- 如果有从域名,提前调整;
- 到切换时间时,老主库设置只读,新主库主从复制点位不再变化时,修改负载均衡关系,kill老主库连接;
- 通知开发人员切换完成;
- 下线老主库、老从库;
- 观察新主库、新从库错误日志;
- 修改新集群元信息、监控配置、备份、高可用;
如果这篇文章对你有帮助,还请帮忙点赞、转发 以下,你的支持会激励我们输出更多高质量的文章!
如果你还想看更多优质文章,欢迎关注我的公众号「数据库架构师」,提升数据库技能,助力职业发展。
- 上一篇: 实战经验:Mysql 字符集及排序规则
- 下一篇: MySQL-SQL介绍(mysql简单介绍)
猜你喜欢
- 2025-09-13 每次写SQL时总忘记语法顺序怎么办,这里一招教你解决
- 2025-09-13 Spring Boot 2.x中集成H2 内存数据库使用入门
- 2025-09-13 MySQL常用数据类型_mysql数据类型和用途
- 2025-09-13 Mybatis中SQL全大写或全小写影响执行性能吗
- 2025-09-13 MySQL 8.0——创建并使用数据库、获得数据库和表的信息
- 2025-09-13 mysql8.0配置文件优化_mysql配置文件参数优化
- 2025-09-13 清华学长熬夜20天整理出的“数据库MySQL”基础篇「小白必看!」
- 2025-09-13 Windows 中安装 MariaDB 数据库_如何安装mariadb
- 2025-09-13 邮箱区分大小写吗?一文探讨RFC规范
- 2025-09-13 MySQL日常问题之一:DBeaver看到控制台创建的中文注释为乱码
- 最近发表
- 
- 聊一下 gRPC 的 C++ 异步编程_grpc 异步流模式
- [原创首发]安全日志管理中心实战(3)——开源NIDS之suricata部署
- 超详细手把手搭建在ubuntu系统的FFmpeg环境
- Nginx运维之路(Docker多段构建新版本并增加第三方模
- 92.1K小星星,一款开源免费的远程桌面,让你告别付费远程控制!
- Go 人脸识别教程_piwigo人脸识别
- 安卓手机安装Termux——搭建移动服务器
- ubuntu 安装开发环境(c/c++ 15)_ubuntu安装c++编译器
- Rust开发环境搭建指南:从安装到镜像配置的零坑实践
- Windows系统安装VirtualBox构造本地Linux开发环境
 
- 标签列表
- 
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- c语言min函数头文件 (77)
- asynccallback (87)
- localstorage.removeitem (77)
- vector线程安全吗 (73)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 无效的列索引 (74)
 
