16、Xtrabackup备份与恢复

XTRABACKUP

xtrabackup是percona公司开发的第三方备份软件,只备份innodb引擎表的ibd文件(frm不备份),不备份myisam引擎表。备份性能很高,备份期间没有任和锁,ddl、dml、select都不受影响

xtrabackup全备:

step1:这步只是在系统层做了个拷贝,数据库目录只拷贝ibd文件,frm表结构需要恢复时手动拷贝,log文件不备份

  1. [[email protected] data]# xtrabackup --backup --datadir=/mysql/data/--target-dir=/root/bak              

[[email protected] bak]# ls

db1  ibdata1  xtrabackup_checkpoints  xtrabackup_logfile

step2:这步会根据第一步的lsn结果扫描日志文件,将备份期间的新log、undo,补充到备份文件中,使他们合并成为完整的有一致性的

  1. [[email protected] bak]# xtrabackup --prepare --use-memory=50M--datadir=/mysql/data/--target-dir=/root/bak      

[[email protected] bak]# ls

db1  ibdata1  xtrabackup_binlog_pos_innodb  xtrabackup_checkpoints  xtrabackup_logfile


xtrabackup   增量备:

周一:首先做一个全备,但不要做prepare

insert into test3 values(1);commit;

xtrabackup --backup --datadir=/mysql/data/ --target-dir=/root/bak/1/

周二:基于周一做增量备,--incremental-basedir设置为周一全备的目录,表示基于哪天做增量

insert into test3 values(2);commit;

xtrabackup --backup --datadir=/mysql/data/ --target-dir=/root/bak/2/ --incremental-basedir=/root/bak/1/

周三:基于周二做增量备

insert into test3 values(3);commit;

xtrabackup --backup --datadir=/mysql/data/ --target-dir=/root/bak/3/ --incremental-basedir=/root/bak/2/

恢复:

--apply-log-only   只应用日志,把增量合在一起,而不产生日志

xtrabackup --prepare  --apply-log-only --redo-only --target-dir=/root/bak/1/

xtrabackup --prepare  --apply-log-only --redo-only --target-dir=/root/bak/1/ --incremental-basedir=/root/bak/2/

xtrabackup --prepare  --apply-log-only --redo-only --target-dir=/root/bak/1/ --incremental-basedir=/root/bak/3/

这时目录1,数据才是完整的了

xtrabackup --prepare   --target-dir=/root/bak/1

最终生成完整备份,可以看到目录1下面生成了ib_logfile日志文件





INNOBACKUPEX

使用innobackupex做完整备份:

先保证my.cnf配置文件中配置了 basedir 和 datadir,如果配置文件在其他位置,指定‘--defaults-file=/etc/my.cnf’

step1:生成完整备份,同时copy innodb和myisam以及frm文件,会锁myisam表

[[email protected] bak]# innobackupex --user=root /root/bak

  1. InnoDBBackupUtility v1.5.1-xtrabackup;Copyright2003,2009InnobaseOy
  2. and Percona LLC and/or its affiliates 2009-2013.  AllRightsReserved.
  3. This software is published under
  4. the GNU GENERAL PUBLIC LICENSE Version2,June1991.
  5. Get the latest version of PerconaXtraBackup, documentation, and help resources:
  6. http://www.percona.com/xb/p
  7. 14081014:09:34  innobackupex:Connecting to MySQL server with DSN ‘dbi:mysql:;mysql_read_default_group=xtrabackup‘ as ‘root‘  (using password: NO).
  8. 14081014:09:34  innobackupex:Connected to MySQL server
  9. 14081014:09:34  innobackupex:Executing a version check against the server...
  10. 14081014:09:34  innobackupex:Done.
  11. IMPORTANT:Please check that the backup run completes successfully.
  12.            At the end of a successful backup run innobackupex
  13.            prints "completed OK!".
  14. innobackupex:Using mysql server version 5.5.30-log
  15. innobackupex:Created backup directory /root/bak/2014-08-10_14-09-34
  16. 14081014:09:34  innobackupex:Starting ibbackup with command: xtrabackup  --defaults-group="mysqld"--backup --suspend-at-end --target-dir=/root/bak/2014-08-10_14-09-34--tmpdir=/tmp --extra-lsndir=‘/tmp‘
  17. innobackupex:Waitingfor ibbackup (pid=15364) to suspend
  18. innobackupex:Suspend file ‘/root/bak/2014-08-10_14-09-34/xtrabackup_suspended_2‘
  19. xtrabackup version 2.2.3 based on MySQL server 5.6.17Linux(x86_64)(revision id:)
  20. xtrabackup: uses posix_fadvise().
  21. xtrabackup: cd to /mysql/data
  22. xtrabackup: open files limit requested 0,set to 40960
  23. xtrabackup:using the following InnoDB configuration:
  24. xtrabackup:   innodb_data_home_dir =./
  25. xtrabackup:   innodb_data_file_path = ibdata1:10M:autoextend
  26. xtrabackup:   innodb_log_group_home_dir =./
  27. xtrabackup:   innodb_log_files_in_group =2
  28. xtrabackup:   innodb_log_file_size =5242880
  29. >> log scanned up to (1670110)
  30. [01]Copying./ibdata1 to /root/bak/2014-08-10_14-09-34/ibdata1
  31. >> log scanned up to (1670110)
  32. [01]        ...done
  33. >> log scanned up to (1670110)
  34. [01]Copying./db1/test3.ibd to /root/bak/2014-08-10_14-09-34/db1/test3.ibd
  35. [01]        ...done
  36. [01]Copying./db1/test1.ibd to /root/bak/2014-08-10_14-09-34/db1/test1.ibd
  37. [01]        ...done
  38. [01]Copying./db1/test4.ibd to /root/bak/2014-08-10_14-09-34/db1/test4.ibd
  39. [01]        ...done
  40. [01]Copying./mysql/abc.ibd to /root/bak/2014-08-10_14-09-34/mysql/abc.ibd
  41. [01]        ...done
  42. [01]Copying./db2/test.ibd to /root/bak/2014-08-10_14-09-34/db2/test.ibd
  43. [01]        ...done
  44. >> log scanned up to (1670110)
  45. xtrabackup:Creating suspend file ‘/root/bak/2014-08-10_14-09-34/xtrabackup_suspended_2‘ with pid ‘15364‘
  46. 14081014:09:38  innobackupex:Continuing after ibbackup has suspended
  47. 14081014:09:38  innobackupex:Executing FLUSH TABLES WITH READ LOCK...
  48. 14081014:09:38  innobackupex:All tables locked and flushed to disk
  49. 14081014:09:38  innobackupex:Starting to backup non-InnoDB tables and files
  50. innobackupex: in subdirectories of ‘/mysql/data‘
  51. innobackupex:Backing up file ‘/mysql/data/db1/test4.frm‘
  52. innobackupex:Backing up file ‘/mysql/data/db1/test3.frm‘
  53. >> log scanned up to (1670110)
  54. innobackupex:Backing up file ‘/mysql/data/db1/db.opt‘
  55. innobackupex:Backing up file ‘/mysql/data/db1/test1.frm‘
  56. innobackupex:Backing up files ‘/mysql/data/mysql/*.{frm,isl,MYD,MYI,MAD,MAI,MRG,TRG,TRN,ARM,ARZ,CSM,CSV,opt,par}‘(73 files)
  57. innobackupex:Backing up files ‘/mysql/data/performance_schema/*.{frm,isl,MYD,MYI,MAD,MAI,MRG,TRG,TRN,ARM,ARZ,CSM,CSV,opt,par}‘(18 files)
  58. innobackupex:Backing up file ‘/mysql/data/db2/db.opt‘
  59. innobackupex:Backing up file ‘/mysql/data/db2/test.frm‘
  60. 14081014:09:38  innobackupex:Finished backing up non-InnoDB tables and files
  61. 14081014:09:38  innobackupex:Executing FLUSH ENGINE LOGS...
  62. 14081014:09:38  innobackupex:Waitingfor log copying to finish
  63. xtrabackup:The latest check point (for incremental):‘1670110‘
  64. xtrabackup:Stopping log copying thread.
  65. .>> log scanned up to (1670110)
  66. xtrabackup:Creating suspend file ‘/root/bak/2014-08-10_14-09-34/xtrabackup_log_copied‘ with pid ‘15364‘
  67. xtrabackup:Transaction log of lsn (1670110) to (1670110) was copied.
  68. 14081014:09:39  innobackupex:All tables unlocked
  69. innobackupex:Backup created in directory ‘/root/bak/2014-08-10_14-09-34‘
  70. innobackupex:MySQL binlog position: filename ‘mysql-bin.000011‘, position 107
  71. 14081014:09:39  innobackupex:Connection to database server closed
  72. 14081014:09:39  innobackupex: completed OK!

step2:同步日志文件

[[email protected] bak]# innobackupex   --use-memory=50M --apply-log /root/bak/2014-08-10_14-09-34/

恢复完整备份:

service mysql stop

清空data目录

innobackupex会根据配置文件中datadir进行恢复

[[email protected] data]# innobackupex --copy-back /root/bak/2014-08-10_14-09-34/

chown mysql. * -R

service mysql start


 

使用innodbbackupex做增量备份

mkdir {1,2,3}

周一:

insert into test3 values(1);commit;

[[email protected] bak]# innobackupex --user=root /root/bak/1/

周二:

insert into test3 values(2);commit;

[[email protected] bak]# innobackupex --user=root --incremental /root/bak/2/ --incremental-basedir=/root/bak/1/2014-08-10_14-37-26/

周三:

insert into test3 values(3);commit;

[[email protected] 2]# innobackupex --user=root --incremental /root/bak/3/ --incremental-basedir=/root/bak/2/2014-08-10_14-42-01/

恢复增量备份:

准备原始备份:--redo-only同xtrabackup的apply-log-only

[[email protected] 2]# innobackupex --apply-log --redo-only /root/bak/1/2014-08-10_14-37-26/ --use-memory=50M --user=root

叠加周二增量:

[[email protected] 2]# innobackupex --apply-log --redo-only /root/bak/1/2014-08-10_14-37-26/ --incremental-dir=/root/bak/2/2014-08-10_14-42-01/ --use-memory=50m --user=root

叠加周三增量: 

[[email protected] 2]# innobackupex --apply-log --redo-only /root/bak/1/2014-08-10_14-37-26/ --incremental-dir=/root/bak/3/2014-08-10_14-43-40/ --use-memory=50m --user=root

这样最终在目录1生成完整备份文件。最后执行:

[[email protected] 2]# innobackupex --apply-log /root/bak/1/2014-08-10_14-37-26/ --use-memory=50m --user=root

将完整的增量备份恢复到数据库:

service mysql stop

清空data目录

[[email protected] mysql]#  innobackupex --copy-back /root/bak/1/2014-08-10_14-37-26/

chown mysql. * -R

service mysql start

OK~~

时间: 2024-10-14 01:25:15

16、Xtrabackup备份与恢复的相关文章

MySQL之Xtrabackup备份与恢复

MySQL之Xtrabackup备份与恢复 MySQL之Xtrabackup备份与恢复 一.Xtrabackup介绍 MySQL冷备.mysqldump.MySQL热拷贝都无法实现对数据库进行增量备份.在实际生产环境中增量备份是非常实用的,如果数据大于50G或100G,存储空间足够的情况下,可以每天进行完整备份,如果每天产生的数据量较大,需要定制数据备份策略.例如每周实用完整备份,周一到周六实用增量备份.而Percona-Xtrabackup就是为了实现增量备份而出现的一款主流备份工具,xtra

xtrabackup备份与恢复实践

说明 xtrabackup  --percona 特点: 开源,在线备份innodb表 支持限速备份,避免对业务造成影响 支持流备 支持增量备份 支持备份文件压缩与加密 支持并行备份与恢复,速度快 地址:https://www.percona.com/downloads/XtraBackup xtrabackup备份原理 基于innodb的crash-recovery功能 备份期间允许用户读写,写请求产生redo日志 从磁盘上拷贝数据文件 从innodb redo log  file实时拷贝走备

xtrabackup备份与恢复MySQL

Xtrabackup 是percona公司的开源项目,用以实现类似innodb官方的热备份工具InnoDB Hot Backup的功能,能够非常快速地备份与恢复mysql数据库. Xtrabackup中包含两个工具: xtrabackup是用于热备份innodb, xtradb表中数据的工具,不能备份其他类型的表,也不能备份数据表结构: innobackupex是将xtrabackup进行封装的perl脚本,提供了备份myisam表的能力. 下面介绍xtrabackup的全部.增量的备份与恢复.

xtrabackup备份与恢复

一:安装xtrabackup 二:备份:完全备份+二进制日志 三:恢复:完全备份+二进制日志 四:完全备份+增量备份 五:恢复:完全备份 1.1如果遇到如下问题是因为需要依赖包 1.2解决方法 yum -y install perl perl-devel libaio libaio-devel perl-Time-HiResperl-DBD-MySQL 1.3如果mysql是通过源码编译方式安装的,在安装xtrabackup的时候记得在最后添加--nodeps,因为它是依赖mysql clien

XtraBackup 备份与恢复

前一篇文章我们讲到了PXB的原理以及安装方法,接下来将详细介绍 XtraBackup 备份和恢复的具体过程. xtrabackup 工具有许多参数,具体可去官网查询(xtrabackup 参数选项),这里简单介绍一些常用的参数. --defaults-file=[MY.CNF] 指定配置文件:只能从给定的文件中读取默认选项. 且必须作为命令行上的第一个选项:必须是一个真实的文件,它不能是一个符号链接. --database=# 指定备份的数据库和表,格式为:--database="db1[.tb

XtraBackup 备份与恢复实例讲解

XtraBackup官网 www.percona.com 下载XtraBackup wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.3.3/binary/redhat/6/i386/percona-xtrabackup-2.3.3-1.el6.i686.rpm XtraBackup基本安装 yum install percona-xtrabackup-2.3.3-1.el6.i686.rpm xtrab

MySQL备份与恢复常用方法总结(mysqldump/xtrabackup/lvm快照备份/二进制日志及时点恢复)

MySQL备份与恢复常用方法总结 (mysqldump/xtrabackup/lvm快照备份/逻辑备份与恢复/二进制日志及时点恢复) 自言:学习在于总结,把所了解的类似东西放到一起更能加深记忆 一.了解备份相关知识 1)按服务器备份时状态可分为:     热备份:读.写不受影响:     温备份:仅可以执行读操作:     冷备份:离线备份:读.写操作均中止:2)按服务器备份数据集可分为:     物理备份:复制数据文件:     逻辑备份:将数据导出至文本文件中:3)按服务器备份数据量可分为:

mysqldump xtrabackup 逻辑备份和物理备份

逻辑备份 逻辑备份是备份sql语句,在恢复的时候执行备份的sql语句实现数据库数据的重现. 工具:mysqldump 特点: 1.可移植性比较强 2.备份和恢复的花费时间长,不适用于大型业务系统 物理备份 物理备份就是备份数据文件了,比较形象点就是cp下数据文件,但真正备份的时候自然不是的cp这么简单. 工具:xtrabackup 特点: 1.不具备移植性,备份环境和恢复环境必须是完全相同的 2.备份和恢复时间较快,适用于大型业务系统 mysqldump 备份原理:通过协议连接到mysql数据库

多种方法备份Mysql数据库

前言:Mysql数据库的备份是重中之重,在生产过程中,数据库会因硬件故障,软件故障,黑客攻击,误操作等造成数据丢失,但经过精密的备份,完全能把数据恢复过来. 一,备份工具 这里介绍几种常用的备份方式 cp:物理备份工具, 适用于所有的存储引擎, 冷备.完全备份.部分备份 mysqldump:逻辑备份工具, 适用于所有的存储引擎, 支持温备.完全备份.部分备份.对于InnoDB存储引擎支持热备 xtrabackup:一款非常强大的InnoDB/XtraDB热备工具, 支持完全备份.增量备份, 二,