当前位置: 首页 >数据库 > mysql从5.5直接升级到5.7后,执行mysql_upgrade速度很慢且执行结束后数据目录大小增加一倍及 mysqlpump备份出现1577错误

mysql从5.5直接升级到5.7后,执行mysql_upgrade速度很慢且执行结束后数据目录大小增加一倍及 mysqlpump备份出现1577错误

mysql官网不支持夸大版本升级,比如跳过5.6直接升级到5.7,但由于一些客观原因,项目需要从5.5直接升级到5.7,以下是具体操作

1、备份之前mysql,(数据量少,可直接拷贝安装目录及data目录和配置文件,本例使用的为Percona XtraBackup工具进行的备份)

2、将data目录移出mysql5.5安装目录

3、解压mysql5.7版本

4、修改5.7需要配置文件my.cnf,添加datadir,指向5.5数据目录

5、初始化,该步骤可选,(新安装数据库,或者数据目录不存在,可执行如下命令初始化数据目录,本例中不需要执行如下操作)

bin/mysqld --initialize --user=mysql

6、执行ssl相关操作

bin/mysql_ssl_rsa_setup

7、启动mysql

8、此时数据目录还是5.5的,需要执行mysql_upgrade进行升级,在执行表修复前,需要确认一个参数innodb_file_per_table,mysql官网对该参数的解释如下

mysql从5.5直接升级到5.7后,执行mysql_upgrade速度很慢且执行结束后数据目录大小增加一倍及 mysqlpump备份出现1577错误 _ JavaClub全栈架构师技术笔记

该参数在5.5版本默认为OFF,所有表和索引都导入一个共享文件中,名为ibdata1,但在5.6.7及以后版本,改参数被默认设置为ON,即每张表都有对应的表和索引存储文件,每个schema下,每个frm文件都有对应的ibd文件。

在执行mysql_upgrade时,会修复系统表,并且如果该参数在5.5和5.7版本均使用默认值,则会将之前共享表和索引的存储方式改为每张表单独存储表和索引的形式,故会出现拷贝复制的操作,如果数据量比较大,则用时就会很长,

使用nnodb_file_per_table=1,及表和索引单独存储的优缺点,可查看mysql官网介绍。

9、使用mysql_upgrade检测并修复表

使用方法与mysql命令登录命令行一样,mysql会自动检测当前表并自动修复

mysql_upgrade -uroot -p

10、修复完成后,若发现mysql启动有server-key.pem相关的ssl错误,则是server-key.pem文件权限问题

chmod 644 server-key.pem

11、但此时若执行mysqlpum备份数据,可能会出现异常

mysqlpump --user=root --password mytest > mytest.sql

错误信息:

mysqlpump: [ERROR] (1577) Cannot proceed because system tables used by Event Scheduler were found damaged at server startDump process encountered error and will not continue.mysqlpump: [ERROR] (1577) Cannot proceed because system tables used by Event Scheduler were found damaged at server startDump process encountered error and will not continue.mysqlpump: [ERROR] (1577) Cannot proceed because system tables used by Event Scheduler were found damaged at server startDump process encountered error and will not continue.mysqlpump: [ERROR] (1577) Cannot proceed because system tables used by Event Scheduler were found damaged at server startDump process encountered error and will not continue.mysqlpump: [ERROR] (1577) Cannot proceed because system tables used by Event Scheduler were found damaged at server startDump process encountered error and will not continue.mysqlpump: [ERROR] (1577) Cannot proceed because system tables used by Event Scheduler were found damaged at server startDump process encountered error and will not continue.mysqlpump: [ERROR] (1577) Cannot proceed because system tables used by Event Scheduler were found damaged at server startDump process encountered error and will not continue.mysqlpump: [ERROR] (1577) Cannot proceed because system tables used by Event Scheduler were found damaged at server startDump process encountered error and will not continue.mysqlpump: [ERROR] (1577) Cannot proceed because system tables used by Event Scheduler were found damaged at server startDump process encountered error and will not continue.

解决方法:重启mysql服务 (本例中是这样解决的问题)

重新执行mysqlpump

Dump progress: 1/28 tables, 0/353 rowsDump progress: 36/343 tables, 0/19746 rowsDump progress: 180/343 tables, 6151/19746 rowsDump completed in 3675 milliseconds

数据被正确备份下来,且备份速度很快,从备份文件可以看到,内容与mysqldump备份有很多不同

本次只是简单尝试mysqlpump,待后续再对mysqlpump做深入了解

 

作者:大坑水滴
来源链接:https://www.cnblogs.com/qq931399960/p/10243758.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。





本文链接:https://www.javaclub.cn/database/117434.html

标签:MySQL升级
分享给朋友:

“mysql从5.5直接升级到5.7后,执行mysql_upgrade速度很慢且执行结束后数据目录大小增加一倍及 mysqlpump备份出现1577错误” 的相关文章