你們好,我是霸王卸甲,今天給你們帶來的是數據庫中的物理備份,物理備份又包括增量備份和差別備份,今天要講的是增量備份!!!!!!! 物理備份 + binlog
準備工做:
PERCONA XtraBakuo
它是開源免費的支持MySQL 數據庫熱備份的軟件,它能對InnoDB和XtraDB存儲引擎的數據庫非阻塞地備份。它不暫停服務建立Innodb熱備份;
爲mysql作增量備份;在mysql服務器之間作在線表遷移;使建立replication更加容易;備份mysql而不增長服務器的負載。
percona是一家老牌的mysql技術諮詢公司。它不只提供mysql的技術支持、培訓、諮詢,還發布了mysql的分支版本--percona Server。並圍繞
percona Server還發布了一系列的mysql工具。 mysql
官方站點:https://www.percona.com/sql
安裝:wget http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm 下載yum源數據庫
yum -y install percona-release-0.1-3.noarch.rpm 安裝yum源服務器
yum -y install percona-xtrabackup-24.x86_64 安裝perconaapp
rpm -ql percona-xtrabackup-24 查詢安裝結果 安裝文件ide
單一徹底備份工具
首先準備備份目錄
mkdir /xtrabackup/full -p
鏈接數據庫,開始備份。
innobackupex --user=root --password='QianFeng@123' /xtrabackup/full
請注意備份結果是否完成
xtrabackup: Transaction log of lsn (74182721) to (74182730) was copied.
171127 15:04:12 completed OK!日誌
查看備份目錄。數據庫,配置文件,日誌文件
ls /xtrabackup/full/
2018-08-01_00-00-02/code
二進制日誌位置
cat /xtrabackup/full/2017-08-01_00-00-18/xtrabackup_binlog_info rem
徹底恢復流程
首先中止數據庫
systemctl stop mysqld
清理環境(模擬損壞)
rm -rf /var/lib/mysql/*
rm -rf /var/log/mysqld.log
rm -rf /var/log/mysql-slow/slow.log
生成回滾日誌
innobackupex --apply-log /xtrabackup/full/2018-08-01_00-00-18/
恢復文件
innobackupex --copy-back /xtrabackup/full/2018-08-01_00-00-18/
登錄驗證
ls /var/lib/mysql
給權限
chown -R mysql.mysql /var/lib/mysql
重啓
systemctl start mysqld
mysql -uroot -p'QianFeng@123'
增量備份流程
create database testdb;
use testdb;
create table test(id int);
insert into test values (1);
select * from test;
模擬數據
首先完整備份下週一的
rm -rf /xtrabackup/*
本身設置下時間 以避免作亂了
date 09010000
innobackupex --user=root --password='QianFeng@123' /xtrabackup
ll /xtrabackup/
2018-09-01_00-00-04
數據庫中的記錄是1條
備份下週二的
date 09020000
mysql -uroot -p'QianFeng@123' -e 'insert into testdb.test values (2)'
basedir基於週一的備份。
會生成一個今天的。
innobackupex --user=root --password='QianFeng@123' --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/2017-09-01_00-00-04
ls /xtrabackup/
2018-09-01_00-00-04
2018-09-02_00-00-58
備份下週三的
date 09030000
mysql -uroot -p'QianFeng@123' -e 'insert into testdb.test values (3)'
innobackupex --user=root --password='QianFeng@123' --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/2017-09-02_00-00-26
ls /xtrabackup/
2018-09-01_00-00-04
2018-09-02_00-00-58
2018-09-03_00-00-36
備份就到此結束
接下來是:增量恢復流程
中止數據庫
systemctl stop mysqld
清理環境 模擬數據丟失
rm -rf /var/lib/mysql/*
回滾週一日誌
innobackupex --apply-log --redo-only /xtrabackup/2018-09-01_00-00-04
回滾週二日誌
innobackupex --apply-log --redo-only /xtrabackup/2018-09-01_00-00-04 --incremental-dir=/xtrabackup/2018-09-02_00-00-26
開始恢復數據
innobackupex --copy-back /xtrabackup/2017-09-01_00-00-06
chown -R mysql.mysql /var/lib/mysql
systemctl start mysqld
登錄查詢記錄。發現是週二的
想要恢復週三還得在回滾一第二天志
innobackupex --apply-log --redo-only /xtrabackup/2017-09-01_00-00-04 --incremental-dir=/xtrabackup/2018-09-03_00-00-27
中止數據庫
systemctl stop mysqld
恢復備份
innobackupex --copy-back /xtrabackup/2018-09-01_00-00-04
給下權力
chown -R mysql.mysql /var/lib/mysql
systemctl start mysqld
進入數據庫查看數據是否恢復mysql -uroot -p'QianFeng@123'