xtrabackup(XBK)安装
安装依赖包 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 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-24-2.4.4-1.el7.x86_64.rpm
备份命令介绍
xtrabackup innobackupex ******自动 计算增量 innobackupex --version
备份方式-物理备份
1.对于非Innodb表(比如 myisam)是,锁表cp数据文件,属于一种温备份。 2.对于Innodb的表(支持事务的),不锁表,拷贝数据页,最终以数据文件的方式保存下来,把一部分redo和undo 一并备走,属于热备方式。
xbk 在innodb表备份恢复的流程
0、xbk备份执行的瞬间,立即触发checkpoint,将内存已经提交事务的脏页,刷新到磁盘idb文件,并记录此时的LSN号 1、备份时,拷贝innodb数据(ibd,frm,ibdata1),记录备份过程中产生的redo和undo也再备份中,也就是checkpoint LSN之后的日志 2、在恢复之前,模拟Innodb“自动故障恢复”的过程,将redo(前滚)与undo(回滚)进行应用 3、恢复过程是cp 备份到原来数据目录下
innobackupex使用
配置文件
vim /etc/my.cnf 最后一行添加 [client] socket=/tmp/mysql.sock
全备
innobackupex --user=root --password=123456 /data/backup 把屏幕信息导入到备份日志中 innobackupex --user=root --password=123456 /data/backup &>/tmp/xbk.log -rw-r----- 1 root root 63 Oct 23 12:54 xtrabackup_binlog_info -rw-r----- 1 root root 117 Oct 23 12:54 xtrabackup_checkpoints -rw-r----- 1 root root 541 Oct 23 12:54 xtrabackup_info -rw-r----- 1 root root 2560 Oct 23 12:54 xtrabackup_logfile xtrabackup_binlog_info (备份时刻的binlog位置) [root@db01 full]# cat xtrabackup_binlog_info mysql-bin.000006 194 7233d683-0932-11eb-9511-000c29159620:1-27 记录的是备份时刻,binlog的文件名字和当时的结束的position,可以用来作为截取binlog时的起点。 mysql [(none)]>select @@server_uuid; +--------------------------------------+ | @@server_uuid | +--------------------------------------+ | 7233d683-0932-11eb-9511-000c29159620 | +--------------------------------------+ xtrabackup_checkpoints : backup_type = full-backuped from_lsn = 0 上次所到达的LSN号(对于全备就是从0开始,对于增量有别的显示方法) to_lsn = 160683027 备份开始时间(ckpt)点数据页的LSN last_lsn = 160683036 备份结束后,redo日志最终的LSN compact = 0 recover_binlog_info = 0 (1)备份时刻,立即将已经commit过的,内存中的数据页刷新到磁盘(CKPT).开始备份数据,数据文件的LSN会停留在to_lsn位置。 (2)备份时刻有可能会有其他的数据写入,已备走的数据文件就不会再发生变化了。 (3)在备份过程中,备份软件会一直监控着redo的undo,如果一旦有变化会将日志也一并备走,并记录LSN到last_lsn。 从to_lsn ---->last_lsn 就是,备份过程中产生的数据变化. 注意:lsn差9个为默认的,其实是一样的 xtrabackup_info汇总信息 自主定制备份路径名 innobackupex --user=root --password=123456 --no-timestamp /data/backup/full &>/tmp/xbk.log
全备的恢复
xbk恢复的时候要求,恢复的数据路径为空 1.准备备份(Prepared) 将redo进行重做,已提交的写到数据文件,未提交的使用undo回滚掉。模拟了CSR的过程 innobackupex --apply-log /data/backup/full 2.恢复备份 前提: 被恢复的目录是空 被恢复的数据库的实例是关闭 innobackupex --copy-back /data/backup/full chown -R mysql.mysql /data/mysql systemctl start mysqld