數據庫備份工具Xtrabackup
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、連接數據庫查看文件恢復
本文出自 “Linux 學習記錄” 博客,請務必保留此出處http://guanm.blog.51cto.com/13126952/1982599
數據庫備份工具Xtrabackup