对于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、演示全备

#当前环境
robin@localhost[(none)]> show variables like 'version';
+---------------+------------+
| Variable_name | Value |
+---------------+------------+
| version | 5.6.12-log |
+---------------+------------+ robin@localhost[(none)]> show variables like '%default_storage%';
+------------------------+--------+
| Variable_name | Value |
+------------------------+--------+
| default_storage_engine | InnoDB |
+------------------------+--------+ #全备数据库
[mysql@app ~]$ innobackupex --user=robin -password=xxx --port=3606 --socket=/tmp/mysql3606.sock \
> --defaults-file=/data/inst3606/data3606/my3606.cnf /data/bak/hotbak InnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oy
............
141105 15:41:59 innobackupex: Connecting to MySQL server with DSN 'dbi:mysql:;
.............
innobackupex: Using mysql server version 5.6.12-log innobackupex: Created backup directory /data/bak/hotbak/2014-11-05_15-42-02 #在指定备份文件夹下创建一个基于时间戳的文件夹 141105 15:42:02 innobackupex: Starting ibbackup with command: xtrabackup --defaults-file="/data/inst3606/data3606/my3606.cnf"
--defaults-group="mysqld" --backup --suspend-at-end --target-dir=/data/bak/hotbak/2014-11-05_15-42-02
--tmpdir=/tmp --extra-lsndir='/tmp'
innobackupex: Waiting for ibbackup (pid=27441) to suspend
innobackupex: Suspend file '/data/bak/hotbak/2014-11-05_15-42-02/xtrabackup_suspended_2' #以下从配置文件获取有关innodb的配置信息
xtrabackup version 2.2.5 based on MySQL server 5.6.21 Linux (x86_64) (revision id: )
xtrabackup: uses posix_fadvise().
xtrabackup: cd to /data/inst3606/data3606
xtrabackup: open files limit requested 0, set to 1024 # Author : Leshami
xtrabackup: using the following InnoDB configuration: # Blog : http://blog.csdn.net/leshami
xtrabackup: innodb_data_home_dir = ./
xtrabackup: innodb_data_file_path = ibdata1:10M:autoextend
xtrabackup: innodb_log_group_home_dir = ./
xtrabackup: innodb_log_files_in_group = 2
xtrabackup: innodb_log_file_size = 50331648
>> log scanned up to (380655683) #扫描innodb日志lsn并复制inndodb系统表空间
[01] Copying ./ibdata1 to /data/bak/hotbak/2014-11-05_15-42-02/ibdata1
>> log scanned up to (380655683)
>> log scanned up to (380655683)
[01] ...done
[01] Copying ./mysql/slave_relay_log_info.ibd to /data/bak/hotbak/2014-11-05_15-42-02/mysql/slave_relay_log_info.ibd
#相似部分省略。所有是基于innodb引擎的ibd文件...
[01] Copying ./tempdb/tb_user.ibd to /data/bak/hotbak/2014-11-05_15-42-02/tempdb/tb_user.ibd
[01] ...done
>> log scanned up to (380655683)
xtrabackup: Creating suspend file '/data/bak/hotbak/2014-11-05_15-42-02/xtrabackup_suspended_2' with pid '27441' 141105 15:42:30 innobackupex: Continuing after ibbackup has suspended
141105 15:42:30 innobackupex: Executing FLUSH TABLES WITH READ LOCK... #缓冲写出到数据文件并锁表
141105 15:42:30 innobackupex: All tables locked and flushed to disk 141105 15:42:30 innobackupex: Starting to backup non-InnoDB tables and files #复制非innodb表及相关文件
innobackupex: in subdirectories of '/data/inst3606/data3606'
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)
>> log scanned up to (380655683)
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)
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)
innobackupex: Backing up file '/data/inst3606/data3606/tempdb/tb_user.frm'
innobackupex: Backing up file '/data/inst3606/data3606/tempdb/db.opt'
141105 15:42:31 innobackupex: Finished backing up non-InnoDB tables and files 141105 15:42:31 innobackupex: Executing FLUSH ENGINE LOGS... #innodb logfile写出到磁盘
141105 15:42:31 innobackupex: Waiting for log copying to finish xtrabackup: The latest check point (for incremental): '380655683' #获取最新的lsn
xtrabackup: Stopping log copying thread.
.>> log scanned up to (380655683) xtrabackup: Creating suspend file '/data/bak/hotbak/2014-11-05_15-42-02/xtrabackup_log_copied' with pid '27441'
xtrabackup: Transaction log of lsn (380655683) to (380655683) was copied.
141105 15:42:32 innobackupex: All tables unlocked #unlock table innobackupex: Backup created in directory '/data/bak/hotbak/2014-11-05_15-42-02' #列出binlog的位置
innobackupex: MySQL binlog position: filename 'inst3606bin.000001', position 352, GTID of the last change ''
141105 15:42:32 innobackupex: Connection to database server closed
141105 15:42:32 innobackupex: completed OK! 

5、备份的相关信息

除了从输入的日志能够看到备份的相关信息之外。也能够从备份位置获取备份期间产生的相关信息
#查看备份期间生成的文件
[mysql@app ~]$ ls /data/bak/hotbak/2014-11-05_15-42-02/
backup-my.cnf mysql salary xtrabackup_binlog_info xtrabackup_info
ibdata1 performance_schema tempdb xtrabackup_checkpoints xtrabackup_logfile #查看备份有关的整体信息
[mysql@app ~]$ more /data/bak/hotbak/2014-11-05_15-42-02/xtrabackup_info
uuid = 4d49753a-64bf-11e4-8850-8c89a5d108ae
name =
tool_name = innobackupex
tool_command = --user=robin -password=xxx --port=3606 --socket=/tmp/mysql3606.sock
--defaults-file=/data/inst3606/data3606/my3606.cnf /data/bak/hotbak
tool_version = 1.5.1-xtrabackup
ibbackup_version = xtrabackup version 2.2.5 based on MySQL server 5.6.21 Linux (x86_64) (revision id: )
server_version = 5.6.12-log
start_time = 2014-11-05 15:41:59
end_time = 2014-11-05 15:42:32
lock_time = 2
binlog_pos = filename 'inst3606bin.000001', position 352, GTID of the last change ''
innodb_from_lsn = 0
innodb_to_lsn = 380655683
partial = N
incremental = N
format = file
compact = N
compressed = N
encrypted = N #查看备份binlog有关的信息
[mysql@app ~]$ more /data/bak/hotbak/2014-11-05_15-42-02/xtrabackup_binlog_info
inst3606bin.000001 352 #检查点的相关信息
[mysql@app ~]$ more /data/bak/hotbak/2014-11-05_15-42-02/xtrabackup_checkpoints
backup_type = full-backuped
from_lsn = 0
to_lsn = 380655683
last_lsn = 380655683
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. Unity Navigation面板了解

    上次讲解了下Navigation的简单使用, 这次来看看Navigation面板的一些参数 NavigationStatic 勾选后表示该对象参与导航网格的烘培. OffMeshLink Genera ...

  2. 盒子模型&position定位

    有时候深深的感觉语文这门课程其实很有用, 至少以前学的时候没有感觉到 直到现在阅读大量的别人的资料文章的时候或者是看一些题目....... 总之:认真阅读小心品味 当然,前面的孤言自语和本文无关,只是 ...

  3. 数据分析系统DIY3/3:本地64位WIN7+matlab 2012b訪问VMware CentOS7+MariaDB

    数据分析系统DIY中要完毕的三个任务. 一.用VMware装64位CentOS.数据库服务端用CentOS自带的就好. 二.数据採集与预处理用Dev-C++编程解决. 三.用本地Win7 64上的MA ...

  4. Chrome开发者工具详解(3):Timeline面板

    Timeline面板 Timeline面板是整个面板里面最复杂的一个面板,涉及的东西比较多.可以利用这个面板来记录和分析网页运行过程中的所有活动行为信息. 你可以充分利用这个面板来分析你的网页的程序性 ...

  5. 基础命名空间:反射 using System.Reflection

    反射概念:       .Net的应用程序由几个部分:‘程序集(Assembly)’.‘模块(Module)’.‘类型(class)’组成,程序集包含模块 模块包含类型,类型又包含 成员,而反射提供一 ...

  6. Entity Framework 6.1-Code First【转】

      Entity Framework 6.1-Code First 分类: Entity Framework 2014-04-21 14:56 2034人阅读 评论(0) 收藏 举报 entityen ...

  7. oracle定时备份与删除N天前备份文件

    oracle定时备份数据库,以及删除7天前备份的数据. 1.创建存放备份目录: mkdir /home/oracle/data_backup mkdir /home/oracle/log_backup ...

  8. MJExtension(JSON到数据模型的自动转换)

    整理自:http://www.jianshu.com/p/93c242452b9b. 1.MJExtension的功能 字典-->模型 模型-->字典 字典数组-->模型数组 模型数 ...

  9. canvas写的一个小时钟demo

    <!DOCTYPE html> <html> <head> <title>HTML5 Canvas Demo of clock</title> ...

  10. OpenCV——CvMatchShapes函数

    功能:根据计算比较两张图像Hu不变距(函数返回值代表相似度大小,完全相同的图像返回值是0,返回值最大是1) double cvMatchShapes(const void* object1, cons ...