Linux扩展应用 ·

Percona Xtrabackup快速备份MySQL

[隐藏]

初次备份前准备工作

了解备份方式

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

创建备份用户

安装方式

CentOS:

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

Ubuntu:

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

了解常用参数

  • --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 #备份到远程主机

完整备份与恢复

完整备份

备份恢复

2.3 备份文件说明

  • backup-my.cnf:记录 innobackup 使用到 mysql 参数
  • xtrabackup_binary:备份中用到的可执行文件
  • xtrabackup_checkpoints:记录备份的类型、开始和结束的日志序列号
  • xtrabackup_logfile:备份中会开启一个 log copy 线程,用来监控 innodb 日志文件(ib_logfile),如果修改就会复制到这个文件

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

完整备份

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

增量备份1

增量备份2

查看xtrabackup_checkpoints文件

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

备份恢复

备份恢复思路

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

预备完整备份

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

合并第一个增量备份

合并第二个增量备份

恢复完整备份

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

启动MySQL,查看数据库恢复情况

备份文件归档压缩

归档并发送到备份服务器

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

归档备份

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

压缩归档备份

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

参与评论