XtraBackup全备与增量备份

一、XtraBackup安装

下载地址:http://www.percona.com/downloads/XtraBackup/XtraBackup-2.2.8/source/

安装步骤:

================================
How to build XtraBackup on Linux
================================

Prerequisites
-------------$ yum install cmake gcc gcc-c++ libaio libaio-devel automake autoconf bzr bison libtool ncurses5-devel

Compiling with CMake
--------------------
$ cmake -DBUILD_CONFIG=xtrabackup_release && make -j4
Installation
------------
$ make install

will install all XtraBackup binaries, the innobackupex script and tests to /usr/local/xtrabackup. You can override this either with “make DESTDIR=... install” or by changing the installation layout with “cmake -DINSTALL_LAYOUT=...”.

如果出现下面报错,需要 yum install crypt* ; yum install libgcrypt*

CMake Error at cmake/gcrypt.cmake:25 (MESSAGE):
  Cannot find gcrypt.h in /usr/include;/usr/local/include;/opt/local/include.
  You can use libgcrypt-config --cflags to get the necessary path and pass it
  to CMake with -DGCRYPT_INCLUDE_PATH=<path>
Call Stack (most recent call first):
  storage/innobase/xtrabackup/src/CMakeLists.txt:20 (FIND_GCRYPT)

CMake Error at cmake/gcrypt.cmake:36 (MESSAGE):
  Cannot find libgcrypt shared libraries in
  /usr/lib;/usr/local/lib;/opt/local/lib.  You can use libgcrypt-config
  --libs to get the necessary path and pass it to CMake with
  -DGCRYPT_LIB_PATH=<path>
Call Stack (most recent call first):
  storage/innobase/xtrabackup/src/CMakeLists.txt:20 (FIND_GCRYPT)

二、xtrabackup全备测试

普通备份(全量备份)
[[email protected] mysql]# mkdir /data/mysql/databak
[[email protected] mysql]# xtrabackup --defaults-file=/usr/local/mysql/my.cnf --backup --target-dir=/data/mysql/databak/
[[email protected] mysql]# cp -rp data/test/students.frm databak/test/
注意:xtrabackup只备份数据文件,并不备份数据表结构(.frm),所以这里要手动备份一下,以便xtrabackup恢复的时候使用,如果是做了分表分文件保存的话,就需要挑出.frm表结构,表数据文件.ibd不需要复制

全量备份恢复
实施对备份文件进行恢复前的准备
[[email protected] mysql]# xtrabackup --defaults-file=/usr/local/mysql/my.cnf --prepare --target-dir=/data/mysql/databak/
从备份目录复制对应数据库表结构到默认的数据目录[如果是做了分表分文件,则需要全部复制到默认的数据目录]
cp -r /data/mysql/databak/test /data/mysql/data/
删除默认数据目录中对应的数据文件并复制备份的数据文件到默认数据目录
rm /data/mysql/data/ib*
cp /data/mysql/databak/ib* /data/mysql/data/
修改数据目录权限[注意细节:mysql库的所有者是mysql,组是root]
chown -R mysql:mysql /data/mysql/data
重启MySQL
[[email protected] data]# /etc/init.d/mysqld restart

三、xtrabackup增量备份测试

1. 全备
[[email protected] databak]# mkdir /data/mysql/databak/
[[email protected] mysql]# xtrabackup --defaults-file=/usr/local/mysql/my.cnf --backup --target-dir=/data/mysql/databak/
[[email protected] mysql]# cp -rp data/test/students.frm databak/test/
2. 增量备份
[[email protected] databak]# mkdir /data/mysql/databak/delta/
[[email protected] databak]# xtrabackup --defaults-file=/usr/local/mysql/my.cnf --backup --incremental-basedir=/data/mysql/databak/ --target-dir=/data/mysql/databak/delta/

3. 备份恢复准备

[[email protected] data]# xtrabackup --defaults-file=/usr/local/mysql/my.cnf --prepare --target-dir=/data/mysql/databak/
[[email protected] data]# xtrabackup --defaults-file=/usr/local/mysql/my.cnf --prepare --target-dir=/data/mysql/databak/ --incremental-dir/=/data/mysql/databak/delta/

4. 恢复数据库

从备份目录复制对应数据库表结构到默认的数据目录[如果是做了分表分文件,则需要全部复制到默认的数据目录]
cp -r /data/mysql/databak/test /data/mysql/data/
删除默认数据目录中对应的数据文件并复制备份的数据文件到默认数据目录
rm /data/mysql/data/ib*
cp /data/mysql/databak/ib* /data/mysql/data/
修改数据目录权限[注意细节:mysql库的所有者是mysql,组是root]
chown -R mysql:mysql /data/mysql/data

四、用innobackupex 执行全备与增量备份

innobackupex全备和增量备份
1. 全备
[[email protected] mysql]# innobackupex --user=root --password=redhat /data/mysql/databak/
innobackupex: got a fatal error with the following stacktrace: at /usr/bin/innobackupex line 3637
main::init() called at /usr/bin/innobackupex line 1557
innobackupex: Error: option ‘datadir‘ has different values:
‘/var/lib/mysql‘ in defaults file
‘/data/mysql/data/‘ in SHOW VARIABLES

innobackupex --defaults-file=/usr/local/mysql/my.cnf --user=root --password=redhat /data/mysql/databak/
2. 第一次增量备份
#--incremental:增量备份的文件夹
#--incremental-dir:针对哪个做增量备份
[[email protected] mysql]# innobackupex --defaults-file=/usr/local/mysql/my.cnf --user=root --password=redhat --incremental /data/mysql/databak/ --incremental-dir /data/mysql/databak/2015-02-04_19-00-03/
3. 模拟数据丢失

mysql> drop database test;
Query OK, 1 row affected (0.14 sec)

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)

4. 将全备数据执行prepare
innobackupex --apply-log --redo-only /data/mysql/databak/2015-02-04_19-00-03/

5. 将增量备份数据合并到全备中
[[email protected] databackup]# innobackupex --apply-log --redo-only --incremental /data/mysql/databak/2015-02-04_19-00-03/ --incremental-dir=/data/mysql/databak/2015-02-04_19-03-58/

6. 停止mysqld服务,恢复数据
/etc/init.d/mysql stop
[[email protected] databackup]# innobackupex --defaults-file=/usr/local/mysql/my.cnf --copy-back /data/mysql/databak/2015-02-04_19-00-03/

7. 对恢复的文件修改权限
chown -R mysql:mysql /data/mysql/data/*
chown -R mysql:root /data/mysql/data/mysql

8. 启动mysql服务
/etc/init.d/mysqld start

时间: 2025-01-01 00:41:42

XtraBackup全备与增量备份的相关文章

mysql5.6利用xtrabackup全备及增量备份

1.xtrabackup安装 2.全备及恢复 (1)全备 查看数据库 [[email protected] opt]# innobackupex --defaults-file=/etc/my.cnf  --user=root --password=123456 /bak/mysql/ 该语句将拷贝数据文件(由my.cnf里的变量datadir指定)至备份目录下(/bak/mysql/),注意:如果不指定--defaults-file,默认值为/etc/my.cnf. 备份成功后,将在备份目录下

xtrabackup安装及全备,增量备份,及恢复

xtrabackup特性: 1.支持热备份 2.支持对InnoDB.MyISAM,xtradb存储引擎的备份 3.备份过程快速.可靠 4.备份过程不会打断正在执行的事务 5.能够基于压缩等功能节约磁盘空间和流量 6.自动实现备份检验 7.还原速度快 (一)安装: 官网:https://www.percona.com/doc/percona-xtrabackup/LATEST/installation/yum_repo.html ubuntu: wget https://repo.percona.

xtrabackup之Innobackupex增量备份及恢复

演示增量备份 #启动一个全备 innobackupex > --defaults-file=/mysql/mysqldata/3306/my.cnf > --host=127.0.0.1 > --user=xtrabk > --password='onlybackup' /mysql/mysqldata/backup/ ............ 160527 05:47:55 innobackupex: completed OK! [[email protected] mysqld

Linux 平台下 RMAN 全备 和 增量备份 shell 脚本

转:http://blog.csdn.net/tianlesoftware/article/details/5740630 全备脚本 以 nocatalog 模式为例: Shell 脚本: ######################################################################## ##   hot_database_backup.sh      ## ##   created by Tianlesoftware   ## ##        

mysql全备、增量备份与还原

参考文章 http://blog.csdn.net/jesseyoung/article/details/37106035 http://www.cnblogs.com/kevingrace/p/6114979.html

Xtrabackup 备份大数据库(全量备份和增量备份)

Xtrabackup Xtrabackup是由percona开源的免费数据库热备份软件,它能对InnoDB数据库和XtraDB存储引擎的数据库非阻塞地备份(对于MyISAM的备份同样需要加表锁): mysqldump备份方式是采用的逻辑备份,其最大的缺陷是备份和恢复速度较慢,如果数据库大于50G,mysqldump备份就不太适合. Xtrabackup优点 1)备份速度快,物理备份可靠 2)备份过程不会打断正在执行的事务(无需锁表) 3)能够基于压缩等功能节约磁盘空间和流量 4)自动备份校验 5

Xtrabackup每周增量备份脚本程序

Xtrabackup每周增量备份脚本程序(含附件) 程序描述 本程序是一个对percona xtrabackup使用的脚本,它完成了MySQL每周的备份. 程序结构 此程序包含了4个目录(bin.conf.log.var): bin:存放运行备份的主脚本程序(*.sh). conf:存放着程序运行的配置文件变量(*.conf). log:存放的是备份时xtrabackup的输出内容(*.log). var:存放了索引文件(*.index)和错误记录文件(*.err). *.index:每当备份成

Xtrabackup增量备份、恢复以及时间点恢复

1.记录当前的status信息 | master.000001 |      120 | 2.制作一个完整的备份文件 # innobackupex /backup 备份的文件:/backup/2016-11-16_16-18-54 查看其status信息 # cat xtrabackup_binlog_info master.000001 120 # 3.修改数据库信息以使得status发生变化 比如:创建了一个表tb1,并插入2条记录 mysql> select * from tb1 ; +-

mysql全量备份与增量备份

一.全量备份 全量备份就是把数据库中所有的数据进行备份. 备份所有库: mysqldump -uroot -p456 -S /data/3306/mysql.sock -F -A -B |gzip >/server/backup/mysqlbak_$(date+%F).sql.gz 备份一个库: mysqldump -uroot -p456 -S /data/3306/mysql.sock -F -B oldboy|gzip >/server/backup/mysqlbak_$(date+%F