Percona-xtrabackup

MySQL 物理备份工具-xtrabackup(XBK、Xbackup)

1 安装
1.1 安装依赖包:

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

1.2 下载软件并安装

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

https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.4/binary/redhat/6/x86_64/percona-xtrabackup-24-2.4.4-1.el6.x86_64.rpm

yum -y install percona-xtrabackup-*.rpm

2 介绍:
物理备份工具,拷贝数据文件。200M/s 100*原生态支持全备和增量

InnoDB表:
热备份:业务正常发生的时候,影响较小的备份方式。
1. checkpoint , 将已提交的数据页刷新到磁盘。记录一个LSN。
2. 拷贝InnoDB表相关的文件。(ibdata1, frm ibd..)
3. 备份期间产生新的数据变化的redo和undo也会备份走。
非InnoDB表:
温备份:锁表备份。
1. FTWRL ,触发全局锁。
2. 拷贝非InnoDB表的数据
3. 解锁

再次统计LSN。写入到专业文件。
记录二进制日志位置记录下来。
所有备份文件统一存放在一个目录下。

3 XBK应用
3.1 前提
(1)数据库启动
(2)能连上数据库

[root@db01 ~]$ vim /etc/my.cnf
[client]
socket=/tmp/mysql.sock

(3)默认会读取[mysqld] ---> datadir=xxxx
(4)服务器端工具
3.2 全备

[root@db01 ~]$ innobackupex --user=root --password=mysql --no-timestamp /data/xbk/full_`date +%F`

3.3 备份结果

xtrabackup_binlog_info  # 记录备份后binlog位置点信息,binlog的截取起点。
xtrabackup_checkpoints  # 备份过程中LSN记录,方便做增量备份。
xtrabackup_info
xtrabackup_logfile

3.4 全备的恢复演练
破坏:

[root@db01 ~]$ pkill mysqld
[root@db01 ~]$ rm -rf /data/3306/*

备份处理:prepare
redo 前滚,undo 回滚,模仿CSR过程。

[root@db01 ~]$ innobackupex --apply-log /data/xbk/full_2020-07-16

数据恢复:

[root@db01 ~]$ cp -a /data/xbk/full_2020-07-16/* /data/3306/
[root@db01 ~]$ ls -l /data/3306
[root@db01 ~]$ chown -R mysql.mysql /data/*
[root@db01 ~]$ /etc/init.d/mysqld start
Starting MySQL.... SUCCESS! 
[root@db01 ~]$ mysql -uroot -p

 

面试题:

xbk 在innodb表备份恢复的流程
0、xbk备份执行的瞬间,立即触发ckpt,已提交的数据脏页,从内存刷写到磁盘,并记录此时的LSN号
1、备份时,拷贝磁盘数据页,并且记录备份过程中产生的redo和undo一起拷贝走,也就是checkpoint LSN之后的日志
2、在恢复之前,模拟Innodb“自动故障恢复”的过程,将redo(前滚)与undo(回滚)进行应用
3、恢复过程是cp 备份到原来数据目录下

 

xbk 备份逻辑
1. checkpoint ,记录LSN号码
2. information_schema.xxx
3. 拷贝InnoDB文件,过程中发生的新变化redo也会被保存,保存至备份路径
4. Binlog 只读 , FTWRL(global read lock)
5. 拷贝Non_InnoDB,拷贝完成解锁
6. 生成备份相关的信息文件,binlog,LSN
7. 刷新Last LSN
8. 完成备份


xbk 全备及恢复
注意点:在恢复之前都要进行prepare。模仿CSR过程,将redo前滚,将undo回滚。

posted @ 2020-07-31 00:19  丁海龙  阅读(352)  评论(0编辑  收藏  举报