生产环境使用xtrabackup备份MySQL

2020-12-03  本文已影响0人  frankie_cheung
1.前提条件

需要机器上有如下二进制文件:
xbstream
xtrabackup
qpress
并且加入到环境变量
本文章解决的问题:
1.需要定时全量备份数据库
2.需要在线把主库的数据导出来,做一个从库。

2.备份脚本
#!/bin/sh

passwd=$(printf "%s" MTIzNDU2YQ== | base64 -d)

date_dir=`date +%Y%m%d`


echo "---------------------------`date`------------begin----"

xtrabackup --default-files=/etc/my.cnf   --safe-slave-backup --slave_info --parallel=4 --user='root' --password=$passwd   --datadir=/data02/mysql_data  --socket=/data02/mysql/tmp/mysql.sock  --backup   --stream=xbstream  --compress --compress-threads=2  > /data02/backup/backup_data/$date_dir.stream

echo "---------------------------`date`-------------end---"

find /data02/backup/backup_data -type f -mtime +7 -exec rm {} \;
3.脚本解释
mysql> CREATE USER 'bkpuser'@'localhost' IDENTIFIED BY 's3cret';
mysql> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO
'bkpuser'@'localhost';
mysql> FLUSH PRIVILEGES;
4.恢复文件

恢复需要如下步骤:

xbstream解压
xbstream -x < 20201203.stream -C /data01/backup/data
解压到指定目录
decompress 解压
xtrabackup --decompress --parallel=10 --remove-original --target-dir=/data01/backup/data
prepare 准备数据(回放redo log)
xtrabackup --prepare --use-memory=2GB --target-dir=/data01/backup/data
把数据拷贝到数据库数据目录
xtrabackup --default-files=/data01/mysql/etc/3306/my.cnf --copy-back --target-dir=/data01/backup/data --datadir=/data01/mysql/data/3306

启动数据库后,进去修改为GTID_PURGED为上面cat到的GITD
reset master
set global GTID_PURGED='fhhsh-sgs726464-bdgajdgdg4:1-101'
change master to ...............
这一步非常重要!!
因为这个是告诉数据库从那个GITD开始进行复制。

上一篇下一篇

猜你喜欢

热点阅读