mysql5.7.34升级到5.7.39(主从)

目录

一.准备

1.哈希值和备份数据脚本

2.停止主从

二.升级从数据库

1.升级

2.测试

3.启动主从

三.升级主数据库

1.第一步备份

2.第二步升级

3.第三步测试

四.回滚方案

1.先回退数据库

2.重新启动数据库,导入原先备份数据。


一.准备

1.哈希值和备份数据脚本

注:用来测试数据库是否有问题,这里把每个库的每个表的元组的数值拷贝下来

~]# vim mysql.sh
#!/bin/bash
USER="root"                # 输入用户
PORT=3306                  # 端口
PASSWORD="mysql_P@s5"      # 密码
HOST="172.17.0.142"        # 数据库ip
DB_md=`mysql -uroot -p"mysql_P@s5" --default-character-set=utf8mb4 -e "show databases"|grep -Ev "^(Database|mysql|performance_schema|information_schema|sys)$"|xargs`  # 所有库名
DB="show databases"         # 查看数据库名
TB="show tables"            # 查看表名
mysql -u$USER -p$PASSWORD -e 'show processlist;' > list.txt    # 最大连接数
mysql -V >> list.txt                                           # 系统版本
back() {       
# 准备哈希值           
if [ -e count_sum.txt ];then
   touch count_sum.txt
else
   rm -rf  count_sum.txt &&  touch count_sum.txt
fi
for i in `mysql -u$USER -p$PASSWORD -P$PORT -h$HOST -e "$DB"`
do
    for j in `mysql -u$USER -p$PASSWORD -P$PORT -h$HOST -D $i --skip-column-names -e "$TB" `
    do
        su=`mysql -u$USER -p$PASSWORD -P$PORT -h$HOST -D $i --skip-column-names -e "select count(*) from $j"`
        echo -e ${i}:${j}:${su} >> count_sum.txt
    done
    echo -e "\n++++++++++++++++++++++++++++++++" >> count_sum.txt
done
 
# 备份数据库数据
/usr/local/mysql/bin/mysqldump -u${USER}  -p${PASSWORD} --default-character-set=utf8mb4 --single-transaction --master-data=2 --insert-ignore --force -q --databases ${DB_md} > bak.sql 2> /dev/null
}
back

2.停止主从

# 从数据库上执行
~]# mysql -uroot -pmysql_P@s5 -e 'show slave status\G;' ##在从库停止主从连接
~]# mysqladmin -usystem -pmysql_P@s5 shutdown  
​
##关闭服务# 从数据库上执行
~]# mysql -uroot -pmysql_P@s5 -e 'show slave status\G;' ##在从库停止主从连接~]# mysqladmin -usystem -pmysql_P@s5 shutdown ##关闭服务

二.升级从数据库

1.升级

# 下载软件
~]# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz
 
# 解压
~]# gunzip mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz
~]# tar -xf mysql-5.7.39-linux-glibc2.12-x86_64.tar
 
# 指定目录地址
~]# cp -r mysql-5.7.39-linux-glibc2.12-x86_64  /usr/local/
 
# 备份原来的数据库
~]# cp -r /usr/local/mysql /usr/local/mysql-5.7.34 
 
# 把升级的数据库链接到原来的数据库
~]# ln -s /usr/local/mysql-5.7.39-linux-glibc2.12-x86_64/ /usr/local/mysql
 
# 需修改配置
~]# vim /etc/my.cnf
slow_query_log = 1         # 0.5需修改为1
myisam_repair_threads = 1  # 删除myisam_repair_threads = 1
 
##启动服务
~]# /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf

2.测试

##检查更新表结构冲突
~]# /usr/local/mysql/bin/mysql_upgrade -usystem -pxxxx-S /data/mysql/mysql.sock --skip-version-check 
 ##查看数据库版本(查看数据库与之前的版本)
~]# /usr/local/mysql/bin/mysql -V
~]# mysql  -uroot -pmysql_P@s5 -e 'select version();' ##sql查看数据库版本
~]# cat list.txt
~]#  mv count_sum.txt count_sum-src.txt   # 把准备行数文件转移
# 把数据备份哪一行删除,然后执行
~]# bash mysql.sh              
~]# sha512sum  count_sum.txt && sha512sum count_sum-src.txt   # 对比 
 
## 登录从库后   ##
~]# mysql -uroot -pmysql_P@s5
## 创建测试数据库
> CREATE DATABASE IF NOT EXISTS ceshi DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
> use ceshi;
##创建测试表
> create table test(id int(10) primary key auto_increment,
name varchar(100) not null,
age int(4))ENGINE=InnoDB DEFAULT CHARSET=utf8;  
# 查询
> desc test;
 
##删除测试数据库##
> DROP DATABASE ceshi;

3.启动主从

~]# mysql -uroot -pmysql_P@s5
> start slave;             ##启动主从
> show slave status\G;   ##查看主从状态

三.升级主数据库

1.第一步备份

~]# bash  mysql.sh
~]# mysqladmin -usystem -pmysql_P@s5 shutdown  ##关闭服务

2.第二步升级

# 下载软件
~]# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz
 
# 解压
~]# gunzip mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz
~]# tar -xf  mysql-5.7.39-linux-glibc2.12-x86_64.tar
 
# 指定目录地址
~]# cp -r mysql-5.7.39-linux-glibc2.12-x86_64  /usr/local/
 
# 备份原来的数据库
~]# cp -r /usr/local/mysql /usr/local/mysql-5.7.34 
 
# 把升级的数据库链接到原来的数据库
~]# ln -s /usr/local/mysql-5.7.39-linux-glibc2.12-x86_64/ /usr/local/mysql
 
# 需修改配置
~]# vim /etc/my.cnf
slow_query_log = 1         # 0.5需修改为1
myisam_repair_threads = 1  # 删除myisam_repair_threads = 1
  
##启动服务
~]# /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf

3.第三步测试

##检查更新表结构冲突
~]# /usr/local/mysql/bin/mysql_upgrade -usystem -pxxxx -S /data/mysql/mysql.sock --skip-version-check 
 ##查看数据库版本(查看数据库与之前的版本)
~]# /usr/local/mysql/bin/mysql -V
~]# mysql  -uroot -pmysql_P@s5 -e 'select version();' ##sql查看数据库版本
~]# cat list.txt
~]#  mv count_sum.txt count_sum-src.txt   # 把准备行数文件转移
# 把数据备份哪一行删除,然后执行
~]# bash mysql.sh              
~]# sha512sum  count_sum.txt && sha512 count_sum-src.txt   # 对比  
 
## 登录从库后   ##
~]# mysql -uroot -pmysql_P@s5
## 创建测试数据库
> CREATE DATABASE IF NOT EXISTS ceshi DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
> use ceshi;
##创建测试表
> create table test(id int(10) primary key auto_increment,
name varchar(100) not null,
age int(4))ENGINE=InnoDB DEFAULT CHARSET=utf8;  
# 查询
> desc test;
##删除测试数据库##
> DROP DATABASE ceshi;

四.回滚方案


1.先回退数据库

##关闭服务
~]# mysqladmin -usystem -pmysql_P@s5 shutdown 
# 备份升级的数据库
~]# cp -r /usr/local/mysql /usr/local/mysql-5.7.39-linux-glibc2.12-x86_64.tar 
 
# 恢复之前升级备份的数据库
~]# cp -r /usr/local/mysql-5.7.34   /usr/local/mysql
 
##启动服务
~]# /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf

2.重新启动数据库,导入原先备份数据。

# 登录数据库并导入数据
~]# mysql -uroot -pmysql_P@s5
> source /data/mysql.back/bak.sql
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值