MySQL-主从复制环境升级小版本软件

步骤

离线方式
  • 主从替换二进制安装包为最新版本

  • 停从,通过mysql_upgrade升级后,加参数 --skip-slaves-start (不开启复制启动)进行启动从库 

  • 主库禁用二进制日志写入(skip-write-binlog),执行mysql_upgrade,然后正常方式重启主库

# 1. slave
mysql_upgrade
# 2. master
mysql_upgrade --skip-write-binlog 
在线升级
  • 升级从库
  • 主从切换
  • 再次按照从库升级方式完成集群中所有软件升级

实现细节(在线)

检查同步状态
show slave status G
show master status G
从库升级新版本软件
停止MySQL服务(slave端)
mysql -u root -p -e "stop slave;"

mysql -u root -p --execute="SET GLOBAL innodb_fast_shutdown=0" # 必须设置该参数

systemctl stop mysqld
冷备数据
cp -rp data data_$(date +%Y%M%D)
升级软件

先对slave进行升级

unlink mysql
tar -xf mysql-5.7.18-linux-glibc2.5-x86_64.zip
# 3. 创建软链接
ln -s mysql-5.7.18 mysql
# 4. 修改软件目录用户及用户组
chow -R mysql:mysql mysql-5.7.18
启动数据库服务
/usr/local/mysql/bin/mysqld_safe --user=mysql --defaults-file=/etc/my.cnf --skip-grant-tables --skip-networking &
升级数据字典
/usr/local/mysql/bin/mysql_upgrade --protocol=tcp -P 3308
检查数据库状态
select @@version();
status;
show slave statusG
show master statusG
主从切换
确认都已开启log_bin日志

确认主从都已开启log_bin

show variables like '%log_bin%';

-- 将主库设置成read_only模式
set global read_only=ON;
show variables like '%read_only%';
日志切换
flush tables;
flush logs;
show master status;
停止slave服务并开启写功能
stop slave;
set global read_only=off;
show variables like '%read_only%';
主从切换

原master端执行

# 基于binlog + position
CHANGE MASTER TO
MASTER_HOST='192.168.10.181',
MASTER_USER='sync',
MASTER_PASSWORD='sync',
MASTER_PORT=3308,
MASTER_LOG_FILE='b3308.000014',
MASTER_LOG_POS=852;

# 基于gtid
CHANGE MASTER TO
MASTER_HOST='192.168.10.181',
MASTER_USER='sync',
MASTER_PASSWORD='sync',
MASTER_PORT=3308,
master_auto_position=1;

start slave;
show slave statusG
按上面从库升级软件的步骤将新slave软件更新
原文地址:https://www.cnblogs.com/binliubiao/p/14804309.html