xtrabackup物理备份

  sre

xtrabackup安装

#下载网址http://www.percona.com/downloads/XtraBackup/LASTEST/
ln -s /usr/local/mysql57/bin/mysql /usr/bin/mysql
yum install -y libev perl-Digest perl-Digest-MD5 perl perl-DBD-MySQL
rpm -ivh 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
rpm -ivh https://www.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.15/binary/redhat/7/x86_64/percona-xtrabackup-24-debuginfo-2.4.15-1.el7.x86_64.rpm

1) innobackupex 参数选项

–defaults-file=[MY.CNF]

//指定配置文件:只能从给定的文件中读取默认选项。 且必须作为命令行上的第一个选项;必须是一个真实的文件,它不能是一个符号链接。

–databases=#

//指定备份的数据库和表,格式为:--databases="db1[.tb1] db2[.tb2]" 多个库之间以空格隔开,如果此选项不被指定,将会备份所有的数据库。

–include=REGEXP

//用正则表达式的方式指定要备份的数据库和表,格式为 --include=‘^mydb[.]mytb’ ,对每个库中的每个表逐一匹配,因此会创建所有的库,不过是空的目录。--include 传递给 xtrabackup --tables。

–tables-file=FILE

//此选项的参数需要是一个文件名,此文件中每行包含一个要备份的表的完整名称,格式为databasename.tablename。该选项传递给 xtrabackup --tables-file,与--tables选项不同,只有要备份的表的库才会被创建。

注意:部分备份(--include、--tables-file、--database)需要开启 innodb_file_per_table 。

–compact

//创建紧凑型备份,忽略所有辅助索引页,只备份data page;通过--apply-log中重建索引--rebuild-indexs。

–compress

//此选项指示xtrabackup压缩备份的InnoDB数据文件,会生成 *.qp 文件。

–decompress

//解压缩qp文件,为了解压缩,必须安装 qpress 工具。 Percona XtraBackup不会自动删除压缩文件,为了清理备份目录,用户应手动删除 * .qp文件:find /data/backup -name "*.qp" | xargs rm。

–no-timestamp

//指定了这个选项备份将会直接存储在 BACKUP-DIR 目录,不再创建时间戳文件夹。

–apply-log

//应用 BACKUP-DIR 中的 xtrabackup_logfile 事务日志文件。一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务。因此,此时数据文件仍处于不一致状态。“准备”的主要作用正是通过回滚未提交的事务及同步已经提交的事务至数据文件使得数据文件处于一致性状态。

–use-memory=#

//此选项接受一个字符参数(1M/1MB,1G/1GB,默认100M),仅与--apply-log一起使用,该选项指定prepare时用于崩溃恢复(crash-recovery)的内存。

–copy-back

//拷贝先前备份所有文件到它们的原始路径。但原路径下不能有任何文件或目录,除非指定 --force-non-empty-directories 选项。

–force-non-empty-directories

//恢复时指定此选项,可使 --copy-back 和 --move-back 复制文件到非空目录,即原data目录下可以有其他文件,但是不能有与恢复文件中同名的文件,否则恢复失败。

–rsync

//此选项可优化本地文件(非InnoDB)的传输。rsync工具一次性拷贝所有非InnoDB文件,而不是为每个文件单独创建cp,在备份恢复很多数据库和表时非常高效。此选项不能和 --stream 一起使用。

–incremental

//这个选项告诉 xtrabackup 创建一个增量备份,而不是完全备份。它传递到 xtrabackup 子进程。当指定这个选项,可以设置 --incremental-lsn 或 --incremental-basedir。如果这2个选项都没有被指定,--incremental-basedir 传递给 xtrabackup 默认值,默认值为:基础备份目录的第一个时间戳备份目录。

–incremental-basedir=DIRECTORY

 //该选项接受一个字符串参数,该参数指定作为增量备份的基本数据集的完整备份目录。它与 --incremental 一起使用。

–incremental-dir=DIRECTORY

//该选项接受一个字符串参数,该参数指定了增量备份将与完整备份相结合的目录,以便进行新的完整备份。它与 --incremental 选项一起使用。

–redo-only

//在“准备基本完整备份” 和 “合并所有的增量备份(除了最后一个增备)”时使用此选项。它直接传递给xtrabackup的 xtrabackup --apply-log-only 选项,使xtrabackup跳过"undo"阶段,只做"redo"操作。如果后面还有增量备份应用到这个全备,这是必要的。有关详细信息,请参阅xtrabackup文档。

–parallel=NUMBER-OF-THREADS

//此选项接受一个整数参数,指定xtrabackup子进程应用于同时备份文件的线程数。请注意,此选项仅适用于文件级别,也就是说,如果您有多个.ibd文件,则它们将被并行复制; 如果您的表一起存储在一个表空间文件中,它将不起作用。

2) xtrabackup 参数选项

–apply-log-only

//这个选项使在准备备份(prepare)时,只执行重做(redo)阶段,这对于增量备份非常重要

全量备份

innobackupex --defaults-file=/etc/my.cnf  --user root --host localhost --password vY7JU_EgCrY_kSi  /backup  
--databases=  (指定库备份,多个库之间以空格隔开)
--no-timestamp
--stream=tar

增量备份

增量一:

innobackupex --defaults-file=/etc/my.cnf --user root --host localhost --password vY7JU_EgCrY_kSi  --socket=/tmp/mysql.sock --incremental /backup/inc01 --incremental-basedir=/backup/2019-11-04_09-43-27 --parallel=2

增量二:

innobackupex --defaults-file=/etc/my.cnf --user root --host localhost --password vY7JU_EgCrY_kSi  --socket=/tmp/mysql.sock --incremental /backup/inc02 --incremental-basedir=/backup/inc01/2019-11-04_10-09-10 --parallel=2

全量备份恢复

/etc/init.d/mysql stop

将原数据目录移走

innobackupex  --defaults-file=/etc/my.cnf --copy-back --rsync /backup/

修改数据目录权限

/etc/init.d/mysql start

增量备份恢复

innobackupex --apply-log --redo-only /backup/2019-11-04_09-43-27
innobackupex --apply-log --redo-only /backup/2019-11-04_09-43-27 --incremental-dir=/backup/inc01/2019-11-04_10-09-10/
innobackupex --apply-log --redo-only /backup/2019-11-04_09-43-27 --incremental-dir=/backup/inc02/2019-11-04_10-13-11/
/etc/init.d/mysql stop

将原数据目录移走

innobackupex  --defaults-file=/etc/my.cnf --copy-back --rsync /backup/2019-11-04_09-43-27

修改数据目录权限

/etc/init.d/mysql restart

多线程流式化压缩远程备份

先建立ssh免密

ssh-keygen
ssh-copy-id -i ~/.ssh/id_rsa.pub user@server
innobackupex --defaults-file=/etc/my.cnf  --user root --host localhost --password vY7JU_EgCrY_kSi --stream=tar --parallel=12 /tmp |gzip |ssh root@172.16.0.3 "cat - > /backup/$(date +'%Y-%m-%d').tar.gz"

LEAVE A COMMENT

Captcha Code