mariadb全量恢复从库脚本

Posted 雅冰石

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mariadb全量恢复从库脚本相关的知识,希望对你有一定的参考价值。

一 需求描述

有时mariadb主从复制出现问题,找不到解决办法的时候,可使用主库数据恢复从库,重新配置主从复制

二 脚本内容

需要在从库执行该脚本,且执行该脚本前注意修改脚本里Usr和Pwd的变量值为自己环境的复制用户账号密码

: << !
a.脚本用途:
 此脚本用于拿主库备份全量恢复mariadb从库,当从库复制出问题,实在没有其他办法处理时,可在从库上执行该脚本重配主从复制(请谨慎操作,该操作会将从库数据库删除再重建)。
b.脚本使用说明:
 sh recoverySlave.sh 参数1 参数2 参数3 参数4
 参数含义介绍:
  参数1:主库ip
  参数2:主库端口
  参数3:从库端口
  参数4:主库root密码
!

if [[ $1  = "" ]] || [[ $2  = "" ]] || [[ $3  = "" ]] || [[ $4  = "" ]]
then
    echo '请在调用该脚本时传入四个参数(主库ip,主库端口,从库端口,主库root密码)'
    exit
else
    Master=$1
    Usr=复制用户
    Pwd=复制用户的密码
    MasterPort=$2
    SlavePort=$3
    RootPwd=$4
    date=`date "+%Y%m%d%H%M"`
    
    export LANG=en_US
    echo '1.备份主库...'
    mysqldump --all-databases --master-data=1 --gtid --single-transaction -uroot -p$RootPwd -h$Master -P $MasterPort >/tmp/data.sql_$date
    
    echo '2.停掉从库复制...'
    mysql -uroot -P $SlavePort -p${RootPwd}<<!
    stop slave;
    reset master;
!
    
    echo '3.用主库数据恢复从库...'
    mysql -uroot -p${RootPwd} -P $SlavePort </tmp/data.sql_$date
    
    echo '4.配置从库复制...'
    mysql -uroot -P $SlavePort -p${RootPwd}<<!
    CHANGE MASTER TO master_host='$Master',
    master_port=$MasterPort,
    master_user='$Usr', master_password='$Pwd',MASTER_USE_GTID=slave_pos;
    start slave;
    flush privileges;
!
    
    sleep 5
    echo '5.检查主从复制状态...'
    mysql -uroot -p${RootPwd} -P $SlavePort -e "show slave status \\G;"
fi

以上是关于mariadb全量恢复从库脚本的主要内容,如果未能解决你的问题,请参考以下文章

XtraBackup全量备份与恢复MySQL数据

MySQL 主从复制备份策略

7 MSSQL数据库备份与恢复

快速恢复slave从库的几张表

企业生产环境shell脚本案例分享

mariadb(mysql)从库relaylog损坏无法同步的处理方法