设为首页 加入收藏

TOP

MySQL升级从5.1.71到5.7.17(一)
2017-03-30 14:17:14 】 浏览:523
Tags:MySQL 升级 5.1.71 5.7.17

最近系统漏洞扫描,扫出来很多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*
250880  mysql
250880  mysql_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、执行升级


[roo

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Oracle中Hint被忽略的几种常见情形 下一篇Oracle固定SQL的执行计划(一)---S..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目