对于MySQL数据库的热备。xtrabackup是除了MySQL enterprise backup之外的不二之选。

该工具提供了基于innodb存储引擎的热备。支持全量,增量备份,部分备份,时点恢复以及使用xtrabackup备份来重做slave等。xtrabackup工具包包括一个innobackupex命令行工具,同一时候支持InnoDB引擎以及MyISAM引擎。

本文主要描写叙述的是trabackup的备份原理并给出了相关演示。

1、安装部署Xtrabackup
  下载地址:http://www.percona.com/software/percona-xtrabackup
  # 本次安装的版本号为2.2.5,下载后解压为rpm文件。直接安装就可以
  
  # tar -xvf Percona-XtraBackup-2.2.5-r5027-el5-x86_64-bundle.tar
  # rpm -Uvh percona-xtrabackup-2.2.5-5027.el5.x86_64.rpm
  # rpm -Uvh percona-xtrabackup-debuginfo-2.2.5-5027.el5.x86_64.rpm
  # rpm -Uvh percona-xtrabackup-test-2.2.5-5027.el5.x86_64.rpm
  [root@app ~]# ls /usr/bin/xtraba* /usr/bin/inno*
    /usr/bin/innobackupex  /usr/bin/innochecksum  /usr/bin/xtrabackup
   
    Xtrabackup有两个基本的工具:xtrabackup、innobackupex
  a、xtrabackup仅仅能备份InnoDB和XtraDB两种数据表,而不能备份MyISAM数据表
  b、innobackupex是一个perl脚本封装了xtrabackup。支持同一时候备份InnoDB和MyISAM引擎的表。
    注:本文描写叙述的xtrabackup与innobackupex能够看做是同一概念。

2、xtrabackup工作原理
    InnoDB引擎非常大程度上与Oracle相似,使用redo。undo机制,因此在热备期间须要考虑对于日志缓冲区在线事物日志及时写出到文件的问题。

假设log buffer没有及时写出将被日志的循环写特性覆盖。

xtrabackup在启动时会记住log sequence number(LSN)。然后一页一页地复制InnoDB的数据。与此同一时候,监控log buffer中的日志情况,一旦log buffer发生变化。即数据发生了不一致,该过程会马上被捕获并把变化的页面拷贝到xtrabckup log,直到所有innoDB数据文件复制完毕之后。停止监控log buffer及日志复制。
    xtrabackup在恢复期间对提交的事务前滚,未提交或失败的事务进行回滚。从而保证数据的一致性。

因此对于InnoDB表在备份期间不会锁表。

因为XtraBackup其内置的InnoDB库打开文件的时候是rw的,所以执行XtraBackup的用户,必须对InnoDB的数据文件具有读写权限。

3、extrabackup的备份步骤

4、演示全备

  1. #当前环境
  2. robin@localhost[(none)]> show variables like 'version';
  3. +---------------+------------+
  4. | Variable_name | Value |
  5. +---------------+------------+
  6. | version | 5.6.12-log |
  7. +---------------+------------+
  8.  
  9. robin@localhost[(none)]> show variables like '%default_storage%';
  10. +------------------------+--------+
  11. | Variable_name | Value |
  12. +------------------------+--------+
  13. | default_storage_engine | InnoDB |
  14. +------------------------+--------+
  15.  
  16. #全备数据库
  17. [mysql@app ~]$ innobackupex --user=robin -password=xxx --port=3606 --socket=/tmp/mysql3606.sock \
  18. > --defaults-file=/data/inst3606/data3606/my3606.cnf /data/bak/hotbak
  19.  
  20. InnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oy
  21. ............
  22. 141105 15:41:59 innobackupex: Connecting to MySQL server with DSN 'dbi:mysql:;
  23. .............
  24. innobackupex: Using mysql server version 5.6.12-log
  25.  
  26. innobackupex: Created backup directory /data/bak/hotbak/2014-11-05_15-42-02 #在指定备份文件夹下创建一个基于时间戳的文件夹
  27.  
  28. 141105 15:42:02 innobackupex: Starting ibbackup with command: xtrabackup --defaults-file="/data/inst3606/data3606/my3606.cnf"
  29. --defaults-group="mysqld" --backup --suspend-at-end --target-dir=/data/bak/hotbak/2014-11-05_15-42-02
  30. --tmpdir=/tmp --extra-lsndir='/tmp'
  31. innobackupex: Waiting for ibbackup (pid=27441) to suspend
  32. innobackupex: Suspend file '/data/bak/hotbak/2014-11-05_15-42-02/xtrabackup_suspended_2'
  33.  
  34. #以下从配置文件获取有关innodb的配置信息
  35. xtrabackup version 2.2.5 based on MySQL server 5.6.21 Linux (x86_64) (revision id: )
  36. xtrabackup: uses posix_fadvise().
  37. xtrabackup: cd to /data/inst3606/data3606
  38. xtrabackup: open files limit requested 0, set to 1024 # Author : Leshami
  39. xtrabackup: using the following InnoDB configuration: # Blog : http://blog.csdn.net/leshami
  40. xtrabackup: innodb_data_home_dir = ./
  41. xtrabackup: innodb_data_file_path = ibdata1:10M:autoextend
  42. xtrabackup: innodb_log_group_home_dir = ./
  43. xtrabackup: innodb_log_files_in_group = 2
  44. xtrabackup: innodb_log_file_size = 50331648
  45. >> log scanned up to (380655683) #扫描innodb日志lsn并复制inndodb系统表空间
  46. [01] Copying ./ibdata1 to /data/bak/hotbak/2014-11-05_15-42-02/ibdata1
  47. >> log scanned up to (380655683)
  48. >> log scanned up to (380655683)
  49. [01] ...done
  50. [01] Copying ./mysql/slave_relay_log_info.ibd to /data/bak/hotbak/2014-11-05_15-42-02/mysql/slave_relay_log_info.ibd
  51. #相似部分省略。所有是基于innodb引擎的ibd文件...
  52. [01] Copying ./tempdb/tb_user.ibd to /data/bak/hotbak/2014-11-05_15-42-02/tempdb/tb_user.ibd
  53. [01] ...done
  54. >> log scanned up to (380655683)
  55. xtrabackup: Creating suspend file '/data/bak/hotbak/2014-11-05_15-42-02/xtrabackup_suspended_2' with pid '27441'
  56.  
  57. 141105 15:42:30 innobackupex: Continuing after ibbackup has suspended
  58. 141105 15:42:30 innobackupex: Executing FLUSH TABLES WITH READ LOCK... #缓冲写出到数据文件并锁表
  59. 141105 15:42:30 innobackupex: All tables locked and flushed to disk
  60.  
  61. 141105 15:42:30 innobackupex: Starting to backup non-InnoDB tables and files #复制非innodb表及相关文件
  62. innobackupex: in subdirectories of '/data/inst3606/data3606'
  63. innobackupex: Backing up files '/data/inst3606/data3606/mysql/*.{frm,isl,MYD,MYI,MAD,MAI,MRG,TRG,TRN,ARM,ARZ,CSM,CSV,opt,par}' (74 files)
  64. >> log scanned up to (380655683)
  65. innobackupex: Backing up files '/data/inst3606/data3606/salary/*.{frm,isl,MYD,MYI,MAD,MAI,MRG,TRG,TRN,ARM,ARZ,CSM,CSV,opt,par}' (99 files)
  66. innobackupex: Backing up files '/data/inst3606/data3606/performance_schema/*.{frm,isl,MYD,MYI,MAD,MAI,MRG,TRG,TRN,ARM,ARZ,CSM,CSV,opt,par}' (53 files)
  67. innobackupex: Backing up file '/data/inst3606/data3606/tempdb/tb_user.frm'
  68. innobackupex: Backing up file '/data/inst3606/data3606/tempdb/db.opt'
  69. 141105 15:42:31 innobackupex: Finished backing up non-InnoDB tables and files
  70.  
  71. 141105 15:42:31 innobackupex: Executing FLUSH ENGINE LOGS... #innodb logfile写出到磁盘
  72. 141105 15:42:31 innobackupex: Waiting for log copying to finish
  73.  
  74. xtrabackup: The latest check point (for incremental): '380655683' #获取最新的lsn
  75. xtrabackup: Stopping log copying thread.
  76. .>> log scanned up to (380655683)
  77.  
  78. xtrabackup: Creating suspend file '/data/bak/hotbak/2014-11-05_15-42-02/xtrabackup_log_copied' with pid '27441'
  79. xtrabackup: Transaction log of lsn (380655683) to (380655683) was copied.
  80. 141105 15:42:32 innobackupex: All tables unlocked #unlock table
  81.  
  82. innobackupex: Backup created in directory '/data/bak/hotbak/2014-11-05_15-42-02' #列出binlog的位置
  83. innobackupex: MySQL binlog position: filename 'inst3606bin.000001', position 352, GTID of the last change ''
  84. 141105 15:42:32 innobackupex: Connection to database server closed
  85. 141105 15:42:32 innobackupex: completed OK! 

5、备份的相关信息

  1. 除了从输入的日志能够看到备份的相关信息之外。也能够从备份位置获取备份期间产生的相关信息
  2. #查看备份期间生成的文件
  3. [mysql@app ~]$ ls /data/bak/hotbak/2014-11-05_15-42-02/
  4. backup-my.cnf mysql salary xtrabackup_binlog_info xtrabackup_info
  5. ibdata1 performance_schema tempdb xtrabackup_checkpoints xtrabackup_logfile
  6.  
  7. #查看备份有关的整体信息
  8. [mysql@app ~]$ more /data/bak/hotbak/2014-11-05_15-42-02/xtrabackup_info
  9. uuid = 4d49753a-64bf-11e4-8850-8c89a5d108ae
  10. name =
  11. tool_name = innobackupex
  12. tool_command = --user=robin -password=xxx --port=3606 --socket=/tmp/mysql3606.sock
  13. --defaults-file=/data/inst3606/data3606/my3606.cnf /data/bak/hotbak
  14. tool_version = 1.5.1-xtrabackup
  15. ibbackup_version = xtrabackup version 2.2.5 based on MySQL server 5.6.21 Linux (x86_64) (revision id: )
  16. server_version = 5.6.12-log
  17. start_time = 2014-11-05 15:41:59
  18. end_time = 2014-11-05 15:42:32
  19. lock_time = 2
  20. binlog_pos = filename 'inst3606bin.000001', position 352, GTID of the last change ''
  21. innodb_from_lsn = 0
  22. innodb_to_lsn = 380655683
  23. partial = N
  24. incremental = N
  25. format = file
  26. compact = N
  27. compressed = N
  28. encrypted = N
  29.  
  30. #查看备份binlog有关的信息
  31. [mysql@app ~]$ more /data/bak/hotbak/2014-11-05_15-42-02/xtrabackup_binlog_info
  32. inst3606bin.000001 352
  33.  
  34. #检查点的相关信息
  35. [mysql@app ~]$ more /data/bak/hotbak/2014-11-05_15-42-02/xtrabackup_checkpoints
  36. backup_type = full-backuped
  37. from_lsn = 0
  38. to_lsn = 380655683
  39. last_lsn = 380655683
  40. compact = 0 

6、innobackupexe备份产生的相关文件
  backup-my.cnf
  MySQL files +
  xtrabackup_binlog_info
  xtrabackup_binlog_pos_innodb
  xtrabackup_slave_info(When –slave-info is used)
  xtrabackup_checkpoints
  Only after –apply-log
  xtrabackup_logfile
  xtrabackup_binary

Innobackupex 全备数据库的更多相关文章

  1. xtrabackup之Innobackupex全备数据库

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

  2. xtrabackup之Innobackupex全备恢复

    一.当前环境 [mysql@hadoop1 ~]$ mysql --defaults-/my.cnf -uroot -p123456 -P3306 mysql> show variables l ...

  3. Innobackupex全备恢复(原理、演示)

    一.  Innobackupex恢复原理    After creating a backup, the data is not ready to be restored. There might b ...

  4. mysql之 Innobackupex全备恢复(原理、演示)

    一.  Innobackupex恢复原理    After creating a backup, the data is not ready to be restored. There might b ...

  5. innobackupex 全备、增备脚本

    全备脚本:innobackupex --defaults-file=/etc/my.cnf --user root --password mypasswd /mydata/fullbak/ 增备脚本: ...

  6. MySQL alter table时执行innobackupex全备再看Seconds_Behind_Master

    1.场景描述 早上7:25 接到Report中心同学告警,昨天业务报表数据没有完整跑出来,缺少500位业务员的数据,并且很快定位到,缺少的是huabei_order库上的数据.Report中心的数据是 ...

  7. 基于Innobackupex的全备恢复

    对于MySQL数据库的热备,xtrabackup是大多数DBA朋友们的选择.xtrabackup内嵌了一个innobackupex可用于热备MySQL数据库.本文描写叙述了基于innobackupex ...

  8. Innobackupex MySQL 全备、增备及恢复

    简介: 在这之前都是通过 mysqldump 来备份数据库的,由于是逻辑备份,所以采用这种备份方式数据是很安全的,跨平台.版本都很容易. 凡事有利必有弊,逻辑备份在你数据库比较大时,备份.恢复数据所耗 ...

  9. 在线热备份数据库之innobackupex 完整备份InnoDB

    在线热备份数据库innobackupex 完整备份InnoDB XtraBackup xtrabackup C程序,支持InnoDB/XtraDB innobackupex : 以Perl脚本封装xt ...

随机推荐

  1. ios 以NSObject为父类的各类间继承关系

  2. 修改UISearchBar输入框字体颜色

    UITextField *searchField = [mySearchBar valueForKey:@"_searchField"]; searchField.textColo ...

  3. web前端之 CSS

    CSS概述 CSS 指层叠样式表 (Cascading Style Sheets),说白了就是给html代码穿上好看的衣服,让页面变得好看 CSS存在形式 1.在标签的属性中设置,优先级较高 代码如下 ...

  4. 【转】invokeRequired属性和 invoke()方法

    C#中禁止跨线程直接访问控件,InvokeRequired是为了解决这个问题而产生的,当一个控件的InvokeRequired属性值为真时,说明有一个创建它以外的线程想访问它. 此时它将会在内部调用n ...

  5. Android开发中用到的框架、库介绍

    Android开发中用到的框架介绍,主要记录一些比较生僻的不常用的框架,不断更新中...... 网路资源:http://www.kuqin.com/shuoit/20140907/341967.htm ...

  6. 解决ScrollView嵌套ListView和GridView冲突的方法

    本文摘抄自:http://blog.csdn.net/yuhailong626/article/details/20639217 原文地址:http://blog.csdn.net/yuhailong ...

  7. myeclipse8.6 for spring环境配置

     

  8. Niagara AX连接MySQL数据库

    步骤如下 1.安装Niagara AX (3.8.38): 2.安装MySQL(5.6.25):将MySQL\Connector.J 5.1\mysql-connector-java-5.1.35-b ...

  9. 从汇编看c++中的placement operator new

    placement operator new是重载的operator new运算符,它允许我们将对象放到一个指定的内存中.下面来看c++源码: class X { private: int _x; p ...

  10. CSS3弹性盒模型布局模块介绍

    来源:Robert’s talk原文:http://robertnyman.com/2010/12/02/css3-flexible-box-layout-module-aka-flex-box-in ...