线上环境MySQL5.5升级至5.6
发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,本文主要记录了线上环境percona5.5.35升级到5.6.32-78.0的过程。欢迎转载,请注明作者、出处。 作者:张正 blog:http://space.itpub.net/26355921
千家信息网最后更新 2025年01月21日线上环境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安全错误
数据库的锁怎样保障安全
工作记录数据库
川羽网络技术怎么样
电脑怎么做成vpn服务器
对数据库自主知识产权的认识
cba广东数据库
2022年网络安全宣传周图片
警校网络安全什么学位
java应用软件开发工程师证书
服务器怎么才能启动端口号
世界互联网科技成果奖
剑三 服务器状态
宁波专业性网络技术服务价格
国家网络安全基地宿舍楼
电脑网络安全扩展
北京免费服务器虚拟主机
网络正常但串口服务器测试不通
网络安全目前形势
oracle数据库数据迁移
云浮软件开发培训班
北京服务器磁盘阵列卡安装
论国家网络安全的重要性
放视频 服务器失败
里斯加油站管理系统数据库密码
手机软件开发 作业
ssh登陆linux服务器脚本
磁盘管理器服务器不可用
网络安全传输在哪里
网络安全教案反思
阿里云服务器在哪买
互联网时代网络安全凸显重要