官网下载地址https://www.percona.com/downloads/Percona-XtraBackup-2.4/LATEST/
下载和安装
wget https://www.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.15/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.15-1.el7.x86_64.rpm yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL libev yum localinstall percona-xtrabackup-24-2.4.15-1.el7.x86_64.rpm -y
简单实现的原理
备份过程:
1. ckpt ,记录ckpt后LSN ,to lsn
2. 拷贝数据页 ,保存为数据文件
3. 自动将备份过程redo,会一并备份走,提取最后的last LSN
恢复:
1.其实就是模拟了CSR过程
2.对比LAST LSN ,to lsn
3.使用redo进行前滚,对未提交的事务进行回滚
4.最后得到一个一致性备份
检查mysql的配置文件,是否添加了客户端,若没有添加好客户端的sock文件,不然连接不到数据库
vim /etc/my.cnf 添加
[client] socket=/tmp/mysql.sock
·······················································开始备份·······················································
全备份操作,填写数据库的帐号密码:
innobackupex --user=root --password=123456 /home/
[root@xdg /home]#ls 2019-10-09_06-56-43
发现备份完成检查文件
如果说提示配置文件没有在/etc ,可以如下操作,直接在在执行备份的时候添加配置路劲
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 /home/
自主定制备份文件名字,推荐这个 innobackupex --user=root --password=123456 --no-timestamp /home/db-$(date +%F)
–no-timestamp关闭时分秒的
简单优化:如果是多核心cpu可以再添加一个参数 –parallel=8 –use-memory=256M
备份好之后,可以查看备份中的二进制日志的pos号,可以拿来二进制恢复
[root@xdg /home/2019-10-09_06-56-43]#cat xtrabackup_binlog_info mysql-bin.000007 627398
·······················································开始恢复·······················································
前提:
1、被恢复的目录是空
2、被恢复的数据库的实例是关闭
将redo进行重做,已提交的写到数据文件
innobackupex --apply-log /home/2019-10-09_09-56-51
把备份的文件复制到数据库的存储文件下
cp -a /home/2019-10-09_09-56-51/* /mysql/data/
进行文件授权启动mysql
chown -R mysql.mysql /mysql/
systemctl start mysqld