Mysql备份工具innobackupex简单操作及参数说明
Mysql备份工具innobackupex简单操作及参数说明
简述
最近检查服务器,数据库没有备份,现在数据及金钱的时代必须对数据做好备份。
检索了一下网上对MySQL备份的免费工具,mysqldump
、Xtrabackup
是免费且好用的。
Xtrabackup是由percona开源的免费数据库热备份软件,它能对InnoDB数据库和XtraDB存储引擎的数据库非阻塞地备份(对于MyISAM的备份同样需要加表锁);mysqldump备份方式是采用的逻辑备份,其最大的缺陷是备份和恢复速度较慢,如果数据库大于50G,mysqldump备份就不太适合。
Xtrabackup安装完成后有4个可执行文件,其中2个比较重要的备份工具是innobackupex、xtrabackup
- xtrabackup 是专门用来备份InnoDB表的,和mysql server没有交互;
- innobackupex 是一个封装xtrabackup的Perl脚本,支持同时备份innodb和myisam,但在对myisam备份时需要加一个全局的读锁。
- xbcrypt 加密解密备份工具
- xbstream 流传打包传输工具,类似tar
根据实际情况,我们用的MySQL5.7.*的库,且没有MyISAM
的表,Xtrabackup
正式我们的选择,Liunx环境使用脚本可以完成自动化的工作;Xtrabackup
的Perl脚本 innobackupex 正合适。
我们用了Xtrabackup
的2.4的版本;
简单操作
全量备份
innobackupex --defaults-file=/etc/my.cnf --user=root --password=“Senter.1234” --backup /root/complete
–apply-log 使用此参数使用相关数据性文件保持一致性状态,“准备”的主要作用正是通过回滚未提交的事务及同步已经提交的事务至数据文件使得数据文件处于一致性状态
innobackupex --apply-log /root/complete/2023-11-16_13-48-29/
#恢复数据之前需要保证数据目录是空的状态
全量恢复
innobackupex --defaults-file=/etc/my.cnf --copy-back /root/complete/2023-11-16_13-48-29/
增量备份
innobackupex --defaults-file=/etc/my.cnf --user=root --password=“Senter.1234” --incremental /root/backup/ --incremental-basedir=/root/complete/2023-11-16_13-48-29
#–incremental /backup/ 指定增量备份文件备份的目录
#–incremental-basedir 指定上一次全备或增量备份的目录
增量恢复操作过程如下
innobackupex --apply-log --redo-only /root/complete/2023-11-16_13-48-29/
innobackupex --apply-log --redo-only /root/complete/2023-11-16_13-48-29/ --incremental-dir=/root/backup/2023-11-16_14-45-30/
增量回复
innobackupex --defaults-file=/etc/my.cnf --copy-back /root/complete/2023-11-16_13-48-29/
Xtrabackup 常用参数
Xtrabackup
工具有许多参数,具体可去官网查询(Xtrabackup
参数选项 | innobackupex 参数选项),这里简单介绍 innobackupex 一些常用的参数。
innobackupex 参数
–defaults-file=[MY.CNF]
指定配置文件:只能从给定的文件中读取默认选项。 且必须作为命令行上的第一个选项;必须是一个真实的文件,它不能是一个符号链接。
–databases=#
指定备份的数据库和表,格式为:–database=“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 。
–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文档。
xtrabackup 参数
–apply-log-only
这个选项使在准备备份(prepare)时,只执行重做(redo)阶段,这对于增量备份非常重要。
参考文件
Xtrabackup-2.4 Documentation
Xtrabackup-2.4 (innobackupex_option_reference)
实战干货!Xtrabackup 实现数据的备份与恢复
Mysql备份工具xtrabackup常用参数
关于Percona XtraBackup的redo-Only参数