对于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. 导致flash屏幕重绘的几种方式及避免重绘的方法

    导致屏幕重绘的几种原因: 1.最常见的是情况就是舞台上的可视组件在形状.位置.状态(alpha, scale…)发生改变的时候会触发Flash Player 的重绘. 2.当一个DisplayObje ...

  2. web项目的两个创建形式website和webapplication

    前言 在利用VS2010创建web项目的时候,会有两个选择.可以选择直接创建website网站,还可以选择使用 webapplication应用程序.刚刚接触web开发,看到这两个就疑惑了,既然是都可 ...

  3. hdu 4908 BestCoder Sequence

    # include <stdio.h> # include <algorithm> using namespace std; int main() { int n,m,i,su ...

  4. Android资源管理框架(Asset Manager)简要介绍和学习计划

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8738877 Android应用程序主要由两部分 ...

  5. vim 快捷键大全

    一.移动光标 1.左移h.右移l.下移j.上移k 2.向下翻页ctrl + f,向上翻页ctrl + b 3.向下翻半页ctrl + d,向上翻半页ctrl + u 4.移动到行尾$,移动到行首0(数 ...

  6. [HeadFirst-HTMLCSS学习笔记][第十三章表格]

    表格 -table 块 tr 行 table row th 表头 table head td 表数据 table data; caption 表格标题 <table> <captio ...

  7. xutils的HttpUtils,Post和Get基本使用,以及BitmapUtils的简单使用

    开篇报错注意:本教程是基于xUtils-2.6.14.jar版本实现的 由于studio中6.0以后安卓取消了httpclient,而xutils则基于httpclient开发的,所以现在无法使用,将 ...

  8. Volley报错!!!No address associated with hostname

    年轻人检查你的网络去吧,这是没有网络导致的原因

  9. 你所不了解的css选择器

    我们目前接触到的选择器:.class   #id  div  ...... 不了解的选择器:a>b   a+b [a~=b] [a|=b]......   一下说举5 6 7 8为css3中的定 ...

  10. iOS之本地推送(前台模式与后台模式)

    #import "AppDelegate.h" #import "GlobalDefine.h" @interface AppDelegate () @end ...