安装
1.安装依赖
yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL libev-devel
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
yum -y install percona-xtrabackup-24-2.4.12-1.el7.x86_64.rpm
日常使用
备份所有库
备份目录里生成日期命名的文件夹,指定的目录不存在会自动创建
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 /mysql/back
在目录下xtrabackup_info文件夹里有写明binlog文件和pos点
恢复第一步。先停止数据库或者禁止数据库写入,再清空数据目录,并关闭数据库
systemctl stop mysql
mv /usr/local/mysql/data .
mkdir /usr/local/mysql/data
恢复第二步。利用–apply-log来将备份时候有些未同步或者提交的事物进行处理,达到一致性状态
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --apply-log /mysql/back/2018-09-23_10-53-51/
恢复第三步。用如下命令恢复
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --copy-back /mysql/back/2018-09-23_10-53-51/
恢复第四部。权限恢复
chown -R mysql:mysql /usr/local/mysql/data
恢复第五部。启动mysql并检查
systemctl start mysql
增量备份
- 基于上一次备份进行增量
- 增量备份无法单独恢复,必须基于全备进行恢复
- 所有增量必须要按顺序合并到全备当中
必须要全量备份后才能进行增量备份,先新建一个备份目录,--no-timestamp
是指定目录名叫什么
mkdir /bakcup
innobackupex --user=root --password=123 --no-timestamp /backup/full
对数据进行变化,可以写个脚本,insert方式一直写入数据
指明上次全备份的目录位置,再指定增量备份文件名叫什么
--incremental
开启增量备份功能,--incremental-basedir
上一次备份的路径
innobackupex --user=root --password=123 --no-timestamp --incremental --incremental-basedir=/backup/full/ /backup/inc1
对数据进行变化,修改完数据后就不要再动了
再次进行增量备份,指定上次增量备份的文件夹,再指定第二次增量备份的文件夹叫什么
innobackupex --user=root --password=123 --no-timestamp --incremental --incremental-basedir=/backup/inc1/ /backup/inc2
对数据进行破坏,删除mysql的数据目录
rm -fr /usr/local/mysql/data/
恢复 full inc1 inc2,需要将inc1和inc2按顺序合并到full中,分步骤进行–apply-log
关闭mysql
systemctl stop mysql
第一步:对全备份进行封装
innobackupex --apply-log --redo-only /backup/full/
第二步:合并inc1到全备份
innobackupex --apply-log --redo-only --incremental-dir=/backup/inc1/ /backup/full/
第三步:合并inc2到全备份,以此类推
innobackupex --apply-log --redo-only --incremental-dir=/backup/inc2/ /backup/full/
正式恢复
innobackupex --copy-back /backup/full/
添加权限并启动
chown -R mysql.mysql /usr/local/mysql/data/
systemctl start mysql
远程备份
在本地目录的磁盘不够的情况下,可以使用远程备份,用流备份方式持续将本地备份到远程服务器上。
数据库服务器对磁盘服务器做免密登录,不然无法将备份传送到磁盘服务器。10.93就是磁盘服务器,在磁盘服务器建立/backup目录
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=tar /tmp | ssh
.93 "gzip >/backup/bak.tar.gz"