xtrabackup 使用

Posted on Posted in mysql

## 备份类型

- 热备份:读写不受影响(mysqldump-->innodb)
- 温备份:仅可以执行读操作(mysqldump-->myisam)
- 冷备份:离线备份,读写都不可用
- 逻辑备份:将数据导出文本文件中(mysqldump)
- 物理备份:将数据文件拷贝(xtrabackup、mysqlhotcopy)
- 完整备份:备份所有数据
- 增量备份:仅备份上次完整备份或增量备份以来变化的数据
- 差异备份:仅备份上次完整备份以来变化的数据

## 环境

  1. CentOS release 6.7 (Final)  
  2. mysql 5.7.11  
  3. xtrabackup-24  

## 安装

  1. mysql> grant reload,lock tables,replication client on *.* to 'testuser'@'localhost' identified by '123456789';  
  2. mysql> flush privileges;  
  3.   
  4. yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm  
  5. yum install percona-xtrabackup-24  

#### 参数

- --user= #指定数据库备份用户
- --password= #指定数据库备份用户密码
- --port= #指定数据库端口
- --host= #指定备份主机
- --socket= #指定socket文件路径
- --databases= #备份指定数据库,多个空格隔开,如--databases="dbname1 dbname2",不加备份所有库
- --defaults-file= #指定my.cnf配置文件
- --apply-log #日志回滚
- --incremental= #增量备份,后跟增量备份路径
- --incremental-basedir= #增量备份,指上次增量备份路径
- --redo-only #合并全备和增量备份数据文件
- --copy-back #将备份数据复制到数据库,数据库目录要为空
- --no-timestamp #生成备份文件不以时间戳为目录名
- --stream= #指定流的格式做备份,--stream=tar,将备份文件归档
- --remote-host=user@ip DST_DIR #备份到远程主机

## 完整备份

  1. xtrabackup --backup --user=testuser --password=123456789 --datadir=/var/lib/mysql --target-dir=/data/mysql57/  

## 备份恢复

#### 第一次恢复准备

  1. # 目的 : 使数据文件保持一致,但没有创建新的InnoDB日志文件,如果在此时恢复数据并启动MySQL,此时MySQL需要创建新的日志文件,比较耗时。  
  2. xtrabackup --prepare --target-dir=/data/mysql57/  

#### 第二次恢复准备

  1. # 目的:此时xtrbackup囧创建日志文件,在启动MySQL时,将更减少时间。  
  2. xtrabackup --prepare --target-dir=/data/mysql57/  

#### 恢复

  1. rsync -avrP /data/mysql57/ /var/lib/mysql/  
  2. chown -R mysql:mysql /var/lib/mysql  

## 增量备份

  1. # 由于增量备份时建立在完全备份的基础上,所以首先创建完全备份    
  2. xtrabackup --user=testuser --password=123456789 --backup --target-dir=/data/mysql57/ --datadir=/var/lib/mysql/  
  3. # 创建增量备份    
  4. xtrabackup --user=testuser --password=123456789 --backup --target-dir=/data/mysql57/inc1 --incremental-basedir=/data/mysql57/ --datadir=/var/lib/mysql/  
  5. xtrabackup --user=testuser --password=123456789 --backup --target-dir=/data/mysql57/inc2 --incremental-basedir=/data/mysql57/ --datadir=/var/lib/mysql/  
  6. # --target-dir 增量备份存储目录    
  7. # --incemental-base-dir 基于该目录做增量备份    

## 增量备份恢复

  1. xtrabackup --prepare --apply-log-only --target-dir=/data/mysql57 #回滚事物,未完成的事务同步到备份文件  
  2. xtrabackup --prepare --apply-log-only --target-dir=/data/mysql57 --incremental-dir=/data/mysql57/inc1  
  3. xtrabackup --prepare --apply-log-only --target-dir=/data/mysql57 --incremental-dir=/data/mysql57/inc2  
  4. #执行上面的恢复流程即可  

## 备份文件归档压缩

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

  1. xtrabackup --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"  
  2. # 解压缩  
  3. tar -ixvf `date +%F`.tar  

#### 压缩归档备份

  1. xtrabackup --databases=test --user=bak --password='bak2015' --stream=tar /mysql_backup |gzip >/mysql_backup/`date +%F`.tar.gz  
» 转载请注明来源:若我若鱼 » xtrabackup 使用

Leave a Reply

Your email address will not be published. Required fields are marked *

sixteen − thirteen =