菜单

Percona Xtrabackup快速备份MySQL

2018年12月16日 - mysql

1.1 了解备份方式

   1.2 创建备份用户

  1. mysql> grant reload,lock tables,replication client on *.* to 'bak'@'localhost' identified by 'bak2015';
  2. mysql> flush privileges;

1.3 安装方式

CentOS:

  1. # rpm -ivh http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
  2. # yum install percona-xtrabackup

xtrabackup2.2不支持MySQL5.1的Innodb引擎,如需要可安装2.0版本

Ubuntu:

  1. # sudo apt-get install xtrabackup  

14.04默认有这个包,14.04之前版本如果没有在这个地址下载对应的版本。

1.4 了解常用参数

2、完整备份与恢复

2.1 完整备份

  1. # innobackupex --user=bak --password='bak2015' /mysql_backup  

2.2 备份恢复

  1. # innobackupex --defaults-file=/etc/mysql/my.cnf --copy-back /home/loongtao/mysql_backup/2015-02-08_11-56-48/

2.3 备份文件说明

  1. # ls 2015-02-08_11-56-48

3、完整备份+增量备份与恢复

3.1 完整备份

  1. # innobackupex --user=bak --password='bak2015' /mysql_backup

备份后位置是:/mysql_backup/2015-02-08_11-56-48

3.2 增量备份1

  1. # innobackupex --user=bak --password='bak2015' --incremental /data1/mysql_backup --incremental-basedir=/mysql_backup/2015-02-08_11-56-48  #指定上次完整备份目录

3.3 增量备份2

  1. # innobackupex --user=bak --password='bak2015' --incremental /data1/mysql_backup --incremental-basedir=/mysql_backup/2015-02-08_12-16-06  #指定上次增量备份目录

3.4 查看xtrabackup_checkpoints文件

一目了然,可以看到根据日志序号来增量备份

wKioL1TXGvCSc7KkAALo5ttBsM8636.jpg

wKioL1TXGvCSc7KkAALo5ttBsM8636.jpg

3.5 备份恢复

3.5.1 备份恢复思路

将增量备份1、增量备份2…合并到完整备份,加到一起出来一个新的完整备份,将新的完整备份以拷贝的形式到数据库空目录(rm /var/lib/mysql/* -rf)

3.5.2 预备完整备份

xtrabackup把备份过程中可能有尚未提交的事务或已经提交但未同步数据文件的事务,写到xtrabackup_logfile文件,所以要先通过这个日志文件回滚,把未完成的事务同步到备份文件,保证数据文件处于一致性。

  1. # innobackup --apply-log --redo-only 2015-02-08_11-56-48
3.5.3 合并第一个增量备份
  1. # innobackupex --apply-log --redo-only /mysql_backup/2015-02-08_11-56-48/ --incremental-dir=mysql_backup/2015-02-08_12-16-06
3.5.4 合并第二个增量备份
  1. # innobackupex --apply-log --redo-only /mysql_backup/2015-02-08_11-56-48/ --incremental-dir=mysql_backup/2015-02-08_16-06-53
3.5.5 恢复完整备份

这时2015-02-08_11-56-48完整备份已经包含所有增量备份,可以通过查看checkpoints来核实

  1. # innobackupex --defaults-file=/etc/mysql/my.cnf --copy-back /mysql_backup/2015-02-08_11-56-48/
3.5.6 修改恢复数据文件权限
  1. # chown -R mysql.mysql /var/lib/mysql
3.5.7 启动MySQL,查看数据库恢复情况
  1. # /etc/init.d/mysqld start

4、备份文件归档压缩

4.1 归档并发送到备份服务器

  1. # innobackupex --databases=test --user=bak --password='bak2015' --stream=tar /mysql_backup 2>/mysql_backup/bak.log |ssh root@192.168.18.251 "cat - > /mysql_backup/`date +%F`.tar"

解压:tar -ixvf `date +%F`.tar

4.2 归档备份

  1. # innobackupex --databases=test --user=bak --password='bak2015' --stream=tar /mysql_backup > /mysql_backup/`date +%F`.tar

解压:tar -ixvf `date +%F`.tar

4.3 压缩归档备份

  1. # innobackupex --databases=test --user=bak --password='bak2015' --stream=tar /mysql_backup |gzip >/mysql_backup/`date +%F`.tar.gz

解压:tar -izxvf `date +%F`.tar.gz

发表评论

电子邮件地址不会被公开。 必填项已用*标注