MySQL备份MySQL(总)

华为云RDS恢复到本地脚本

2019-08-07  本文已影响3人  飞翔的Tallgeese

前置工作:完成qpress的安装

#wget不能直接完成下载提示406错误的话,直接windows连接到http://www.quicklz.com去执行下载后上传到linux服务器

cd ~

wget http://www.quicklz.com/qpress-11-linux-x64.tar

tar -xf qpress-11-linux-x64.tar

mv qpress /usr/bin/

#创建一个恢复用的目录,线上的qp文件和下面的脚本文件都放到该目录下

mkdir -p /home/run

cd /home/run


备注

1.华为云拥有super权限的账户不是root@localhost,而是rdsAdmin@localhost

2.华为的binlog备份非常反人类,每5分钟就生成一个,而且根据他们客服的说法,这个参数还没法改(我就想问阿里每6小时生成1个是怎么做到的,没法改?EXO?),如果把库恢复到某个时间点(恢复到线下的那种),最糟糕的情况下,你需要下载12*24=288个binlog文件,简直是灾难


脚本如下

#!/bin/bash

#      2019.8.5

#      FlyDido

#      物理恢复华为RDS的全量备份

pid=`ps -ef|grep '/usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/mysql3306/my3306.cnf'|grep -v grep|awk '{print $2}'`

if [ -z "$pid" ]; then

        echo "mysql is down" > /tmp/dump.log

else

        kill -9 $pid

fi

rm -rf /data/mysql/mysql3306/data/*

rm -rf /data/mysql/mysql3306/logs/*

cd /home/run

#解压

xbstream -x < *.qp -C /data/mysql/mysql3306/data/

innobackupex --decompress /data/mysql/mysql3306/data/

find /data/mysql/mysql3306/data/ -name "*.qp" | xargs rm -f

#应用日志

innobackupex --defaults-file=/data/mysql/mysql3306/my3306.cnf --apply-log /data/mysql/mysql3306/data

chown -R mysql.mysql /data/mysql

sed -i 's/#skip-grant-tables=1/skip-grant-tables=1/g' /data/mysql/mysql3306/my3306.cnf

/usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/mysql3306/my3306.cnf &

#判定mysql启动情况

while((1<100))

do

        tail -10 /data/mysql/mysql3306/data/error.log |grep 'ready for connections' &>> /tmp/dump.log

        if [ $? == 0 ];then

                echo -e "mysql启动完成\n"

                break

        else

                echo -e "mysql启动中...\n"

                sleep 10

        fi

done

#mysql_upgrade -uroot &>> /tmp/dump.log &&

mysql -urdsAdmin << EOF

update mysql.user set authentication_string=password('huaweiRDS') where user='rdsAdmin';

grant all privileges on *.* to root@'%' with grant option;

flush privileges;

shutdown;

EOF

sed -i 's/skip-grant-tables=1/#skip-grant-tables=1/g' /data/mysql/mysql3306/my3306.cnf

/usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/mysql3306/my3306.cnf &

echo -e "恢复完成,密码为huaweiRDS"

#沿用阿里的回复点和binlog位置查询方法

A=`cat /data/mysql/mysql3306/data/xtrabackup_binlog_info|sed -n 1p|awk '{print $1}'`

B=`cat /data/mysql/mysql3306/data/xtrabackup_binlog_info|sed -n 1p|awk '{print $2}'`

echo -e "初始binlog为:$A"

echo -e "初始恢复点为:$B"

#删除qp文件

sleep 10

rm -rf *.qp


阿里云和华为云的恢复方法已经存在于前面的文章中了,这里只是单独拖出来方便必要时查看,原文路径:Xtrabackup<一>

上一篇下一篇

猜你喜欢

热点阅读