最近系统漏洞扫描,扫出来很多MySQL的漏洞,没有什么好的办法,先升级到最新版本。在梳理MySQL数据库信息时发现有一套zabbix用的MySQL版本是5.1.71的,现在的最新版本是5.7.17,版本跨越的太大了,不知道直接升级是否可行。库的数据量大概15G,于是就想先备份,备份完后用mysql_upgrade做升级。如果实在不行就再新创建一套库把数据导进去。

下面是在虚拟机上测试的升级步骤,中间也遇到了一些问题,不过好在最后还是升级成功了,说明这条路还是可行了。

操作系统版本RHEL 6.7 旧的MySQL版本5.1.71,新的MySQL版本5.7.17。

1、查看旧的MySQL版本,并创建测试数据库和测试表

mysql> select version();

+------------------+

| version()        |

+------------------+

| 5.1.71-community |

+------------------+

mysql> create database zx;

Query OK, 1 row affected (0.00 sec)

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| test               |

| zx                 |

+--------------------+

4 rows in set (0.00 sec)

mysql> use zx;

Database changed

mysql> create table test_upgrade (id int);

Query OK, 0 rows affected (0.07 sec)

......

mysql> select count(*) from test_upgrade;

+----------+

| count(*) |

+----------+

| 33554432 |

+----------+

1 row in set (0.00 sec)

现在test_upgrade表里有33554432条数据。

2、停止旧MySQL,并备份数据

[root@rhel6 mysql]# service mysql stop

Shutting down MySQL.. SUCCESS!

#这里直接用cp备份数据

[root@rhel6 lib]# cp -R mysql mysql_bak

[root@rhel6 lib]# du -sk mysql*

250880mysql

250880mysql_bak

3、安装新Msql软件,这里下载的是编译好的解压就可以使用

[root@rhel6 ~]# tar -zxvf mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz

#解压完后移动到/opt目录下

[root@rhel6 ~]# mv mysql-5.7.17-linux-glibc2.5-x86_64 mysql-5.7.17

[root@rhel6 ~]# mv mysql-5.7.17 /opt

[root@rhel6 ~]# cd /opt

[root@rhel6 opt]# chown -R mysql:mysql mysql-5.7.17/

[root@rhel6 opt]# ll

total 4

drwxr-xr-x. 9 mysql mysql 4096 Mar 22 21:07 mysql-5.7.17

4、修改my.cnf

主要修改basedir参数:

[root@rhel6 opt]# vi /etc/my.cnf

basedir=/opt/mysql-5.7.17

5、启动新MySQL

[root@rhel6 mysql-5.7.17]# ./bin/mysqld_safe &

1)启动报错1:

2017-03-22T13:12:39.131998Z 0 [ERROR] InnoDB: The Auto-extending innodb_system data file './ibdata1' is of a different size 640 pages (rounded down to MB) than specified in the .cnf file: initial 768 pages, max 0 (relevant if non-zero) pages!2017-03-22T13:12:39.132028Z 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error

2017-03-22T13:12:39.733953Z 0 [ERROR] Plugin 'InnoDB' init function returned error.

2017-03-22T13:12:39.733986Z 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.

2017-03-22T13:12:39.733994Z 0 [ERROR] Failed to initialize plugins.

2017-03-22T13:12:39.734000Z 0 [ERROR] Aborting

解决方法在my.cnf中的[mysqld]部分添加如下参数

innodb_data_file_path = ibdata1:10M:autoextend

再次启动

2)启动报错2:

2017-03-22T13:16:03.374717Z 0 [ERROR] unknown option '--skip-locking'

2017-03-22T13:16:03.374735Z 0 [ERROR] Aborting

解决方法从my.cnf中注释掉相关参数skip-locking

再次启动

3)启动报错3:

2017-03-22T13:18:20.278752Z 0 [ERROR] Fatal error: mysql.user table is damaged. Please run mysql_upgrade.

2017-03-22T13:18:20.278954Z 0 [ERROR] Aborting

5.7无法读取5.1的mysql.user表,解决方法使用--skip-grant-tables参数跳过授权验证

再次启动

[root@rhel6 mysql-5.7.17]# ./bin/mysqld_safe --skip-grant-tables&

启动成功

2017-03-22T13:20:23.919677Z 0 [Note] ./bin/mysqld: ready for connections.

Version: '5.7.17'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MySQL Community Server (GPL)

6、执行升级

[root@rhel6 mysql-5.7.17]# ./bin/mysql_upgrade -uroot

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.

sys.sys_config                                     OK

zx.test_upgrade                                    OK

Upgrade process completed successfully.

Checking if update is needed.

7、重启MySQL,并验证

[root@rhel6 mysql-5.7.17]# ./bin/mysqladmin -uroot -p shutdown

[root@rhel6 mysql-5.7.17]# ./bin/mysqld_safe &

mysql> select version();

+-----------+

| version() |

+-----------+

| 5.7.17    |

+-----------+

1 row in set (0.00 sec)

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| performance_schema |

| sys                |

| test               |

| zx                 |

+--------------------+

6 rows in set (0.00 sec)

mysql> select count(*) from zx.test_upgrade;

+----------+

| count(*) |

+----------+

| 33554432 |

+----------+

1 row in set (0.01 sec)

验证通过后,删除旧版本的MySQL软件。

mysql 5.1.71_MySQL升级从5.1.71到5.7.17相关推荐

  1. upgrade lnmpa php.sh,LNMP 状态管理命令说明及Nginx、MySQL/MariaDB、PHP升级教程

    状态管理命令分 LNmp状态管理命令 和 LNmpA状态管理命令,LNMPA代表的是Linux下Nginx.MySQL.PHP.Apache这种网站服务器架构,是结合LAMP与LNMP各自的优点而产生 ...

  2. 在CentOS上把MySQL从5.5升级到5.6

    在CentOS上把MySQL从5.5升级到5.6 摘要:本文记录了在CentOS 6.3上,把MySQL从5.5.28升级到5.6.19的过程. 1. 概述 在我做的一个项目中,最近我对生产服务器上的 ...

  3. mysql 5.1.61_MySQL数据库之将Mysql 5.1.61升级为mysql 5.6.19

    本文主要向大家介绍了MySQL数据库之将Mysql 5.1.61升级为mysql 5.6.19 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 环境:mysql-5.1.61 操 ...

  4. MySQL从5.5升级到5.6,TIMESTAMP的变化

    转载来自http://blog.csdn.net/ghsau. MySQL从5.5升级到5.6,TIMESTAMP的变化 TIMESTAMP在MySQL5.5中的行为 第一个未设置默认值的TIMEST ...

  5. mysql降级导入_mysql 升级和降级

    1 官方推荐的两种升级方式: in-place upgrade logical upgrade 2 升级之前: 备份所有数据库,包括系统库mysql [root@Darren1 ~]# mysqldu ...

  6. centos7恢复mysql数据库_MySQL数据库升级迁移填坑记

    原库:*.*.101.73/74 系统环境: Suse 12.4 MySQL: 5.7.29 新库:*.*.110.46/47 系统环境:CentOS7.7 64位 MySQL版本: 5.7.30 [ ...

  7. 华为云GaussDB(for MySQL)2.0全新升级,三大技术大揭秘

    摘要:9月23日,在华为全联接2021主会场,华为高级副总裁.华为云CEO.消费者云服务总裁张平安发表"深耕数字化,一切皆服务"主题演讲,并发布了GaussDB(for MySQL ...

  8. 更新mysql软件_MySQL软件升级

    1. 升级方式 1)就地升级:直接替换原安装目录文件和my.cnf配置文件,利用${MYSQL_HOME}/bin/mysql_upgrade脚本完成系统表的升级.(适用于夸小版本) 2)逻辑升级:利 ...

  9. Ubuntu 12.04.1 mysql从5.5升级到5.6

    Ubuntu 12.04.1 mysql从5.5升级到5.6 1 2 3 4 5 apt-cache search mysql-server sudo  apt-add-repository ppa: ...

  10. Mysql从5.0升级到 5.1.73

    近日因为一个特殊需要,对mysql进行升级. 因为担心数据迁移的差别大没有选择5.5. 而且服务器需要运行,不能拖的时间太长. 下载了官方win 32位安装版.安装的时候并没有停止原先的 mysql ...

最新文章

  1. remote 移除_remote模块的使用(四)
  2. ThinkCMF 5.1.0 发布:支持 swoole、协议变更为 MIT
  3. Qt操作SQLite数据库练习(20200215)
  4. java web开发小记(6)将int类型的list插入到mysql数据库
  5. Effective Java之努力使失败保持原子性(六十四)
  6. f450四轴使用技巧
  7. 51单片机智能小车循迹完整程序_电气与信息工程学院双创协会开展循迹小车培训...
  8. 为了适应云数据库mySQL产品_为了适应不同的应用场景,云数据库mysql版提供的产品系列包括哪些...
  9. Kibana 的安装(Windows版本)新手入门
  10. 理论基础 —— 查找 —— 平衡二叉树
  11. 项目背景怎么描述_培训回顾 |第六届“互联网+”之创业大赛项目计划书撰写
  12. 摄像模组中光学相关知识(一)
  13. 安卓开发中wifi连接打印机打印图片
  14. 2010年06期《程序员》配套源码及相关链接
  15. [汇编]汇编学习笔记(6):MASM32编译器编译链接16位汇编
  16. oeasy教您玩转vim - 3 - # 打开文件
  17. java爬虫爬取豆瓣电影_小爬虫之爬取豆瓣电影排行榜
  18. java response.write_response.write()区别response.getWrite().write()
  19. TensorFlow2 手把手教你实现自定义层
  20. 一个完全平方数是指一个数乘以自己,例:625=25^2; 特殊的完全平方数是指不仅是完全平方数而且平方后的数中有两个数字是相同的,例: 100=10^2; 144=12^2;

热门文章

  1. 刀片存储助力发挥融合基础架构优势
  2. oracle backup imp/exp
  3. 基于Linux平台Softimage XSI 演示
  4. Reporting Services Catalog Database File Existence error during installing SQL Server 2008 R2
  5. 说说封杀BT的几个理由
  6. Dreamweaver自动生成的垃圾代码
  7. GreenDao的学习和使用
  8. 未找到入口 app.json 文件,或者文件读取失败,请检查后重新编译。
  9. 楼层平面放线及标高实测记录_建筑平面图怎么看?教你这样看图,新手也能秒懂...
  10. 10月18号、19号、20号三天PC端云音乐项目总结