线上环境MySQL5.5升级至5.6
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本文主要记录了线上环境percona5.5.35升级到5.6.32-78.0的过程。欢迎转载,请注明作者、出处。 作者:张正 blog:http://space.itpub.net/26355921
千家信息网最后更新 2026年11月02日线上环境MySQL5.5升级至5.6
本文主要记录了线上环境percona5.5.35升级到5.6.32-78.0的过程。
欢迎转载,请注明作者、出处。 作者:张正 blog:http://space.itpub.net/26355921 QQ:176036317 如有疑问,欢迎联系。
因需要对线上一组服务器做迁移,而且之前的版本是5.5.35,迁移后的版本为5.6.32-78.0,使用搭建级联从库的方式,然后做切换。使用xtrabackup备份恢复出来,5.6的版本 错误日志中频繁报错:
因为数据文件是percona5.5的,直接恢复到5.6,有些系统表不一致,因此需要做升级。查阅官方文档后,给出了升级条件,如下:
满足条件后,即可进行升级,同样官方文档给出的步骤如下:
实际操作步骤:
1、服务器上percona5.6相关软件已经安装好
2、关闭该实例,然后使用mysqld 加上--skip-grant-tables启动mysqld
3、使用mysql_upgrade --socket=/data/mysqlxxxx/mysqldxxxx.sock
结果报错:
仔细检查后,发现是因为performance_schema数据库目录下 有其他非 数据库文件,因此mysql_upgrade删除时报错,手动删除performance_schema目录下的非数据库文件后,再次执行升级,这一步过了,但是又发生了报错:
是因为root权限问题,mysqld开启了--skip-grant-tables,应该是不需要密码得。但是在执行mysql_upgrade时,到了一定步骤,总是会报这样的错,因此建议使用mysql_upgrade时,一般都给加上root的用户名密码。再次执行:
mysql_upgrade -uroot -pxxxxx --socket=/data/mysqlxxxx/mysqldxxxx.sock
.......................
xxxxxxx....... ok
OK
4、重启mysqld
至此,percona5.5 至 percona5.6升级完毕。
检查一下错误日志,发现没有报错了。
注意:如果主库是5.5版本,从库是5.6版本,在从库的错误日志中会发现报错:
[Warning] Slave I/O: Unknown system variable 'SERVER_UUID' on master. A probable cause is that the variable is not supported on the master (version: 5.5.35-33.0-log), even though it is on the slave (version: 5.6.32-78.0-log), Error_code: 1193
查阅相关文章,说这个不用担心:http://bugs.mysql.com/bug.php?id=68164
本文主要记录了线上环境percona5.5.35升级到5.6.32-78.0的过程。
欢迎转载,请注明作者、出处。 作者:张正 blog:http://space.itpub.net/26355921 QQ:176036317 如有疑问,欢迎联系。
因需要对线上一组服务器做迁移,而且之前的版本是5.5.35,迁移后的版本为5.6.32-78.0,使用搭建级联从库的方式,然后做切换。使用xtrabackup备份恢复出来,5.6的版本 错误日志中频繁报错:
| 7fc52806d700 InnoDB: Error: Fetch of persistent statistics requested for table "xxx"."xxx" but the required system tables mysql.innodb_table_stats and mysql.innodb_index_stats are not present or have unexpected structure. Using transient stats instead. |
因为数据文件是percona5.5的,直接恢复到5.6,有些系统表不一致,因此需要做升级。查阅官方文档后,给出了升级条件,如下:
| 将5.5的文件 upgrade成5.6版本(in place upgrade) 1、crash后的实例不应该直接做升级,应该先做crash recovery,然后再做升级 2、之前的percona-server 数据页不是16K的也不建议做升级 3、如果5.5版本中innodb_fast_checksum开启,则无法使用in place upgrade |
满足条件后,即可进行升级,同样官方文档给出的步骤如下:
| 1、安装percona5.6版本的server、client、shared 2、使用--skip-grant-tables 启动 3、使用mysql_upgrade升级 4、重启实例(不加--skip-grant-tables,正常启动) If it can't find the pid file, kill the server and start it normally: $ killall /usr/sbin/mysqld $ /sbin/service mysql start |
实际操作步骤:
1、服务器上percona5.6相关软件已经安装好
2、关闭该实例,然后使用mysqld 加上--skip-grant-tables启动mysqld
3、使用mysql_upgrade --socket=/data/mysqlxxxx/mysqldxxxx.sock
结果报错:
| mysql.columns_priv OK mysql.db OK mysql.event OK mysql.func OK mysql.general_log 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.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 Running 'mysql_fix_privilege_tables'... ERROR 1010 (HY000) at line 150: Error dropping database (can't rmdir './performance_schema/', errno: 17) ERROR 1007 (HY000) at line 155: Can't create database 'performance_schema'; database exists FATAL ERROR: Upgrade failed |
仔细检查后,发现是因为performance_schema数据库目录下 有其他非 数据库文件,因此mysql_upgrade删除时报错,手动删除performance_schema目录下的非数据库文件后,再次执行升级,这一步过了,但是又发生了报错:
| mysql.columns_priv OK mysql.db OK mysql.event OK mysql.func OK mysql.general_log 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.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 Running 'mysql_fix_privilege_tables'... Running 'mysqlcheck' with connection arguments: '--socket=/data/mysql3307/data/mysqld3307.sock' mysqlcheck: Got error: 1045: Access denied for user 'root'@'localhost' (using password: NO) when trying to connect FATAL ERROR: Error during call to mysql_check for fixing the db/tables names on all db(s) except mysql |
是因为root权限问题,mysqld开启了--skip-grant-tables,应该是不需要密码得。但是在执行mysql_upgrade时,到了一定步骤,总是会报这样的错,因此建议使用mysql_upgrade时,一般都给加上root的用户名密码。再次执行:
mysql_upgrade -uroot -pxxxxx --socket=/data/mysqlxxxx/mysqldxxxx.sock
.......................
xxxxxxx....... ok
OK
4、重启mysqld
至此,percona5.5 至 percona5.6升级完毕。
检查一下错误日志,发现没有报错了。
注意:如果主库是5.5版本,从库是5.6版本,在从库的错误日志中会发现报错:
[Warning] Slave I/O: Unknown system variable 'SERVER_UUID' on master. A probable cause is that the variable is not supported on the master (version: 5.5.35-33.0-log), even though it is on the slave (version: 5.6.32-78.0-log), Error_code: 1193
查阅相关文章,说这个不用担心:http://bugs.mysql.com/bug.php?id=68164
升级
版本
数据
文件
实例
数据库
日志
步骤
错误
作者
再次
官方
密码
建议
文档
服务器
条件
目录
服务
检查
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
博彦科技互联网金融
伟宏互联网科技
为想互联网科技怎么样
互联网 的科技创新
互联网与未来科技
成都狮子座互联网科技
人人互联网科技是培训
华脉科技工业互联网产品
济南和联互联网科技有限公司
北京大学互联网科技怎么样
互联网时代科技改变生活
深圳育鹏互联网科技有限公司招聘
中国互联网十大科技股排名
本届互联网博览会上的黑科技
996高科技互联网公司
玉溪新华互联网科技好不好
群盈汇互联网科技有限公司
众联互联网络科技
互联网科技对化妆品行业
互联网科技快速发展优美句子
奇酷互联网科技公司
成都互联网科技公司
奇士达互联网科技
现代科技和互联网有关系吗
科技互联网的估值
移动互联网年度科技创新
为客找房互联网科技公司怎么样
北京市互联网新科技
互联网科技融合创新
国产互联网科技公司