从零开始的Linux运维屌丝之路,资源免费分享平台   运维人员首选:简单、易用、高效、安全、稳定、社区活跃的开源软件

Xtrabackup安装和备份 增量备份

发布:蔺要红08-29分类: MYSQL


mysqldump逻辑备份
缺点: 效率不是特别高
优点:简单/方便/可靠/迁移
适用于数据量不是特别大的场景,打包前50G内的数据
超过50G可选方案
1、xtrabackup物理备份工具,全量和怎量
2、物理备份方案:从库停止SQL线程,打包,cp


优秀博文   https://www.cnblogs.com/zhoujinyi/p/5893333.html

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  是用来备份 InnoDB 表的,不能备份非 InnoDB 表,和 mysqld server 没有交互
innobackupex 脚本用来备份非InnoDB(myisam)表,同时会调用 xtrabackup命令来备份InnoDB表,还会和 mysqld server发送命令进行交互,如加读锁(FTWRL)、获取位点(SHOW SLAVE STATUS)等,
简单来说,innobackupex 在 xtrabackup 之上做了一层封装

 
yum -y install libev-devel
yum -y install perl perl-devel libaio-devel perl-Time-HiRes perl-DBD-MySQL perl-DBI perl-Digest-MD5
yum -y install rsync

wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.10/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.10-1.el7.x86_64.rpm
rpm  -ivh percona-xtrabackup-24-2.4.10-1.el7.x86_64.rpm
#----------------
[root@db01 ~]# rpm  -qa|grep xtraback
percona-xtrabackup-24-2.4.10-1.el7.x86_64

[root@db01 ~]# rpm  -ql percona-xtrabackup-24-2.4.10-1.el7.x86_64
/usr/bin/innobackupex
/usr/bin/xbcloud
...
#----------------------------------------------------------------------------------------------
二进制包安装
wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.7/binary/tarball/percona-xtrabackup-2.4.7-Linux-x86_64.tar.gz
tar zxvf percona-xtrabackup-2.4.7-Linux-x86_64.tar.gz
mv percona-xtrabackup-2.4.7-Linux-x86_64 /usr/local/xtrabackup
ln -s /usr/local/xtrabackup/bin/* /usr/bin/

[root@test01 ~]#  xtrabackup --version
xtrabackup version 2.4.7 based on MySQL server 5.7.13 Linux (x86_64) (revision id: 05f1fcf)

备份目录下记录备份信息的文件说明
1. xtrabackup_checkpoints : 备份类型(如完全或增量)、备份状态(如是否已经为prepared状态)和LSN(日志序列号)范围信息;
   每个InnoDB页(通常为16k大小)都会包含一个日志序列号,即LSN。LSN是整个数据库系统的系统版本号,每个页面相关的LSN能够表明此页面最近是如何发生改变的。
2. xtrabackup_binlog_info : mysql服务器当前正在使用的二进制日志文件及至备份这一刻为止二进制日志事件的位置。
3. xtrabackup_binlog_pos_innodb : 二进制日志文件及用于InnoDB或XtraDB表的二进制日志文件的当前position。
4. xtrabackup_binary : 备份中用到的xtrabackup的可执行文件;
5. backup-my.cnf : 备份命令用到的配置选项信息

信息文件详细说明
# ---------------------------------------------全备信息---------------------------------------------
[root@db01 /backup]# cat 2019-09-02_15-08-06/xtrabackup_info 
uuid = 6af74c4e-cd50-11e9-bb11-dacf7d05a11b
name = 
tool_name = innobackupex
tool_command = --defaults-file=/etc/my.cnf --user=root --password=... /backup/
tool_version = 2.4.10
ibbackup_version = 2.4.10
server_version = 5.5.60-log
start_time = 2019-09-02 15:08:07
end_time = 2019-09-02 15:08:08
lock_time = 0
binlog_pos = filename 'mysql-bin.000001', position '18914'    # binlog 以及位置点
innodb_from_lsn = 0
innodb_to_lsn = 35569680
partial = N
incremental = N
format = file
compact = N
compressed = N
encrypted = N

[root@db01 /backup]# cat 2019-09-02_15-08-06/xtrabackup_checkpoints 
backup_type = full-backuped  # 备份类型(全备)
from_lsn = 0
to_lsn = 35569680          
last_lsn = 35569680
compact = 0
recover_binlog_info = 0

# ---------------------------------------------增量备份信息---------------------------------------------
[root@db01 /backup]# cat add/2019-09-02_15-26-40/xtrabackup_info 
uuid = 0317180f-cd53-11e9-bb11-dacf7d05a11b
name = 
tool_name = innobackupex
tool_command = --defaults-file=/etc/my.cnf --user=root --password=... --incremental /backup/add/ --incremental-basedir=/backup/2019-09-02_15-08-06/
tool_version = 2.4.10
ibbackup_version = 2.4.10
server_version = 5.5.60-log
start_time = 2019-09-02 15:26:40
end_time = 2019-09-02 15:26:42
lock_time = 0 
binlog_pos = filename 'mysql-bin.000001', position '20638'  # binlog 以及位置点
innodb_from_lsn = 35569680
innodb_to_lsn = 35572537
partial = N
incremental = Y
format = file
compact = N
compressed = N
encrypted = N
[root@db01 /backup]# cat add/2019-09-02_15-26-40/xtrabackup_checkpoints 
backup_type = incremental  # 备份类型(增量备份)
from_lsn = 35569680        # 开始点是全量备份的位置结束点
to_lsn = 35572537
last_lsn = 35572537
compact = 0
recover_binlog_info = 0

备份和恢复
# --no-timestamp 指定备份的目录名称,如果不加,则以2019-09-02_15-08-07时间格式自动命名

# 备份
# innobackupex --defaults-file=/etc/my.cnf --user=root --password=111111  --no-timestamp  /backup/$(date +%F)_backup
innobackupex --defaults-file=/etc/my.cnf --user=root --password=111111  --no-timestamp  /backup/full_backup

# 恢复数据库
停止数据库/
innobackupex --apply-log /backup/full_backup/
innobackupex --copy-back /backup/full_backup/
chown -R mysql:mysql /data/mysql # 修改恢复后的权限
启动数据库
 
增量备份和恢复
# ----------------------------------增量备份----------------------------------

# 全备
innobackupex --defaults-file=/etc/my.cnf --user=root --password=111111  --no-timestamp  /backup/2019backall
# 第一次增量备份
innobackupex --defaults-file=/etc/my.cnf --user=root --password=111111 --no-timestamp  --incremental-basedir=/backup/2019backall/  --incremental /backup/increment_data01
# 第二次增量备份
innobackupex --defaults-file=/etc/my.cnf --user=root --password=111111 --no-timestamp  --incremental-basedir=/backup/increment_data01/  --incremental /backup/increment_data02

# ----------------------------------增量恢复----------------------------------
# 先prepare全备
innobackupex --incremental --apply-log --redo-only /backup/2019backall/
# 再prepare第一个增量
innobackupex --incremental --apply-log --redo-only /backup/2019backall/  --incremental-dir=/backup/increment_data01/
# 再prepare第二增量
innobackupex --incremental --apply-log --redo-only /backup/2019backall/  --incremental-dir=/backup/increment_data02/
# 增量恢复完成
innobackupex --apply-log /backup/2019backall/
innobackupex --copy-back /backup/2019backall/

压缩接参数     --stream=tar 
# 压缩
innobackupex --defaults-file=/etc/my.cnf --user=root --password=111111  --no-timestamp --stream=tar  /backup/full_backup02/|gzip > /backup/backall.tar.gz

tar izxvf backall.tar.gz
温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,如有侵权我会在24小时之内删除!

欢迎使用手机扫描访问本站