升级背景
生产环境基本都会是主备等结构,所以升级肯定是先升级从库,再进行切换,再升级主。
- 双主结构+vip升级方案:先升级其中一个主,保证主从同步状态正常,切换vip到另外一个主库上。轮换升级不停业务。
- 一主一从结构:先升级从库,停业务,再升级主库。
我们这里升级的为双主一从,主机为centos7
主从 | 节点 |
---|---|
master1 | 节点1 |
master2 | 节点2 |
slave1 | 节点3 |
其中master1和master2互为主从,slave1为master1的从
升级思路
- 首先升级master2,保证业务不停
- 关闭slave1,启动master2后 升级master1
- 最后升级slave1
升级步骤
- 下载最新的mysql包并上传至服务器
- 干净的关闭数据库,确保数据都已经落盘,并对已存在文件进行备份。
干净的关闭即为 使得数据库的事务日志都刷新到磁盘
数据库执行如下命令。
set global innodb_fast_shutdown=0;
shutdown;
exit;
目前我的数据库数据目录结构如下:
[root@hecs-x-medium-2-linux-20210702101106 data]# tree -L 3 mysql/
mysql/
├── data
│ └── 3306
│ ├── auto.cnf
│ ├── err.log
│ ├── ib_buffer_pool
│ ├── ibdata1
│ ├── ibtmp1
│ ├── mysql
│ ├── mysqld.pid
│ ├── mysqld.sock
│ ├── mysqld.sock.lock
│ ├── performance_schema
│ ├── private_key.pem
│ ├── public_key.pem
│ ├── slow.log
│ ├── sys
│ ├── test
│ ├── undo001
│ └── undo002
├── etc
│ └── 3306
│ └── my.cnf
├── log
│ ├── binlog
│ │ └── 3306
│ ├── redolog
│ │ └── 3306
│ └── relaylog
│ └── 3306
└── tmp
数据库可执行文件目录如下:
[root@hecs-x-medium-2-linux-20210702101106 opt]# tree -L 3 mysql/
mysql/
├── base
│ └── 5.7.32
│ ├── bin
│ ├── docs
│ ├── include
│ ├── lib
│ ├── LICENSE
│ ├── man
│ ├── mysql-5.7.34-linux-glibc2.12-x86_64
│ ├── README
│ ├── share
│ └── support-files
└── mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz
10 directories, 3 files
-
解压mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz 到/tmp下
-
mv /tmp/mysql-5.7.31-linux-glibc2.12-x86_64 /opt/mysql/base/5.7.31
-
启动MySQL服务
/opt/mysql/base/5.7.31/bin/mysqld_safe --defaults-file=/data/mysql//etc/3306/my.cnf --user=mysql3306 &
-
mysql_upgrade 命令升级字典表
/opt/mysql/base/5.7.31/bin/mysql_upgrade -uadmin -p -S /data/mysql/data/3306/mysqld.sock --default-character-set=utf8mb4
-
再次进入MySQL查看版本即可
网友评论