当前位置: > 数据库 > MySQL >

xtrabackup命令用法实战

时间:2019-05-13 11:50来源:linux.it.net.cn 作者:IT
上篇整理了innobackupex命令的用法:innobackupex命令用法实战,接下来介绍xtrabackup命令的用法。其中xtrabackup命令使用说明可以参考:Percona XtraBackup使用说明

完全备份
1.创建备份

[root@linux-node1 backup]# xtrabackup --user=backup --password=123456 --databases=zabbix --backup --target-dir=/data/backup/xtrabackup/


2.将备份推送到测试机

[root@linux-node1 backup]# scp -r xtrabackup/ root@192.168.20.201:/data/backup/


3.准备备份

[root@test backup]# xtrabackup --prepare --target-dir=/data/backup/xtrabackup/


4.恢复备份

#关闭数据库:
[root@test mysql]# systemctl stop mariadb
#恢复备份
[root@test backup]# rsync -avrP /data/backup/xtrabackup/ /var/lib/mysql/
[root@test mysql]# chown -R mysql:mysql /var/lib/mysql
#启动数据库:
[root@test mysql]# systemctl start mariadb

现在数据已经恢复到执行完整备份命令时的时间。查看数据:





增量备份
1.创建增量备份
首先先创建完全备份:

[root@linux-node1 backup]# xtrabackup --user=backup --password=123456 --databases=zabbix --backup --target-dir=/data/backup/xtrabackup/

创建第一次增量备份:

[root@linux-node1 backup]# xtrabackup --user=backup --password=123456 --databases=zabbix --backup --target-dir=/data/backup/inc1 --incremental-basedir=/data/backup/xtrabackup/

创建第二次增量备份:

[root@linux-node1 backup]# xtrabackup --user=backup --password=123456 --databases=zabbix --backup --target-dir=/data/backup/inc2 --incremental-basedir=/data/backup/inc1


2.推送备份到测试机:

[root@linux-node1 backup]# scp -r xtrabackup/ root@192.168.20.201:/data/backup/
[root@linux-node1 backup]# scp -r inc1/ root@192.168.20.201:/data/backup/
[root@linux-node1 backup]# scp -r inc2/ root@192.168.20.201:/data/backup/



3.准备备份
先准备基础备份:

[root@test backup]# xtrabackup --prepare --apply-log-only --target-dir=/data/backup/xtrabackup/

将第一次增量备份应用到完全备份:

[root@test backup]# xtrabackup --prepare --apply-log-only --target-dir=/data/backup/xtrabackup/ --incremental-dir=/data/backup/inc1

准备第二次增量备份是一个类似的过程:

[root@test backup]# xtrabackup --prepare --target-dir=/data/backup/xtrabackup/ --incremental-dir=/data/backup/inc2/

4.恢复数据

#关闭数据库:
[root@test mysql]# systemctl stop mariadb
#恢复数据:
[root@test backup]# rsync -avrP /data/backup/xtrabackup/ /var/lib/mysql/
[root@test mysql]# chown -R mysql:mysql /var/lib/mysql
#启动数据库:
[root@test mysql]# systemctl start mariadb


现在数据已经恢复到执行第二次增量备份命令时的时间。查看数据:





xtrabackup参数说明
具体使用方法可以参考:Percona XtraBackup使用说明

通用选项:
    -u, --user=name
    -p, --password[=name]
    -P, --port=#
    -H, --host=name
    -S, --socket=name

备份选项:
    --backup    #创建备份并且放入--target-dir目录中
    --target-dir   #指定backup的目的地,如果目录不存在,xtrabakcup会创建。如果目录存在且为空则成功。不会覆盖已存在的文件。
    示例:$ xtrabackup --backup --target-dir=/data/backups/

增量选项:
    --incremental-basedir
    示例:$ xtrabackup --backup --target-dir=/data/backups/inc1 --incremental-basedir=/data/backups/base

压缩解压选项:
    --compress  #压缩
    --compress-threads=n   #启用n个线程进行压缩
    --decompress  #准备数据之前先解压

加密解密选项:
    --encrypt=AES128|AES192|AES256
    --encrypt-key=ENCRYPTION_KEY   #使用适当长度的加密密钥。不建议在通过命令行访问机器的情况下使用此选项,因此可以将该密钥视为过程信息的一部分
    --encrypt-key-file=KEYFILE     #可从中读取适当长度的原始密钥的文件的名称。该文件必须是一个简单的二进制(或文本)文件,其中包含准确使用的密钥

    --encrypt-threads    #可以指定多个线程并行地进行加密
    --encrypt-chunk-size #可用于指定每个加密线程的工作加密缓冲区的大小(以字节为单位)(默认值为64K)

    --decrypt  #解密

准备选项:
    --prepare    #实现通过回滚未提交的事务及同步已经提交的事务至数据文件使数据文件处于一致性状态
    --apply-log-only   #prepare备份的时候只执行redo阶段,用于增量备份(最后一次增量备份的准备不需要此选项)。

恢复选项:
    --copy-back:做数据恢复时将备份数据文件拷贝到MySQL服务器的datadir。
    --move-back:这个选项与--copy-back相似,唯一的区别是它不拷贝文件,而是移动文件到目的地。这个选项移除backup文件,用时候必须小心。
    还可以通过rsync或cp来恢复文件
    示例:$ rsync -avrP /data/backup/ /var/lib/mysql/



参数说明:

--apply-log-only:prepare备份的时候只执行redo阶段,用于增量备份。
--backup:创建备份并且放入--target-dir目录中
--close-files:不保持文件打开状态,xtrabackup打开表空间的时候通常不会关闭文件句柄,目的是为了正确处理DDL操作。如果表空间数量非常巨大并且不适合任何限制,一旦文件不在被访问的时候这个选项可以关闭文件句柄.打开这个选项会产生不一致的备份。
--compact:创建一份没有辅助索引的紧凑备份
--compress:压缩所有输出数据,包括事务日志文件和元数据文件,通过指定的压缩算法,目前唯一支持的算法是quicklz.结果文件是qpress归档格式,每个xtrabackup创建的*.qp文件都可以通过qpress程序提取或者解压缩
--compress-chunk-size=#:压缩线程工作buffer的字节大小,默认是64K
--compress-threads=#:xtrabackup进行并行数据压缩时的worker线程的数量,该选项默认值是1,并行压缩('compress-threads')可以和并行文件拷贝('parallel')一起使用。例如:'--parallel=4 --compress --compress-threads=2'会创建4个IO线程读取数据并通过管道传送给2个压缩线程。
--create-ib-logfile:这个选项目前还没有实现,目前创建Innodb事务日志,你还是需要prepare两次。
--datadir=DIRECTORY:backup的源目录,mysql实例的数据目录。从my.cnf中读取,或者命令行指定。
--defaults-extra-file=[MY.CNF]:在global files文件之后读取,必须在命令行的第一选项位置指定。
--defaults-file=[MY.CNF]:唯一从给定文件读取默认选项,必须是个真实文件,必须在命令行第一个选项位置指定。
--defaults-group=GROUP-NAME:从配置文件读取的组,innobakcupex多个实例部署时使用。
--export:为导出的表创建必要的文件
--extra-lsndir=DIRECTORY:(for --bakcup):在指定目录创建一份xtrabakcup_checkpoints文件的额外的备份。
--incremental-basedir=DIRECTORY:创建一份增量备份时,这个目录是增量别分的一份包含了full bakcup的Base数据集。
--incremental-dir=DIRECTORY:prepare增量备份的时候,增量备份在DIRECTORY结合full backup创建出一份新的full backup。
--incremental-force-scan:创建一份增量备份时,强制扫描所有增在备份中的数据页即使完全改变的page bitmap数据可用。
--incremetal-lsn=LSN:创建增量备份的时候指定lsn。
--innodb-log-arch-dir:指定包含归档日志的目录。只能和xtrabackup --prepare选项一起使用。
--innodb-miscellaneous:从My.cnf文件读取的一组Innodb选项。以便xtrabackup以同样的配置启动内置的Innodb。通常不需要显示指定。
--log-copy-interval=#:这个选项指定了log拷贝线程check的时间间隔(默认1秒)。
--log-stream:xtrabakcup不拷贝数据文件,将事务日志内容重定向到标准输出直到--suspend-at-end文件被删除。这个选项自动开启--suspend-at-end。
--no-defaults:不从任何选项文件中读取任何默认选项,必须在命令行第一个选项。
--databases=#:指定了需要备份的数据库和表。
--database-file=#:指定包含数据库和表的文件格式为databasename1.tablename1为一个元素,一个元素一行。
--parallel=#:指定备份时拷贝多个数据文件并发的进程数,默认值为1。
--prepare:xtrabackup在一份通过--backup生成的备份执行还原操作,以便准备使用。
--print-default:打印程序参数列表并退出,必须放在命令行首位。
--print-param:使xtrabackup打印参数用来将数据文件拷贝到datadir并还原它们。
--rebuild_indexes:在apply事务日志之后重建innodb辅助索引,只有和--prepare一起才生效。
--rebuild_threads=#:在紧凑备份重建辅助索引的线程数,只有和--prepare和rebuild-index一起才生效。
--stats:xtrabakcup扫描指定数据文件并打印出索引统计。
--stream=name:将所有备份文件以指定格式流向标准输出,目前支持的格式有xbstream和tar。
--suspend-at-end:使xtrabackup在--target-dir目录中生成xtrabakcup_suspended文件。在拷贝数据文件之后xtrabackup不是退出而是继续拷贝日志文件并且等待知道xtrabakcup_suspended文件被删除。这项可以使xtrabackup和其他程序协同工作。
--tables=name:正则表达式匹配database.tablename。备份匹配的表。
--tables-file=name:指定文件,一个表名一行。
--target-dir=DIRECTORY:指定backup的目的地,如果目录不存在,xtrabakcup会创建。如果目录存在且为空则成功。不会覆盖已存在的文件。
--throttle=#:指定每秒操作读写对的数量。
--tmpdir=name:当使用--print-param指定的时候打印出正确的tmpdir参数。
--to-archived-lsn=LSN:指定prepare备份时apply事务日志的LSN,只能和xtarbackup --prepare选项一起用。
--user-memory = #:通过--prepare prepare备份时候分配多大内存,目的像innodb_buffer_pool_size。默认值100M如果你有足够大的内存。1-2G是推荐值,支持各种单位(1MB,1M,1GB,1G)。
--version:打印xtrabackup版本并退出。
--xbstream:支持同时压缩和流式化。需要客服传统归档tar,cpio和其他不允许动态streaming生成的文件的限制,例如动态压缩文件,xbstream超越其他传统流式/归档格式的的优点是,并发stream多个文件并且更紧凑的数据存储(所以可以和--parallel选项选项一起使用xbstream格式进行streaming)。


(责任编辑:IT)
------分隔线----------------------------
栏目列表
推荐内容