第一部分数据库备份
在升级数据库之前,首先对数据库进行备份。可以采用冷备或热备。
1.1冷备
如果服务器有足够的时间能够停机进行备份操作,可以直接采用冷备的方式。在将数据库关闭之后,直接将数据目录复制到备份目录中。
shell> mkdir -p /var/lib/mysql2 shell> cp /var/lib/mysql/* /var/lib/mysql
注意:冷备前需要先查看配置文件,确认数据库的所有文件是否都在数据目录中,部分日志有没有设置到其他目录中。
1.2逻辑热备
mysqldump是MySQL自带的备份工具,我们只需要直接使用就行。
shell> mysqldump -uroot -pAbcd321# --single-transaction --master-data=2 -E -R --all-databases >full.sql
使用上述命令备份全库至指定目录。
shell> tail -1 full.sql -- Dump completed on 2020-10-29 9:23:04
若最后输出Dump completed on,则说明备份成功。
1.3物理热备
下载XtraBackup 2.4:使用https: // www.percona.com/downloads/Percona-XtraBackup-2.4/LATEST/,登入官网XtraBackup 2.4下载区,下载最新版本的二进制包。在Linux系统上传介质包percona-xtrabackup-2.4.20-Linux-x86_64.el7.tar.gz,创建/Xtrabackup目录。
shell> mkdir -p /Xtrabackup sftp> cd /Xtrabackup sftp> put percona-xtrabackup-2.4.20-Linux-x86_64.el7.tar.gz
解压介质包,并设置环境变量。
shell> cd /Xtrabackup/ shell> tar zxf percona-xtrabackup-2.4.20-Linux-x86_64.el7.tar.gz shell> cd percona-xtrabackup-2.4.20-Linux-x86_64/bin/ shell> pwd /Xtrabackup/percona-xtrabackup-2.4.20-Linux-x86_64/bin shell> vi /root/.bash_profile export PATH=/Xtrabackup/percona-xtrabackup-2.4.20-Linux-x86_64/bin:$PATH shell> source /root/.bash_profile shell> su -
至此,Percona Xtrabackup部署完成。然后开始备份。
shell> mkdir /Xtrabackup/backup shell> xtrabackup --defaults-file=/etc/my.cnf -uroot -pAbcd321# --backup --target-dir=/Xtrabackup/backup ...... 201029 09:32:42 completed OK!
最后输出completed OK!,则说明备份成功。
第二部分升级数据库
就地升级包括关闭旧的MySQL服务器,用新的二进制包替换旧的二进制包,在现有数据目录上重新启动MySQL,以及升级现有安装中需要升级的剩余部分。
2.1升级前准备
打开mysql官网下载页面:https: // dev.mysql.com/downloads/mysql/,下载要升级的对应版本的数据库,并上传到指定目录。检查你的升级路径,数据库升级不支持跳过版本的升级,例如,不支持直接从MySQL 5.5升级到5.7。建议先升级到最新版本,再升级到下一版本。支持在发行系列中进行升级。检查你的配置文件,查看参数设置是否与新版本的数据库兼容。
2.2提交或回滚分布式事务
如果在InnoDB中使用XA事务,请在升级之前运行XA RECOVER以检查未提交的XA事务。如果有返回结果,则通过发出XA COMMIT或 XA ROLLBACK语句来提交或回滚XA事务。
mysql> XA RECOVER; mysql> XA COMMIT xid;
2.3配置慢关机
如果您使用InnoDB,请通过InnoDB_fast_shutdown配置MySQL执行慢关机。
mysql> set global innodb_fast_shutdown=0;
2.4关闭原数据库
RPM安装的MySQL可用service停止服务:
shell> service mysqld stop
mysqld为默认的服务名。
2.5备份配置文件
检查配置文件,查看升至新版本是否有过期的参数选项并备份。
shell> cp /etc/my.cnf /etc/my.cnf.bak
2.6解压新版RPM包
打开MySQL官网的下载区https://dev.mysql.com/downloads/mysql/,下载MySQL5.7.33,并上传到Linux的指定路径。创建新的安装目录,并将新版本的数据库解压到安装目录中:
shell> mkdir /root/base shell> cd /root/base shell> tar -xvf mysql-5.7.33-1.el7.x86_64.rpm-bundle.tar
2.7MySQL RPM安装必备依赖包
MySQL在安装RPM包时,会需要许多依赖包,提前安装好所需的依赖包。如果在安装步骤已经安装过了可以跳过。
shell> yum install -y gcc* gcc-c++ ncurses* ncurses-devel* cmake* make* perl* bison* libaio-devel* libgcrypt*
2.8卸载操作系统中的冲突包
操作系统中的mariadb-libs包会在MySQL安装RPM包时产生冲突。
shell> rpm -qa|grep -i mariadb-libs mariadb-libs-5.5.68-1.el7.x86_64 shell> rpm -e mariadb-libs-5.5.68-1.el7.x86_64 --nodeps
2.9升级数据库
直接运行下列语句完成安装。注意,RPM包之间有相互依赖关系,所以不能分开安装。
shell> rpm -Uvh mysql-community-common-5.7.33-1.el7.x86_64.rpm mysql-community-libs-5.7.33-1.el7.x86_64.rpm mysql-community-devel-5.7.33-1.el7.x86_64.rpm mysql-community-client-5.7.33-1.el7.x86_64.rpm mysql-community-server-5.7.33-1.el7.x86_64.rpm
2.10重启数据库
升级后,my.cnf将丢失,将备份的配置文件覆盖回去,并启动MySQL:
shell> cp /etc/mysql.cnf.bak /etc/my.cnf shell> service mysqld start
安装完成后,对数据库进行mysql_upgrade -uroot -p 升级检查,看是否升级成功。
