基于Xtrabackup8的Mysql定时全量,增量备份及恢复实战演练
所有mysql实例皆为MYSQL8版本,使用的Xtrabackup备份组件为xtrabackup8
生产mysql使用基于percona的分支,相对于原版mysql多了一些性能调教和监控视图,版本为:percona-server-server-8022,备份相关工具对mysql8的官方版本也是完全兼容的percona的分支相关信息: https://wwwperconacom/software/mysql-database/percona-server
生产环境mysql一共3个实例,使用MGR组成集群以实现灵活的高可用与读写分离并由前置的proxysql进行数据的路由与转发
模拟故障为:在生产环境mysql8 的MGR集群完全不可用,有前一天的Xtrabackup全量备份和增量备份,需要从之前的全量和增量备份完整恢复到故障最近的时间点本次故障恢复的要求是读取前一天的所有增量和全量数据并恢复快速重组生产MGR集群
在这里会用ansible脚本快速搭建3个mysql实例,以模拟生产环境(略过)
backup_funcsh :
策略是每天的0:30做一次全量备份,之后每两个小时的半点会做一次增量备份
注: 本次恢复属于完整的生产环境集群恢复,下面的 获取备份文件 , 准备备份 , 开始恢复 相关流程,需要在每一台服务器上执行,实际操作中,如果只需要恢复并查看数据则只做一个点就可以了
这里取的是前一天的打过包的备份文件,根据备份脚本的规则,每天凌晨的全量备份之前,会自动将前一天的全量备份和增量备份目录全部打包并以前一天的日期命名:
20210609targz
将其scp到待恢复的服务器上并解压:
解压后的目录结构:
确保需要恢复的服务器有mysql实例,xtrabackup8工具已安装,由于备份是经过压缩的,确保qpress也已安装
由于备份脚本在备份时使用了 --compress 指令,在恢复备份前,需要先解压缩备份,
这里将所有增量和全量备份路径均执行一下解压缩指令:
在同时存在全量和增量备份需要合并的情况下,准备备份时需要带上 --apply-log-only 参数,但是要注意在准备最后一个增量备份的时候,不需要加该参数
以上操作会将所有的增量备份合并到全量备份中
根据各自安装时指定的相关路径去删除数据(data,binglog,logs,undolog),一般在mycnf中有指定
如果mycnf不是在默认路径(/etc/mycnf),需要指定一下mysql配置文件的路径: --defaults-file=${DB_CONF}
至此,备份数据在单节点上的恢复已经完成了
查看下最后一份增量备份里才会有的一些数据
先确保同样的mysql恢复操作分别在三台服务器上执行完成(如果在新建服务器上恢复MGR集群,一定要检查mycnf中MGR集群相关配置,比如 loose-group_replication_local_address , loose-group_replication_group_seeds , loose-group_replication_start_on_boot )
master节点启动:
MGR的三台节点的权重实际上是一样的,选择其中的一台做master即可
mster节点启动完成后,再分别在两台slave节点启动MGR:
由于3台mysql实例的数据是一样的,节点间状态同步迅速就OK了
至此,3台mysql的MGR状态均为 online ,整个集群启动完成,全演练流程结束
#!/bin/bash
export datetime='date +%Y%m%d'
export BAKTIME=`date +%Y%m%d%H%M%S`
export user="admin"
export password="admin"
export back="dis cu"
export BAK_DIR=/back/h3c
for i in $(cat ip_file)
do
{
echo $user;
sleep 1;
echo $password;
sleep 1;
echo $back;
sleep 1;
echo " ";
sleep 5;
}|telnet $i > $BAK_DIR/$i-$BAKTIMElog
done
mkdir $BAK_DIR/H3C_$datetime
mv -$datetime H3C_$datetime
注释
####################################
export BAKTIME=`date +%Y%m%d%H%M%S` 输出系统时间
export user="admin" 此用户为交换机、路由器用户名
export password="admin" 此密码为交换机、路由器密码
export back="dis cu" 此命令为查看H3C交换机配置
export BAK_DIR=/home/erp/back/h3c 此目录是linux服务器备份交换机、路由器的存放目录
cat ip_file 此命令意思是查看ip_file文件中的内容,逐行查看
####################################
ip_file 文件添加交换机IP(注意:不要加双引号, 文件与脚本在同一目录下存放)
#以下为交换机、路由器IP地址
19216811
19216812
19216813
19216814
19216815
19216817
mysql备份用自带的备份工具mysqldump
每天自动执行用cron工具,把mysql的备份命令放在sh文件里面
sh文件放在/etc/crondaily目录,就会每天自动执行了。
两台搞下免密码登陆;
计划任务那边写条命令每天定时运行
scp -P -r 远程端口 /root/test/ root@1921681111:/root/test
0条评论