Xtrabackup是由percona提供的mysql資料庫備份工具,據官方介紹,是一款開源能夠對innodb和xtradb資料庫進行熱備的工具。
1、安裝
yum install percona-xtrabackup -y
2、建立資料庫
create database test;
use test;
create table bak(id int ,name char(20)); 建立表
insert into bak values(1,'dog');
3、建立一個權限較小的使用者管理資料庫,盡量不要用root
grant reload,lock tables, replication client on *.* to 'user'@'localhost' identified by 'centos';
(1) reload 允許執行的指令 flush-hosts, flush-logs, flush-privileges, flush-status, flush-tables, flush-threads, refresh, reload
(2)必須擁有lock tables權限,才可以使用lock tables
(3)授予複制賬号replication client權限,複制使用者可以使用show master status, show slave status 和 show binary logs
4、完整備份
innobackupex --user=user --password=centos /backup/
5、在資料庫中插入資料
use test;
insert into bak values(2,'cat');
insert into bak values(3,'pig');
6、進行增量備份
innobackupex --incremental /backup/ --incremental-basedir=/backup/2017-11-16_16-37-22
解釋:/backup/ 指定備份目錄
--incremental-basedir 指定在哪的基礎上增量備份。
7、資料恢複準備
一般情況下,在備份完成後,資料尚且不能用于恢複操作,因為備份的資料中可能會包含尚未送出的事務或已經送出但尚未同步至資料檔案中的事務。是以,此時資料檔案仍處理不一緻狀态。“準備”的主要作用正是通過復原未送出的事務及同步已經送出的事務至資料檔案也使得資料檔案處于一緻性狀态“準備”(prepare)增量備份與整理完全備份有着一些不同,尤其要注意的是:
(1)需要在每個備份(包括完全和各個增量備份)上,将已經送出的事務進行“重放”。“重放”之後,所有的備份資料将合并到完全備份上。
(2)基于所有的備份将未送出的事務進行“復原”。
例如:當拷貝資料庫時有些資料還沒有寫入磁盤。
cd /backup
首先完全備份 innobackupex --apply-log --redo-only 2017-11-16_16-37-22
然後增量備份 innobackupex --apply-log --redo-only 2017-11-16_16-37-22 --incrementaldir=2017-11-16_16-43-47 需指定完全備份目錄和增量目錄
8、測試恢複資料
(1)不小心删除資料庫檔案
或者 rm -rf *,如果僅僅隻是删除其中一個庫,需要做下面操作
(2)恢複
innobackupex --copy-back /backup/2017-11-16_17-39-43/
(3)cd /var/lib
cp -a mysql mysql.bak
rm -rf mysql 删除mysql檔案夾
mkdir mysql
cd mysql
innobackupex --copy-back /backup/2017-11-16_17-39-43/ 恢複資料
chown -R mysql.mysql mysql 修改/var/lmysql
systemctl start mariadb
9、連接配接資料庫檢視檔案恢複
本文轉自 hawapple 51CTO部落格,原文連結:http://blog.51cto.com/guanm/1982599