xtrabackup备份和还原

96
灼灼2015 22d8d123 271c 4d80 9c59 6990844a9e37
2016.08.05 15:59* 字数 416

基础信息

  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)
  1. 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备份所需时间越多,因需要扫描并追踪该文件中的事务日志。

  1. 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 
  1. 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

  1. 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
数据库
Web note ad 1