percona-xtrabackup 应用
介绍
物理备份工具。备份数据文件。
下载安装
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL libev
wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.12/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.12-1.el7.x86_64.rpm
yum -y install percona-xtrabackup-*
配置
[client]
socket=/tmp/mysql.sock
xbk备份恢复原理
备份:
InnoDB表:
1、xbk备份执行的瞬间,立即触发ckpt,已提交的数据脏页,从内存刷写到磁盘,并记录此时的LSN号
2、备份InnoDB表时,拷贝 ibd 、ibdata、undo、ibtmp1,将备份期间产生的redo截取拷贝,记录LSN
非InnoDB表:
1. 触发 FTWRL 全局锁,关闭binlog记录
2. 拷贝非InnoDB表数据。
数据完成后
记录binlog位置,停止redo拷贝,记录last lsn,记录所有备份日志到指定日志文件中,解锁
恢复:
1. prepare 备份:利用了InnoDB CSR的功能,使用redo进行前滚,undo进行回滚
2. 恢复备份: cp 文件至源路径。
应用
全备
innobackupex --user=root --password=123 --no-timestamp /opt/full/xbkfull_`date +%F`
全备恢复演示
[root@db01 ~]# pkill mysqld
[root@db01 ~]# rm -rf /data/3306/data/*
# prepare 全备
[root@db01 ~]# innobackupex --apply-log /opt/full/xbkfull_2020-03-27/
# 恢复全备
[root@db01 ~]# innobackupex --copy-back /opt/full/xbkfull_2020-03-27/
或者:
[root@db01 data]# cp -r /opt/full/xbkfull_2020-03-27/* /data/3306/data/
[root@db01 ~]# chown -R mysql.mysql /data/
[root@db01 data]# /etc/init.d/mysqld start