percona-xtrabackup最新版本实现备份还原实例

时间:2021-02-22 20:45:04
安装2.4.11版本的percona
下载新版的percona
看下后缀如果是.rpm.1后缀的要改名为.rpm后缀:
mv percona-xtrabackup-24-2.4.11-1.el7.x86_64.rpm.1 percona-xtrabackup-24-2.4.11-1.el7.x86_64.rpm
yum install percona-xtrabackup-24-2.4.11-1.el7.x86_64.rpm -y
用epel源的yum安装rpm包

Xtrabackup用法
备份:innobackupex [option] BACKUP-ROOT-DIR
--user:该选项表示备份账号
--password:该选项表示备份的密码
--host:该选项表示备份数据库的地址
--databases:该选项接受的参数为数据名,如果要指定多个数据库,彼此间需要以空格隔开;如:"xtra_test dba_test",同时,在指定某数据库时,也可以只指定其中的某张表。如:"mydatabase.mytable"。该选项对innodb引擎表无效,还是会备份所有innodb表
--defaults-file:该选项指定从哪个文件读取MySQL配置,必须放在命令行第一个选项位置
--incremental:该选项表示创建一个增量备份;后面指定备份文件存放的路径;与--incremental-basedir同时使用
--incremental-basedir:该选项指定为前一次全备份或增量备份的目录,与--incremental同时使用
--incremental-dir:该选项指定要整合的增量备份的目录
--include=name:指定表名,格式:databasename.tablename;单表备份时会用到

Prepare:innobackupex --apply-log [option] BACKUP-DIR
选项说明:
--apply-log:一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务。因此,此时数据文件仍处理不一致状态。 此选项作用是通过回滚未提交的事务及同步已经提交的事务至数据文件使数据文件处于一致性状态
--use-memory:该选项表示和--apply-log选项一起使用,prepare 备份的时候,xtrabackup做crash recovery分配的内存大小,单位字节。也可(1MB,1M,1G,1GB),推荐1G
--export:表示开启可导出单独的表之后再导入其他Mysql中
--redo-only:整合数据时会用到此选项;在prepare base full backup,往其中合并(merge)增量备份时候使用则重做已提交的事务提交的事务保留;最后一个增量备份不用这个选项

还原:innobackupex --copy-back [选项] BACKUP-DIR
innobackupex --move-back [选项] [--defaults-group=GROUP-NAME] BACKUP-DIR
.选项说明:
.--copy-back:后面跟存放整合好的备份数据文件的目录;做数据恢复时,将整合好的备份数据文件自动拷贝到MySQL服务器的datadir
.--move-back:这个选项与--copy-back相似,唯一的区别是它不拷贝文件,而是移动文件到目的地。这个选项移除backup文件,用时候必须小心。使用场景:没有足够的磁盘空间同事保留数据文件和Backup副本
还原注意事项:
1.要恢复的服务器的数据库datadir目录必须为空。除非指定innobackupex --force-non-empty-directorires选项指定,否则--copy-backup选项不会覆盖
2.在还原之前,必须shutdown MySQL实例,关闭服务;
3.注意还原后的文件属性;由于文件属性会被保留,大部分情况下需要在启动实例之前将文件的属主改为mysql,这些文件将属于创建备份的用户
chown -R mysql:mysql /data/mysql
以上需要在用户调用innobackupex之前完成
--force-non-empty-directories:指定该参数时候,使得innobackupex --copy-back或--move-back选项转移文件到非空目录,已存在的文件不会被覆盖。如果--copy-back和--move-back文件需要从备份目录拷贝一个在datadir已经存在的文件,会报错失败
示例:
Xtrabackup完全备份及还原
1 在原主机上对数据库做完全备份
在备份前要枪查二进制日志开启及记录方式;数据存放格式等
innobackupex --user=root --password=centos /backups
会在/backups目录下自动生成以时间命名的备份目录
scp -r /backups/2018-02-23_11-55-57/ 目标主机:/data/
将备份文件复制到远程主机以确保数据的安全性
恢复数据:
1 在目标主机
innobackupex --apply-log /data/2018-02-23_11-55-57/
整合备份文件
systemctl stop mariadb
rm -rf /var/lib/mysql/*
确保要恢复数据的服务器数据库是空的
2 恢复数据:
innobackupex --copy-back /data/2018-02-23_11-55-57/
chown -R mysql.mysql /var/lib/mysql/
systemctl start mariadb

示例:
Xtrabackup完全,增量备份及还原
1 在原主机/backups/目录要存在
innobackupex /backups
完备份存放到/backups/目录下
mkdir /backups/incre{1,2}
创建增备份目录
修改数据库操作
开始第一次增量备份
innobackupex --incremental /backups/inc1 --incremental-basedir=/backups/2018-02-23_14-21-42
--incremental-basedir=前一次完全或增量备份的备份目录

修改数据库
开始第二次增量备份
innobackupex --incremental /backups/inc2 --incremental-basedir=/backups/inc1/2018-02-23_14-26-17
基于前一次增量备份的基础上的增量备份

scp -r /backups/* 192.168.27.17:/data/
把备份文件复制到远程主机
2 在目标主机
不启动mariadb
rm -rf /var/lib/mysql/*
确保原数据库是清空状态
innobackupex --apply-log --redo-only /data/2018-02-23_14-21-42/
只将完全备份已经提交的事务redo而没提交的事务保存并放到/data/2018-02-23_14-21-42/目录下
innobackupex --apply-log --redo-only /data/2018-02-23_14-21-42/ --incremental-dir=/data/inc1/2018-02-23_14-26-17
将第一次增量备份整合到完全备份的 /data/2018-02-23_14-21-42/目录里面
innobackupex --apply-log --redo-only /data/2018-02-23_14-21-42/ --incremental-dir=/data/inc2/2018-02-23_14-28-29/
将第二次增量备份文件整合到完全备份的/data/2018-02-23_14-21-42/目录里面
ls /var/lib/mysql/
确保要恢复的数据服务器目录是清空状态
innobackupex --copy-back /data/2018-02-23_14-21-42/
恢复数据
chown -R mysql.mysql /var/lib/mysql/
修改属组所有都属性
systemctl start mariadb
启动服务