一、数据库备份
在升级数据库之前,首先对数据库进行备份。可以采用冷备或热备。
1.1 冷备
如果服务器有足够的时间能够停机进行备份操作,可以直接采用冷备的方式。在将数据库关闭之后,直接将数据目录复制到备份目录中。
shell> mkdir -p /mysql/mysql572/product shell> cp /mysql/mysql57/product/* /mysql/mysql572/product
注意:冷备前需要先查看配置文件,确认数据库的所有文件是否都在数据目录中,部分日志有没有设置到其他目录中。
1.2 逻辑热备
mysqldump是MySQL自带的备份工具,我们只需要直接使用就行。
shell> /mysql/mysql57/app/bin/mysqldump -uroot -pAbcd321# -S /mysql/product/mysql57/data/mysql.sock --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:
使用ht tps: // 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=/mysql/mysql57/app/my.cnf -uroot -pAbcd321# -S /mysql/mysql57/product/data/mysql.sock --backup --target-dir=/Xtrabackup/backup ...... 201029 09:32:42 completed OK!
最后输出completed OK!,则说明备份成功。
二、本地升级
就地升级包括关闭旧的MySQL服务器,用新的二进制包替换旧的二进制包,在现有数据目录上重新启动MySQL,以及升级现有安装中需要升级的剩余部分。
2.1 升级前准备
打开mysql官网下载页面: https: //downloads.mysql.com/archives/community/,下载要升级的对应版本的数据库,并上传到指定目录。
检查你的升级路径,数据库升级不支持跳过版本的升级,例如,不支持直接从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 关闭原数据库
在关闭数据库时,需要使用对应数据库的命令:
shell> /mysql/mysql57/app/bin/mysqladmin -uroot -pAbcd321# -S /mysql/product/mysql57/data/mysql.sock shutdown
如果您将MySQL服务器作为服务运行,可用service停止服务:
shell> service mysqld57 stop
2.5 移走原数据库安装目录
shell> mkdir -p /mysql/mysql572/app shell> mv /mysql/mysql57/app/* /mysql/mysql572/app/
2.6 解压新的数据库
将新版本的数据库解压到原来的安装目录中:
shell> tar zxvf mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz -C /mysql/mysql57/app --strip-components=1
2.7 启动数据库服务
用新的数据目录和旧的数据目录启动数据库服务。
shell> mysqld_safe --defaults-file=/mysql/mysql57/app/my.cnf --user=mysql &
如果您将MySQL服务器作为服务运行,请重新设置数据库服务:
shell> cp /mysql/mysql57/app/support-files/mysql.server /etc/init.d/mysqld57 shell> vi /etc/init.d/mysqld57 basedir=/mysql/mysql57/app datadir=/mysql/mysql57/product/data shell> service mysqld57 start
2.8 升级数据库
mysql_upgrade检查所有数据库中的所有表是否与当前版本的MySQL不兼容。mysql_upgrade还会升级 mysql系统数据库,以便您可以利用新的特权或功能。
shell> mysql_upgrade -uroot -pAbcd321# -S /mysql/mysql57/product/data/mysql.sock ...... OK
最后如果弹出了OK输出,则说明升级数据库成功。
2.9 重启数据库
关闭并重新启动MySQL服务器,以确保对系统表所做的所有更改均生效:
shell> mysqladmin -uroot -pAbcd321# -S /mysql/mysql57/product/data/mysql.sock shutdown shell> mysqld_safe --defaults-file=/mysql/mysql57/app/my.cnf --user=mysql &
