使用Xtrabackup备份-mysql8

下载安装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介绍

XtraBackup(PXB) 工具是 Percona 公司用 perl 语言开发的一个用于 MySQL 数据库物理热备的备份工具,支持 MySQl(Oracle)、Percona Server 和 MariaDB,并且全部开源,真可谓是业界良心。阿里的 RDS MySQL 物理备份就是基于这个工具做的。由于是采取物理拷贝的方式来做的备份,所以速度非常快,几十G数据几分钟就搞定了,而它巧妙的利用了mysql 特性做到了在线热备份,不用像以前做物理备份那样必须关闭数据库才行,直接在线就能完成整库或者是部分库的全量备份和增量备份。新版本的xtrabackup改成了cmake安装,和以前有点不一样。

版本说明:2.3.3之后不备份死锁,如果数据库是mysql 5.7之后的必须要装2.4.4才可以用,当然了, 会向下兼容的。

Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具。特点:

  1. 备份过程快速、可靠;

  2. 备份过程不会打断正在执行的事务;

  3. 能够基于压缩等功能节约磁盘空间和流量;

  4. 自动实现备份检验;

  5. 还原速度快;

 

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

 

posted @ 2021-09-10 18:04  大川哥  阅读(619)  评论(0编辑  收藏  举报