Linux6 将 mysql5.1 升级到 mysql8.0(yum源)

Linux6 将 mysql5.1 升级到 mysql8.0(yum源)

 由于我的mysql是5.1版本的,导入SQL时,字符编码是utf8mb4的,mysql得版本5.5以上才支持,故低版本的报错。

utf8与utf8mb4(utf8 most bytes 4)

  • MySQL 5.5.3之后增加了utfmb4字符编码
  • 支持BMP(Basic Multilingual Plane,基本多文种平面)和补充字符
  • 最多使用四个字节存储字符

utf8mb4是utf8的超集并完全兼容utf8,能够用四个字节存储更多的字符。

标准的UTF-8字符集编码是可以使用1-4个字节去编码21位字符,这几乎包含了世界上所有能看见的语言。
MySQL里面实现的utf8最长使用3个字符,包含了大多数字符但并不是所有。例如emoji和一些不常用的汉字,如“墅”,这些需要四个字节才能编码的就不支持。

将mysql 5.1 升级到 8.0

官网下载对应系统的yum源

 将rpm包上传到服务器,然后安装

# yum install mysql80-community-release-el6-3.noarch.rpm 
Loaded plugins: fastestmirror
Setting up Install Process
...

Installed:
  mysql80-community-release.noarch 0:el6-3                                           

Complete!

8.0版本的yum源配置后,进行升级操作,升级前确认已经备份好数据库及对应的配置文件。关掉mysql服务。

[root@centos6 download]# service mysqld stop
Stopping mysqld:                                           [  OK  ]
[root@centos6 download]# 

不需要卸载原来的mysql,使用“yum update”升级即可

[root@centos6 download]# yum update mysql-server
Loaded plugins: fastestmirror
Setting up Update Process
Loading mirror speeds from cached hostfile
...
=====================================================================================
 Package                        Arch      Version         Repository            Size
=====================================================================================
Installing:
 mysql-community-client         x86_64    8.0.19-1.el6    mysql80-community     47 M
     replacing  mysql.x86_64 5.1.73-8.el6_8
 mysql-community-devel          x86_64    8.0.19-1.el6    mysql80-community    7.8 M
     replacing  mysql-devel.x86_64 5.1.73-8.el6_8
 mysql-community-libs           x86_64    8.0.19-1.el6    mysql80-community    4.6 M
     replacing  mysql-libs.x86_64 5.1.73-8.el6_8
 mysql-community-libs-compat    x86_64    8.0.19-1.el6    mysql80-community    1.7 M
     replacing  mysql-libs.x86_64 5.1.73-8.el6_8
 mysql-community-server         x86_64    8.0.19-1.el6    mysql80-community    520 M
     replacing  mysql-server.x86_64 5.1.73-8.el6_8
Installing for dependencies:
 mysql-community-common         x86_64    8.0.19-1.el6    mysql80-community    727 k
 numactl                        x86_64    2.0.9-2.el6     base                  74 k

Transaction Summary
=====================================================================================
Install       7 Package(s)

Total download size: 582 M
...

Replaced:
  mysql.x86_64 0:5.1.73-8.el6_8            mysql-devel.x86_64 0:5.1.73-8.el6_8       
  mysql-libs.x86_64 0:5.1.73-8.el6_8       mysql-server.x86_64 0:5.1.73-8.el6_8      

Complete!

升级后启动,会发现启动失败。

[root@centos6 download]# service mysqld start
MySQL Daemon failed to start.
Starting mysqld:                                           [FAILED]

查看日志

[root@centos6 ~]# tail /var/log/mysqld.log
2020-03-04T08:13:26.769860Z 0 [ERROR] [MY-010119] [Server] Aborting
2020-03-04T08:13:26.770601Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.19)  MySQL Community Server - GPL.
2020-03-04T08:17:11.990871Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.19) starting as process 8227
2020-03-04T08:17:12.009990Z 1 [System] [MY-011012] [Server] Starting upgrade of data directory.
2020-03-04T08:17:12.075334Z 1 [ERROR] [MY-012263] [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!
2020-03-04T08:17:12.075438Z 1 [ERROR] [MY-012930] [InnoDB] Plugin initialization aborted with error Generic error.
2020-03-04T08:17:12.573744Z 1 [ERROR] [MY-011013] [Server] Failed to initialize DD Storage Engine.
2020-03-04T08:17:12.573957Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
2020-03-04T08:17:12.574061Z 0 [ERROR] [MY-010119] [Server] Aborting
2020-03-04T08:17:12.574769Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.19)  MySQL Community Server - GPL.

解决方法
# cd /var/lib/mysql
#rm -rf /var/lib/mysql/ib*
主要删除:ibdata1、ib_logfile0、ib_logfile1文件
之前有安装mysql-server5.1删除文件重构后,异常解决。

重启验证

[root@centos6 mysql]# /etc/init.d/mysqld restart
Stopping mysqld:                                           [  OK  ]
Initializing MySQL database:                               [  OK  ]
Starting mysqld:                                           [  OK  ]

查看mysql版本

[root@centos6 mysql]# mysql -V
mysql  Ver 8.0.19 for Linux on x86_64 (MySQL Community Server - GPL)

说明已经升级成功,重新导入之前备份的数据库文件,即可使用。

原文地址:https://www.cnblogs.com/zwj-linux/p/12410312.html