基础信息
1) CentOS 7
2) MySQL 5.7.12
3) 数据量4.4G
使用mysqldump对4.4G的数据导出->导入所需时间>60分钟,也可能是我方式方法不对,导入时间消耗长。

  1. xtrabackup介绍
    xtrabackup一个开源免费的工具,用于对MySQL数据库的备份和还原。它还有一个用perl写的封装脚本,可以提供更多高级功能(如:流、增量、压缩和多线程备份操作)。
    xtrabackup工作方式是后台线程不断追踪InnoDB日志文件尾部,然后复制InnoDB数据文件,InnoDB内有事务日志,可保证所有数据文件一致性。
  2. xtrabackup 安装
    xtrabackup当前最新版本为2.4.4,支持MySQL server 5.7.13
    官网地址:https://www.percona.com
    使用percona-xtrabackup-24-2.4.4-1.el7.x86_64.rpm
    #yum install libev
    #rpm -ivh ppercona-xtrabackup-24-2.4.4-1.el7.x86_64.rpm
    # xtrabackup --version
    xtrabackup version 2.4.4 based on MySQL server 5.7.13 Linux (x86_64) (revision id: df58cf2)
  3. xtrabackup备份
    #innobackupex --defaults-file=/opt/mysql/my.cnf  --user=root --password=123456 --socket=/opt/mysql/mysql.sock  /opt/mysql/backup/
    看到100313 10:17:07  innobackupex: completed OK! 这类提示表示备份成功

    当前4.4G的数据,耗时3分钟,ibdata1文件为78M,ibdata1文件的大小影响备份效率,文件越大xtrabackup备份所需时间越多,因需要扫描并追踪该文件中的事务日志。
  4. xtrabackup还原
    #停掉mysql数据库
    #rm -rf /opt/mysql/data/*
    #innobackupex --defaults-file=/opt/mysql/my.cnf  --user=root --password=123456 --apply-log /opt/mysql/backup/2016-08-05_10-14-42 
    看到100313 10:51:44  innobackupex: completed OK! 表示成功
    #innobackupex --defaults-file=/opt/mysql/my.cnf --user=root --password=123456 --copy-back /opt/mysql/backup/2016-08-05_10-14-42
    看到100313 10:58:44  innobackupex: completed OK!表示成功
    给/opt/mysql/data目录设置权限
    #chown -R mysql:mysql /opt/mysql/data/
    启动数据库
    #bin/mysqld --defaults-file=/opt/mysql/my.cnf --user=root
    查看同步点
    # cat xtrabackup_binlog_info 
    mysql-bin.000005    26943181
    #CHANGE MASTER TO MASTER_HOST='192.168.220.123',MASTER_USER='rep', MASTER_PASSWORD='admin2012',MASTER_LOG_FILE='mysql-bin.000005',MASTER_LOG_POS=26943181
    #start slave;
    #show slave status\G

    为了加快还原的速度,可加--use-memory=4G 参数
    innobackupex --defaults-file=/opt/mysql/my.cnf --use-memory=4G --user=root --password=123456 --apply-log /opt/mysql/backup/2016-08-05_10-14-42
  5. xtrabackup增量备份
    所谓的增量,一定是在已有全量的基础之上的,不然是没有任何意义的。
    当前以/opt/mysql/backup/2016-08-05_10-14-42 全量备份为基础 进行增量备份。

    innobackupex --defaults-file=/opt/mysql/my.cnf --incremental /opt/mysql/backup/inc1 --incremental-basedir=/opt/mysql/backup/2016-08-05_10-14-42 --user=root --password=123456
    #160805 15:30:07 completed OK!

    增量备份/opt/mysql/backup/inc1/2016-08-05_15-28-49

    #查看全量备份时的检查点
    # cat xtrabackup_checkpoints 
    backup_type = log-applied
    from_lsn = 0
    to_lsn = 5370086761
    last_lsn = 5370086770
    compact = 0
    recover_binlog_info = 0
    #查看增量备份时的检查点
    # cat xtrabackup_checkpoints 
    cat xtrabackup_checkpoints 
    backup_type = incremental
    from_lsn = 5370086761
    to_lsn = 5370087949
    last_lsn = 5370087958
    compact = 0
    recover_binlog_info = 0

    可看到增量备份的from_lsn 是全量备份的to_lsn

  6. xtrabackup增量备份还原
    将每一个增量备份文件上的事务提交

    #innobackupex --defaults-file=/opt/mysql/my.cnf --apply-log --redo-only /opt/mysql/backup/2016-08-05_10-14-42 --use-memory=1G --user=root --password=123456
    #innobackupex --defaults-file=/opt/mysql/my.cnf --apply-log --redo-only /opt/mysql/backup/2016-08-05_10-14-42 --incremental-dir=/opt/mysql/backup/inc1/2016-08-05_15-28-49 --use-memory=1G --user=root --password=123456
    #停掉mysql
    #删除/opt/mysql/data/
    #innobackupex --defaults-file=/opt/mysql/my.cnf --user=root --password=123456 --copy-back /opt/mysql/backup/2016-08-05_10-14-42
    #chown -R mysql:mysql /opt/mysql/data/
    #启动mysql

 



作者:灼灼2015
链接:http://www.jianshu.com/p/d00c2ce5defd