基于LINUX的MySql二进制本地升级实施文档

来源:这里教程网 时间:2026-03-01 16:35:57 作者:

升级数据库

MySql 安装分为两种,分为二进制安装和 RPM 包安装, RPM   包安装方式存在很大的局限性,即同一台物理主机或虚拟主机上不支持同时安装两套及以上不同版本的  MysQL   软件。如果一定要使用新 RPM 包介质升级,则必须先卸载老版本,再安装新版本。对于大多数原地升级的场景,推荐使用官方通用的二进制发行版安装包,或者用户定制源码编译的二进制包。

安装包下载: https://dev.mysql.com/downloads/mysql/   Looking for the latest GA version    选择对应的版本下载。下图为作者下载的包。

1.1    环境描述

当前版本为 5.7.27

需要升级的版本 5.7.37

安装目录: /usr/local/mysql

数据文件存放目录: /usr/local/mysql/data

升级后安装目录: /mysql/app/mysql-5.7.37

 

下载  MySQL   5.7.37 系列最新版本软件安装包,上传到目标位置,并配置环境变量,命令如下。

shell > mkdir -p /mysql/app/mysql-5.7.37

shell > tar -zxvf mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz --strip-components=1 -C /mysql/app/mysql-5.7.3

shell > echo 'export PATH=/mysql/app/mysql-5.7.37/bin:$PATH' >> $HOME/.bash_profile

 

1.3       提交或回滚分布式事务

如果当前 MySOL 使用了 InnoDB XA 分布式事务,那么在升级之前需要运行 XA

RECOVER 来检查未提交的 XA 事务。如果返回的结果中确实存在这类 XA 分布式事务,

则需要通过 XA commit 语句提交这类事务:

mysql > XA RECOVER;

mysql > XA COMMIT xid;

  或者通过 XA rollback 语句回滚这类 XA 分布式事务

mysql > XA ROLLBACK xid;

 

1.4       关闭源数据库

先将源库的 innodb_fast_shutdown 全局系统变量值设置为 0 ,命令如下:

mysql> set global innodb_fast_shutdown = 0;

     然后对 MySql 源库实例执行慢关闭,命令如下

[root@localhost ~]# mysqladmin -u root -p -S /var/lib/mysql/mysql.sock shutdown

注:/var/lib/mysql/mysql.sock 此文件可通过cat /etc/my.cnf 查看位置

如果您将 MySql 服务器作为服务运行,可用 service 停止服务:

[root@localhost ~]# service mysqld stop

 

1.5       备份原数据库安装目录

shell> mkdir -p /usr/local/mysql/databak

shell> mv /usr/local/mysql/data/*  /usr/local/mysql/databak

 

1.6       修改MySql参数

修改mysql 安装参数

[root@localhost ~]# vi /etc/my.cnf

#basedir=/usr/local/mysql

basedir=/mysql/app/mysql-5.7.37

将原先的安装目录注释,附上目标端目录

进入/etc/init.d/ ,将原先服务备份,并将目标实例复制过来。

[root@localhost bin]# cd /etc/init.d/

[root@localhost init.d]# mv mysqld mysqld_bak

[root@localhost init.d]# cp /mysql/app/mysql-5.7.37/support-files/mysql.server

 /etc/init.d/mysqld

修改mysqld 程序,加入安装目录,和数据目录

[root@localhost init.d]# vi /etc/init.d/mysqld

…………………

basedir=/mysql/app/mysql-5.7.37

datadir=/usr/local/mysql/data

…………………

赋予权限,并添加开机启动

[root@localhost init.d]# chmod +x /etc/init.d/mysqld

[root@localhost init.d]# chkconfig --add mysqld

[root@localhost init.d]# chkconfig --list mysqld

 

 

[root@localhost init.d]# service mysqld start

 

mysql_upgrade 会检查所有数据库中的所有表,查找与当前 MySQL 版本不兼容的地

方,还会升级 MySQL 系统数据库,以便利用新版本的权限或功能。这是整个升级流程中最

为重要的一步, MySQL 会对系统对象进行更新,从而让数据库能够充分利用新版本的功能

和特性。下面执行 mysql_upgrade 程序,检查并解决旧数据和新软件之间可能存在的任何不兼容问题:

[root@localhost init.d]# mysql_upgrade -u root -p -S /var/lib/mysql/mysql.sock

Enter password:

Checking if update is needed.

Checking server version.

Error: Server version (5.7.37) does not match with the version of

the server (5.7.27) with which this program was built/distributed. You can

use --skip-version-check to skip this check.

 

[root@localhost init.d]# mysql_upgrade -u root -p -S /var/lib/mysql/mysql.sock --skip-version-check

Enter password:

 

Upgrade process completed successfully.

Checking if update is needed.

 

[root@localhost ~]# vi .bash_profile

#export PATH=$PATH:/usr/local/mysql/bin

[root@localhost ~]# source .bash_profile

将原先的环境变量注释掉

[root@localhost ~]# mysql -V

mysql  Ver 14.14 Distrib 5.7.37, for linux-glibc2.12 (x86_64) using  EditLine wrapper

 

相关推荐