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回滚。