下载安装xtrabackup
官方下载地址:https://www.percona.com/downloads/Percona-XtraBackup-LATEST/ 官方安装步骤:https://www.percona.com/doc/percona-xtrabackup/8.0/installation/yum_repo.html rpm安装: wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-8.0.4/binary/redhat/7/x86_64/percona-xtrabackup-80-8.0.4-1.el7.x86_64.rpm yum localinstall percona-xtrabackup-80-8.0.4-1.el7.x86_64.rpm #需要EPEL源 xtrabackup -version
epel.repo
[epel] name=Extra Packages for Enterprise Linux 7 - $basearch baseurl=http://mirrors.aliyun.com/epel/7/$basearch failovermethod=priority enabled=1 gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 [epel-debuginfo] name=Extra Packages for Enterprise Linux 7 - $basearch - Debug baseurl=http://mirrors.aliyun.com/epel/7/$basearch/debug failovermethod=priority enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 gpgcheck=0 [epel-source] name=Extra Packages for Enterprise Linux 7 - $basearch - Source baseurl=http://mirrors.aliyun.com/epel/7/SRPMS failovermethod=priority enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 gpgcheck=0
xtrabackup
介绍
版本说明:2.3.3之后不备份死锁,如果数据库是mysql 5.7之后的必须要装2.4.4才可以用,当然了, 会向下兼容的。
Xtrabackup
是由percona
提供的mysql
数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具。特点:
-
备份过程快速、可靠;
-
备份过程不会打断正在执行的事务;
-
能够基于压缩等功能节约磁盘空间和流量;
-
自动实现备份检验;
-
还原速度快;
xtrabackup选项 选项 --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两次bakcup --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版本并退出
全量备份
xtrabackup --user=用户名 --password=数据库密码 --databases=数据库名称 --backup --target-dir=备份文件路径 xtrabackup --defaults-file=/etc/my.cnf --user=root --password=x3npq4uo0ae8sb7i1dhm --backup --target-dir=/backup/base chown -R mysql:mysql /backup/base 恢复备份:在同版本数据库中执行;恢复不用启动MySQL xtrabackup --user=root --password=数据库密码 --datadir=/usr/local/mysql8/data/ --copy-back --target-dir=/backup/base xtrabackup --prepare --target-dir=/backup/base xtrabackup --user=root --password=数据库密码 --datadir=/usr/local/mysql8/data/ --copy-back --target-dir=/backup/base chown -R mysql:mysql /usr/local/mysql8/data
增量备份
xtrabackup --defaults-file=/etc/my.cnf --user=root --password=x3npq4uo0ae8sb7i1dhm --backup --target-dir=/backup/base xtrabackup --defaults-file=/etc/my.cnf --user=root --password=x3npq4uo0ae8sb7i1dhm --backup --target-dir=/backup/inc1 --incremental-basedir=/backup/base