XtraBackup介绍

    https://blog.csdn.net/wfs1994/article/details/80396604

Percona XtraBackup是一款基于MySQL的服务器的开源热备份实用程序,在备份过程中不会锁定数据库。它可以备份来自MySQL5.1,5.5,5.6和5.7服务器上的InnoDB,XtraDB和MyISAM表的数据,以及带有XtraDB的Percona服务器。

Percona XtraBackup为所有版本的Percona Server,MySQL和MariaDB进行MySQL热备份。它执行流,压缩和增量MySQL备份。
功能:

    在不暂停数据库的情况下创建热的InnoDB备份
    进行MySQL的增量备份
    将压缩的MySQL备份传输到另一台服务器
    在MySQL服务器之间移动表格
    轻松创建新的MySQL复制从站
    在不增加服务器负载的情况下备份MySQL

下载地址:https://www.percona.com/downloads/XtraBackup/LATEST/
官方文档:https://www.percona.com/doc/percona-xtrabackup/LATEST/index.html#user-s-manual
参数说明:
https://www.percona.com/doc/percona-xtrabackup/LATEST/xtrabackup_bin/xbk_option_reference.html

yum安装

yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
yum list | grep percona
yum install percona-xtrabackup-24

或者rpm下载到本地安装:

wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.11/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.11-1.el7.x86_64.rpm
yum localinstall percona-xtrabackup-24-2.4.11-1.el7.x86_64.rpm

安装文件说明:

# rpm -ql percona-xtrabackup-24-2.4.11-1.el7.x86_64
/usr/bin/innobackupex     # xtrabackup 的软连接
/usr/bin/xbcloud
/usr/bin/xbcloud_osenv
/usr/bin/xbcrypt         #加密解密用
/usr/bin/xbstream        #类似于tar,是 Percona 自己实现的一种支持并发写的流文件格式
/usr/bin/xtrabackup
/usr/lib64/xtrabackup/plugin/keyring_file.so
/usr/lib64/xtrabackup/plugin/keyring_vault.so
/usr/share/doc/percona-xtrabackup-24-2.4.11
/usr/share/doc/percona-xtrabackup-24-2.4.11/COPYING
/usr/share/man/man1/innobackupex.1.gz
/usr/share/man/man1/xbcrypt.1.gz
/usr/share/man/man1/xbstream.1.gz
/usr/share/man/man1/xtrabackup.1.gz

innobackupex 功能全部集成到 xtrabackup 里面,只有一个 binary,另外为了使用上的兼容考虑,innobackupex作为 xtrabackup 的一个软链,即xtrabackup现在支持非Innodb表备份,并且Innobackupex在下一版本中移除,建议通过xtrabackup替换innobackupex。


在当前2.4.11版本中innobackupex命令已经被弃用,但仍然以xtrabackup软连接的形式存在,

# innobackupex --help
NOTICE: 'innobackupex' is deprecated, please switch to 'xtrabackup'
# ll /usr/bin/innobackupex
lrwxrwxrwx 1 root root 10 May 17 20:34 /usr/bin/innobackupex -> xtrabackup

两者的用法也有些区别,可以参考:
innobackupex命令用法实战
xtrabackup命令用法实战

连接到服务器

$ xtrabackup --user=DVADER --password=14MY0URF4TH3R --backup --target-dir=/data/bkps/
$ innobackupex --user=DBUSER --password=SECRET /path/to/backup/dir/
$ innobackupex --user=LUKE --password=US3TH3F0RC3 --stream=tar ./ | bzip2

RELOAD and LOCK TABLES (unless the --no-lock option is specified) in order to FLUSH TABLES WITH READ LOCK and FLUSH ENGINE LOGS prior to start copying the files, and LOCK TABLES FOR BACKUP and LOCK BINLOG FOR BACKUP require this privilege when Backup Locks are used,
REPLICATION CLIENT in order to obtain the binary log position,
CREATE TABLESPACE in order to import tables (see Restoring Individual Tables),
PROCESS in order to run SHOW ENGINE INNODB STATUS (which is mandatory), and optionally to see all threads which are running on the server (see Improved FLUSH TABLES WITH READ LOCK handling),
SUPER in order to start/stop the slave threads in a replication environment, use XtraDB Changed Page Tracking for Incremental Backups and for Improved FLUSH TABLES WITH READ LOCK handling,
CREATE privilege in order to create the PERCONA_SCHEMA.xtrabackup_history database and table,
INSERT privilege in order to add history records to the PERCONA_SCHEMA.xtrabackup_history table,
SELECT privilege in order to use innobackupex --incremental-history-name or innobackupex --incremental-history-uuid in order for the feature to look up the innodb_to_lsn values in the PERCONA_SCHEMA.xtrabackup_history table.

使用完整备份所需的最低权限创建数据库用户的SQL示例为:

 mysql> CREATE USER 'bkpuser'@'localhost' IDENTIFIED BY 's3cret';
mysql> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'bkpuser'@'localhost';
mysql> FLUSH PRIVILEGES;

 

$ xtrabackup --backup --target-dir=/data/backups/inc1 --incremental-basedir=/data/backups/base

$ xtrabackup --backup --target-dir=/data/backups/inc2 --incremental-basedir=/data/backups/inc1

$ xtrabackup --prepare --apply-log-only --target-dir=/data/backups/base --incremental-dir=/data/backups/inc1

$ xtrabackup --prepare --target-dir=/data/backups/base --incremental-dir=/data/backups/inc2

 $ xtrabackup --backup --compress --compress-threads=4 --target-dir=/data/compressed/

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

生成秘钥:

$ openssl rand -base64 24
GCHFLrDFVx6UAsRb88uLVbAVWbK+Yzfs

使用该--encrypt-key选项:

$ xtrabackup --backup --target-dir=/data/backups --encrypt=AES256 --encrypt-key="GCHFLrDFVx6UAsRb88uLVbAVWbK+Yzfs"

使用该--encrypt-key-file选项:

$ xtrabackup --backup --target-dir=/data/backups/ --encrypt=AES256 --encrypt-key-file=/data/backups/keyfile

建议的方法是使用以下命令创建文件:
echo -n "GCHFLrDFVx6UAsRb88uLVbAVWbK+Yzfs" > /data/backups/keyfile

2.优化加密过程
已经引入了两个选项,这些加密备份可用于加速加密过程。他们是 xtrabackup --encrypt-threadsxtrabackup --encrypt-chunk-size

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

Percona XtraBackup xtrabackup --decrypt选项可用于解密备份:

$ xtrabackup --decrypt=AES256 --encrypt-key="GCHFLrDFVx6UAsRb88uLVbAVWbK+Yzfs" --target-dir=/data/backups/

 Percona XtraBackup不会自动删除加密文件。为了清理备份目录,用户应该删除这些*.xbcrypt 文件。您可以使用xtrabackup --remove-original选项在解密后删除加密文件

$ xtrabackup --decrypt=AES256 --encrypt-key="GCHFLrDFVx6UAsRb88uLVbAVWbK+Yzfs" --target-dir=/data/backups/ --remove-original

4.准备加密备份

$ xtrabackup --prepare --target-dir=/data/backups/

5.恢复加密的备份

$ xtrabackup --copy-back --target-dir=/data/backups/

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值