• Innobackupex 全备数据库


        对于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

  • 相关阅读:
    个人学期总结
    实验四:201571030116/201571030106《小学四则运算练习软件需求说明》结对项目报告
    201571030106/201571030116《小学四则运算练习软件》结对项目报告
    java实现随机四则运算
    《构建之法》不得不提的五个问题
    项目自动化建构工具gradle 入门5——在intellij中做一个gradle的web工程
    项目自动化建构工具gradle 入门4——javaWeb在浏览器中显示helloWorld
    项目自动化建构工具gradle 入门3——生一个exe的helloWorld
    项目自动化建构工具gradle 入门0——环境 & 废话
    项目自动化建构工具gradle 入门2——log4j输出helloWorld
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5236398.html
Copyright © 2020-2023  润新知