线上环境MySQL5.5升级至5.6
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,本文主要记录了线上环境percona5.5.35升级到5.6.32-78.0的过程。欢迎转载,请注明作者、出处。 作者:张正 blog:http://space.itpub.net/26355921
千家信息网最后更新 2025年11月07日线上环境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安全错误
数据库的锁怎样保障安全
access数据库重点总结
网络安全教育日主题有几个方面
广西广电网络技术员
要求建立统一高效的网络安全
vpn服务器 网对网
软件开发的系统运行维护方案
安微统计年鉴数据库
达梦数据库授权文件在哪
数据库技术外文翻译
2021上半年网络安全业绩
戴尔电脑怎么退出服务器
软件开发测试计划任务书
软件开发行业辛苦吗
web数据库黑客技术
数据库添加字段怎么维护
地下管线数据库更新与实践
软件开发渠道出售
软件开发一个公式多少钱
应用软件开发区美食
深圳市华科网络技术有限公司
e5服务器主机电源价格
工行软件开发中心工软精英
浪潮服务器管理ip
喜欢追求软件开发
上海挖媒网络技术
津南区数据网络技术售后服务
专业的网络安全上市公司
大数据与网络安全是学啥的
dell t430服务器
继承者计划软件开发