您当前的位置:首页 > 电脑百科 > 数据库 > MYSQL

MySQL 5.5升级5.7

时间:2019-08-26 16:36:44  来源:  作者:

下午的时候接到业务部门的一个需求,他们有一个业务对性能要求比较高,在测试环境已经做了一些测试和优化,想看看在MySQL新版本中是否有一定的提升,现在使用的数据库版本是MySQL 5.5.19,想问问我能不能做下升级。

确实,很少有业务部门对数据库版本有一定的要求,对我来说有点儿惊喜。本来要推到下周的事情,我就速战速决吧。

升级数据库版本,在商业数据库中是一个大活,有一定的复杂性,记得在Oracle中是有一个特有的版本升级路线图的,现在都19c了,相比路线图更是复杂了不少。

 

MySQL 5.5升级5.7小试

 

 

回到这个需求,在MySQL中,常用的思路无非是两种,一种是迁移式升级,一种是字典升级。鉴于这是一个测试环境,上面的数据库很多,数据量也不大,采用迁移式升级是比较推荐的,因为业务方对时间的要求比较宽松,1个小时以内交付就行,所以我想试试字典升级的方式。

整个迁移的过程可以归纳为下面的几个步骤:

1.多版本软件部署

2.停库备份

3.切换版本,启动数据库

4.升级数据字典

5.重启数据库

我们来逐个说一下。

源环境是MySQL 5.5.19,升级到Percona 5.7.16版本

  1. 多版本软件部署
  2. 需要在同一台服务器上部署多版本软件,在这里就是5.7的软件,这里使用二进制的部署方式,目录暂定为/usr/local/mysql_5.7
  3. 停库备份
  4. 这应该是最关键的一个步骤了,可以考虑多个层面的备份,比如目前的数据量不大,可以直接做目录的复制,同时为了保险起见,再做一个逻辑备份,记得备份/etc/my.cnf
  5. 切换版本,启动数据库
  6. 这个是风险高发阶段,很可能数据库启动出现问题。
  7. 常见的问题是参数不兼容,比如下面的参数是5.7版本中不识别的。
  8. thread_concurrency = 8
  9. innodb_additional_mem_pool_size = 32M
  10. innodb_thread_concurrency = 0
  11. 还有MySQL的启动方式,是用mysqld_safe --defaults-file总是提示如下的错误。

mysqld_safe Adding '/usr/local/Percona-Server-5.7.16-10-linux.x86_64.ssl101/lib/mysql/libjemalloc.so.1' to LD_PRELOAD for mysqld

mysqld_safe ld_preload libraries can only be loaded from system directories (/usr/lib64, /usr/lib, /usr/local/mysql/lib)

 

[1]+ Exit 1 mysqld_safe --defaults-file=/data/mysql_4306/my.cnf

而使用service的方式启动就没有问题了,可以看到方式还是有较大的差异,在/etc/init.d下面的mysql文件里有这些变量的差异性补充,还有Percona和MySQL社区版的文件路径差异

root 21395 1 0 15:25 pts/2 00:00:00 /bin/sh /usr/local/Percona-Server-5.7.16-10-Linux.x86_64.ssl101/bin/mysqld_safe --datadir=/data/mysql_4306/data --pid-file=/data/mysql_4306/tmp/mysql.pid

4.升级数据字典

数据库启动之后,算是处于一个临界状态,用的MySQL 5.7的软件,但是数据字典还是5.5版本的。可以使用自带的mysql_upgrade来进行升级。

mysql_upgrade --socket=/data/mysql_4306/tmp/mysql.sock --port=4306 -uroot -pxxxx

MySQL的字典升级难得之处就是对于字典的兼容性很好,没有了版本间的复杂依赖,处理起来真是很清爽。

会输出一些简单日志,类似下面的形式:

Checking if update is needed.

Checking server version.

Running queries to upgrade MySQL server.

Checking system database.

mysql.columns_priv OK

mysql.db OK

mysql.engine_cost OK

mysql.event OK

mysql.func OK

mysql.general_log OK

mysql.gtid_executed OK

mysql.help_category OK

mysql.help_keyword OK

mysql.help_relation OK

mysql.help_topic OK

mysql.host OK

mysql.innodb_index_stats OK

mysql.innodb_table_stats OK

mysql.ndb_binlog_index OK

mysql.plugin OK

mysql.proc OK

mysql.procs_priv OK

mysql.proxies_priv OK

mysql.server_cost OK

mysql.servers OK

mysql.slave_master_info OK

mysql.slave_relay_log_info OK

mysql.slave_worker_info OK

mysql.slow_log OK

mysql.tables_priv OK

mysql.time_zone OK

mysql.time_zone_leap_second OK

mysql.time_zone_name OK

mysql.time_zone_transition OK

mysql.time_zone_transition_type OK

mysql.user OK

Upgrading the sys schema.

Checking databases.

。。。

liteApp.banner OK

litework.attributes

error : Partitioning upgrade required. Please dump/reload to fix it or do: ALTER TABLE `litework`.`attributes` UPGRADE PARTITIONING

litework.id_sequence OK

。。。

Repairing tables

Upgrading tables

`test`.`monitor_db`

Running : ALTER TABLE `test`.`monitor_db` FORCE

status : OK

Running : ALTER TABLE `litework`.`attributes` UPGRADE PARTITIONING

status : OK

。。。

Upgrade process completed successfully.

整个过程不超过2分钟即可搞定。

5.重启数据库

升级之后需要做下基本的检查,比如查看数据库日志,查看sys库是否正常等。

当然在生产环境中的检查和预案就要丰富一些了,总之一句话,升级是一件风险极高的任务,一定要做好完整的备份,升级不成如何降级,你有了余地才有了进步的机会。



Tags:MySQL   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
作者:雷文霆 爱可生华东交付服务部 DBA 成员,主要负责Mysql故障处理及相关技术支持。爱好看书,电影。座右铭,每一个不曾起舞的日子,都是对生命的辜负。 本文来源:原创投稿 *爱可生...【详细内容】
2021-12-24  Tags: MySQL  点击:(7)  评论:(0)  加入收藏
一、为什么要搭建主从架构呢1.数据安全,可以进行数据的备份。2.读写分离,大部分的业务系统来说都是读数据多,写数据少,当访问压力过大时,可以把读请求给到从服务器。从而缓解数据...【详细内容】
2021-12-15  Tags: MySQL  点击:(12)  评论:(0)  加入收藏
生成间隙(gap)锁、临键(next-key)锁的前提条件 是在 RR 隔离级别下。有关Mysql记录锁、间隙(gap)锁、临键锁(next-key)锁的一些理论知识之前有写过,详细内容可以看这篇文章...【详细内容】
2021-12-14  Tags: MySQL  点击:(18)  评论:(0)  加入收藏
binlog 基本认识 MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二...【详细内容】
2021-12-14  Tags: MySQL  点击:(13)  评论:(0)  加入收藏
为查询优化你的查询 大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被执行了多次的时候,这些查...【详细内容】
2021-12-09  Tags: MySQL  点击:(15)  评论:(0)  加入收藏
测试的目的和原因,公司有很多程序员,每个程序员对数据库和表结构都有自己的理解。而且每个程序员的理解往往是以效率考虑。既然都是为了效率考虑,那么我就来测试一下究竟哪种使...【详细内容】
2021-12-08  Tags: MySQL  点击:(14)  评论:(0)  加入收藏
当你们考虑项目并发的时候,我在部署环境,当你们在纠结使用ArrayList还是LinkedArrayList的时候,我还是在部署环境。所以啊,技术不止境,我在部环境。今天这篇文章缕一下在同一台服...【详细内容】
2021-12-08  Tags: MySQL  点击:(17)  评论:(0)  加入收藏
对于数据分析来说,MySQL使用最多的是查询,比如对数据进行排序、分组、去重、汇总及字符串匹配等,如果查询的数据涉及多个表,还需要要对表进行连接,本文就来说说MySQL中常用的查询...【详细内容】
2021-12-06  Tags: MySQL  点击:(21)  评论:(0)  加入收藏
在学习SQL语句之前,首先需要区分几个概念,我们常说的数据库是指数据库软件,例如MySQL、Oracle、SQL Server等,而本文提到的数据库是指数据库软件中的一个个用于存储数据的容器。...【详细内容】
2021-11-24  Tags: MySQL  点击:(23)  评论:(0)  加入收藏
概述以前参加过一个库存系统,由于其业务复杂性,搞了很多个应用来支撑。这样的话一份库存数据就有可能同时有多个应用来修改库存数据。比如说,有定时任务域xx.cron,和SystemA域...【详细内容】
2021-11-05  Tags: MySQL  点击:(31)  评论:(0)  加入收藏
▌简易百科推荐
作者:雷文霆 爱可生华东交付服务部 DBA 成员,主要负责Mysql故障处理及相关技术支持。爱好看书,电影。座右铭,每一个不曾起舞的日子,都是对生命的辜负。 本文来源:原创投稿 *爱可生...【详细内容】
2021-12-24  爱可生    Tags:MySQL   点击:(7)  评论:(0)  加入收藏
生成间隙(gap)锁、临键(next-key)锁的前提条件 是在 RR 隔离级别下。有关Mysql记录锁、间隙(gap)锁、临键锁(next-key)锁的一些理论知识之前有写过,详细内容可以看这篇文章...【详细内容】
2021-12-14  python数据分析    Tags:MySQL记录锁   点击:(18)  评论:(0)  加入收藏
binlog 基本认识 MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二...【详细内容】
2021-12-14  linux上的码农    Tags:mysql   点击:(13)  评论:(0)  加入收藏
为查询优化你的查询 大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被执行了多次的时候,这些查...【详细内容】
2021-12-09  元宇宙iwemeta    Tags:mysql   点击:(15)  评论:(0)  加入收藏
测试的目的和原因,公司有很多程序员,每个程序员对数据库和表结构都有自己的理解。而且每个程序员的理解往往是以效率考虑。既然都是为了效率考虑,那么我就来测试一下究竟哪种使...【详细内容】
2021-12-08  吴彬的分享    Tags:Mysql数据库   点击:(14)  评论:(0)  加入收藏
当你们考虑项目并发的时候,我在部署环境,当你们在纠结使用ArrayList还是LinkedArrayList的时候,我还是在部署环境。所以啊,技术不止境,我在部环境。今天这篇文章缕一下在同一台服...【详细内容】
2021-12-08  秃头码哥    Tags:MySQL数据库   点击:(17)  评论:(0)  加入收藏
对于数据分析来说,MySQL使用最多的是查询,比如对数据进行排序、分组、去重、汇总及字符串匹配等,如果查询的数据涉及多个表,还需要要对表进行连接,本文就来说说MySQL中常用的查询...【详细内容】
2021-12-06  笨鸟学数据分析    Tags:MySQL   点击:(21)  评论:(0)  加入收藏
在学习SQL语句之前,首先需要区分几个概念,我们常说的数据库是指数据库软件,例如MySQL、Oracle、SQL Server等,而本文提到的数据库是指数据库软件中的一个个用于存储数据的容器。...【详细内容】
2021-11-24  笨鸟学数据分析    Tags:SQL语句   点击:(23)  评论:(0)  加入收藏
概述以前参加过一个库存系统,由于其业务复杂性,搞了很多个应用来支撑。这样的话一份库存数据就有可能同时有多个应用来修改库存数据。比如说,有定时任务域xx.cron,和SystemA域...【详细内容】
2021-11-05  Java云海    Tags:分布式锁   点击:(31)  评论:(0)  加入收藏
MySQL的进阶查询 一、 按关键字排序 使用ORDERBY语句来实现排序排序可针对一个或多个字段ASC:升序,默认排序方式 【升序是从小到大】DESC:降序 【降序是从大到小】ORDER BY的...【详细内容】
2021-11-05  Java热点    Tags:SQL语句   点击:(28)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条