linux mysql 物理備份-增量備份
大家好,我是霸王卸甲,今天給大家帶來的是數據庫中的物理備份,物理備份又包括增量備份和差異備份,今天要講的是增量備份!!!!!!!
物理備份 + binlog
準備工作:
PERCONA XtraBakuo
它是開源免費的支持MySQL 數據庫熱備份的軟件,它能對InnoDB和XtraDB存儲引擎的數據庫非阻塞地備份。它不暫停服務創建Innodb熱備份;
為mysql做增量備份;在mysql服務器之間做在線表遷移;使創建replication更加容易;備份mysql而不增加服務器的負載。
percona是一家老牌的mysql技術咨詢公司。它不僅提供mysql的技術支持、培訓、咨詢,還發布了mysql的分支版本--percona Server。並圍繞
官方站點:https://www.percona.com/
安裝: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 安裝percona
rpm -ql percona-xtrabackup-24 查詢安裝結果 安裝文件
單一完全備份
首先準備備份目錄
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/
二進制日誌位置
cat /xtrabackup/full/2017-08-01_00-00-18/xtrabackup_binlog_info
完全恢復流程
首先停止數據庫
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‘
linux mysql 物理備份-增量備份