zoukankan      html  css  js  c++  java
  • meb4.0.3(mysql enterprise backup)原理分析

    mysql企业版有两个值得付费的工具:mysql enterprise backup、thread pool。

    下面来分析下MEB工作原理:

    1.先来个全备

    /usr/local/meb5.7/bin/mysqlbackup --user=root --password=root  --with-timestamp  --backup-dir=/tmp/  backup 2>/tmp/meb.log

    通过查看mysqlbackup屏幕输出,可以看到先拷贝所有innodb files。

    160823 12:35:36 mysqlbackup: INFO: Full Backup operation starts with following threads
                    1 read-threads    6 process-threads    1 write-threads160823 12:35:36 mysqlbackup: INFO: Starting to copy all innodb files...
    160823 12:35:36 mysqlbackup: INFO: Copying /data/mysql/mysql3306/data/ibdata1 (Barracuda file format).
    160823 12:35:36 mysqlbackup: INFO: Found checkpoint at lsn 2530796.
    160823 12:35:36 mysqlbackup: INFO: Starting log scan from lsn 2530304.
    160823 12:35:36 mysqlbackup: INFO: Copying log...
    160823 12:35:36 mysqlbackup: INFO: Log copied, lsn 2530805.
    160823 12:35:42 mysqlbackup: INFO: Copying /data/mysql/mysql3306/data/mysql/engine_cost.ibd (Barracuda file format).
    160823 12:35:43 mysqlbackup: INFO: Completing the copy of innodb files.

    然后开始拷贝binlog文件,拷贝完后锁表(注意最后一个binlog文件在锁表后拷贝)#xtrabackup没有备份binlog文件

    160823 12:35:43 mysqlbackup: INFO: Starting to copy Binlog files...
    160823 12:35:43 mysqlbackup: INFO: Copying /data/mysql/mysql3306/logs/mysql-bin.000001.
    160823 12:35:43 mysqlbackup: INFO: Preparing to lock tables: Connected to mysqld server.
    160823 12:35:43 mysqlbackup: INFO: Starting to lock all the tables...
    160823 12:35:43 mysqlbackup: INFO: All tables are locked and flushed to disk
    160823 12:35:43 mysqlbackup: INFO: Copying /data/mysql/mysql3306/logs/mysql-bin.000004.
    160823 12:35:43 mysqlbackup: INFO: Completed the copy of binlog files...

    最后拷贝非innodb 信息(表结构定义信息、字典信息等)并解锁

    160823 12:35:43 mysqlbackup: INFO: Starting to backup all non-innodb files in
            subdirectories of '/data/mysql/mysql3306/data'
    160823 12:35:43 mysqlbackup: INFO: Copying the database directory 'zhangshuo'
    160823 12:35:43 mysqlbackup: INFO: Completing the copy of all non-innodb files.
    160823 12:35:43 mysqlbackup: INFO: All tables unlocked

    查看备份期间生成的general log,创建了备份信息表

    2016-08-23T04:35:36.640964Z        13 Query     USE mysql
    2016-08-23T04:35:36.641747Z        13 Query     CREATE TABLE IF NOT EXISTS mysql.backup_progress( `backup_id` BIGINT NOT NULL, `tool_name` VARCHAR(4096) NOT NULL, `error_code` INT NOT NULL, `error_message` VARCHAR(4096) NOT NULL, `current_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP               ON UPDATE CURRENT_TIMESTAMP,`current_state` VARCHAR(200) NOT NULL ) ENGINE=CSV DEFAULT CHARSET=utf8 COLLATE=utf8_bin
    2016-08-23T04:35:36.642264Z        13 Prepare   INSERT INTO mysql.backup_progress( backup_id, tool_name, error_code, error_message, current_state ) VALUES (?,?,?,?,?)

    2.apply-log后在datadir目录下可以看到恢复的数据

    /usr/local/meb5.7/bin/mysqlbackup  --backup-dir=/tmp/2016-08-23_12-35-36/  apply-log
    [root@localhost datadir]# ls -lh
    总用量 2.6G
    -rw-r--r--. 1 root root 1.0K 8月  23 12:35 ibbackup_logfile
    -rw-r--r--. 1 root root  362 8月  23 12:35 ib_buffer_pool
    -rw-r--r--. 1 root root 1.0G 8月  23 12:35 ibdata1
    -rw-r-----. 1 root root 512M 8月  23 12:42 ib_logfile0
    -rw-r-----. 1 root root 512M 8月  23 12:42 ib_logfile1
    -rw-r-----. 1 root root 512M 8月  23 12:42 ib_logfile2
    drwxr-x---. 2 root root 4.0K 8月  23 12:35 mysql
    -rw-r--r--. 1 root root  177 8月  23 12:35 mysql-bin.000001
    -rw-r--r--. 1 root root  445 8月  23 12:35 mysql-bin.000002
    -rw-r--r--. 1 root root  177 8月  23 12:35 mysql-bin.000003
    -rw-r--r--. 1 root root 1.4K 8月  23 12:35 mysql-bin.000004
    -rw-r--r--. 1 root root   76 8月  23 12:35 mysql-bin.index
    drwxr-x---. 2 root root 4.0K 8月  23 12:35 sys
    drwxr-x---. 2 root root 4.0K 8月  23 12:35 zhangshuo

    3.将apply好的数据恢复到实例

    [root@localhost tmp]# /usr/local/meb5.7/bin/mysqlbackup --defaults-file=/etc/my.cnf  --backup-dir=/tmp/2016-08-23_12-35-36/ copy-back
    160823 14:02:35 mysqlbackup: INFO: Copying /tmp/2016-08-23_12-35-36/datadir/ibdata1.
     mysqlbackup: Progress in MB: 200 400 600 800 1000 
    160823 14:02:43 mysqlbackup: INFO: Copying /tmp/2016-08-23_12-35-36/datadir/mysql/engine_cost.ibd.
    160823 14:02:43 mysqlbackup: INFO: Copying /tmp/2016-08-23_12-35-36/datadir/mysql/gtid_executed.ibd.
    160823 14:02:43 mysqlbackup: INFO: Copying /tmp/2016-08-23_12-35-36/datadir/mysql/help_category.ibd
    
    160823 14:02:43 mysqlbackup: INFO: Starting to copy Binlog files...
    160823 14:02:43 mysqlbackup: INFO: Copying /tmp/2016-08-23_12-35-36/datadir/mysql-bin.000001.
    160823 14:02:43 mysqlbackup: INFO: Copying /tmp/2016-08-23_12-35-36/datadir/mysql-bin.000002.
    
    160823 14:02:43 mysqlbackup: INFO: Copying the database directory 'mysql'
    160823 14:02:43 mysqlbackup: INFO: Copying the database directory 'sys'
    160823 14:02:43 mysqlbackup: INFO: Copying the database directory 'zhangshuo'
    160823 14:02:43 mysqlbackup: INFO: Completing the copy of all non-innodb files.
    160823 14:02:43 mysqlbackup: INFO: Copying the log file 'ib_logfile0'
     mysqlbackup: Progress in MB: 1200 1400 
    160823 14:02:47 mysqlbackup: INFO: Copying the log file 'ib_logfile1'
     mysqlbackup: Progress in MB: 1600 1800 2000 
    160823 14:02:54 mysqlbackup: INFO: Copying the log file 'ib_logfile2'
    
    160823 14:03:07 mysqlbackup: INFO: Finished copying backup files to '/data/mysql/mysql3306/data'
    mysqlbackup completed OK!

     4.求解,备份成千上万张表时为什么mysqlbackup会比xtrabackup锁表时间短?

  • 相关阅读:
    Vue常用特性-表单基本操作和表单修饰符
    Tab选项卡
    Vue模板语法
    Vue基本使用
    Vue概述
    Express框架
    模板引擎artTemplate
    MongoDB增删改查操作
    数据库概述及环境搭建
    请求响应原理及HTTP协议
  • 原文地址:https://www.cnblogs.com/xxmysql/p/5806324.html
Copyright © 2011-2022 走看看