innobackupex备份工具(增量备份与还原)
创建增量备份
1:首先需要创建一个完全备份
innobackupex --user=root --password=123456 /tmp/db_backup/
或者可以指定备份某一个数据库
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --database=longtao /tmp/db_backup/
其中--defaults-file=/etc/my.cnf 是可选项,默认就是这个路径,用来获取备份和还原路径;
--database=longtao 也是可选项,用来指定还原某一个数据库,不写默认是所有数据库都备份
2. 使--incremental创建增量备份
第一次增量备份:
innobackupex --user=root --password=123456 --incremental /增量备份第一次路径 --incremental-basedir=全备路径
第二次增量备份
innobackupex --user=root --password=123456 --incremental /tmp/db_backup/ --incremental-basedir=/增量第一次备份路径
第三次增量备份
innobackupex --user=root --password=123456 --incremental /tmp/db_backup/ --incremental-basedir=/增量第二次备份路径
后面的以此类推。
2、增量备份创建的替代方法
innobackupex --user=root --password=123456 --incremental /tmp/db_backup/ --incremental-lsn=3038507
#从这个编号点开始备份,编号来自于上一次增量备份结束位置:如下:
[root@CentOS7-63 2021-06-30_19-22-37]# cat xtrabackup_checkpoints
backup_type = incremental
from_lsn = 3034128
to_lsn = 3038507
last_lsn = 3038516
compact = 0
recover_binlog_info = 0
注意查看:to_lsn = 3038507 这个就是了!
注意:xtrabackup只会影响xtradb或者innodb的表,其他引擎的表在增量备份的时候只会复制整个文件进行全备,不会差异。
还原增量备份
增量备份的恢复比全备要复杂一点,第一步是在所有备份目录下重做已提交的日志,如:
innobackupex --apply-log --redo-only BASE-DIR innobackupex --apply-log --redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR-1 innobackupex --apply-log --redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR-2
注意:如果仅有一份增量备份,第2条语句忽然
其中BASE-DIR是指全备目录,
INCREMENTAL-DIR-1是指第一次的增量备份,
INCREMENTAL-DIR-2是指第二次的增量备份,以此类推。
以上语句执行成功之后,最终数据在BASE-DIR(即全备目录)下。
第一步完成之后,我们开始第二步:回滚未完成的日志:
innobackupex --apply-log BASE-DIR
上面执行完之后,BASE-DIR里的备份文件已完全准备就绪,
建议删除清空MySQL的datadir目录再恢复
最后一步:第三步就是拷贝恢复:
innobackupex --copy-back BASE-DIR
恢复mysql权限
chown –R mysql.mysql /var/lib/mysql/
最后启动
systemctl start mysqld