Percona Xtrabackup 快速备份 MySQL

伯乐在线转载补充:

Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。

Xtrabackup有两个主要的工具:xtrabackup、innobackupex

  • (1)xtrabackup只能备份InnoDB和XtraDB两种数据表,而不能备份MyISAM数据表
  • (2)innobackupex-1.5.1则封装了xtrabackup,是一个脚本封装,所以能同时备份处理innodb和myisam,但在处理myisam时需要加一个读锁

刚开始用mysqldump,备份100G+的数据库,再加上服务器繁忙,备份速度像蜗牛似的,于是寻找更高效的备份方法。

网上都说用xtrabackup比较适合备份大的数据库,而且备份效率也高,就尝试使用一次,结果明显感觉比mysqldump备份与恢复速度就是快不少,那以后就用它了。结合生产环境,写了这篇文档,刚接触的朋友,可以参考下,不多说,入正题!

1、初次备份前准备工作

1.1 了解备份方式

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

1.2 创建备份用户

1.3 安装方式

CentOS:

xtrabackup2.2 不支持 MySQL5.1的 InnoDB 引擎,如需要可安装2.0版本(https://www.percona.com/downloads/XtraBackup/XtraBackup-2.0.8/RPM/rhel6/x86_64/percona-xtrabackup-20-2.0.8-587.rhel6.x86_64.rpm)

Ubuntu:

1.4 了解常用参数

  • –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、完整备份与恢复

2.1 完整备份

2.2 备份恢复

2.3 备份文件说明

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

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

3.1 完整备份

3.2 增量备份1

3.3 增量备份2

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

wKioL1TXGvCSc7KkAALo5ttBsM8636.jpg

3.5 备份恢复

3.5.1 备份恢复思路

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

3.5.2 预备完整备份

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

3.5.3 合并第一个增量备份

3.5.4 合并第二个增量备份

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

3.5.6 修改恢复数据文件权限

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

4、备份文件归档压缩

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

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

4.2 归档备份

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

4.3 压缩归档备份

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

1 3 收藏 评论

相关文章

可能感兴趣的话题



直接登录
跳到底部
返回顶部