1. 程式人生 > >linux mysql 物理備份-增量備份

linux mysql 物理備份-增量備份

大家好,我是霸王卸甲,今天給大家帶來的是數據庫中的物理備份,物理備份又包括增量備份和差異備份,今天要講的是增量備份!!!!!!! 物理備份 + binlog

準備工作:
PERCONA XtraBakuo
它是開源免費的支持MySQL 數據庫熱備份的軟件,它能對InnoDB和XtraDB存儲引擎的數據庫非阻塞地備份。它不暫停服務創建Innodb熱備份;
為mysql做增量備份;在mysql服務器之間做在線表遷移;使創建replication更加容易;備份mysql而不增加服務器的負載。
percona是一家老牌的mysql技術咨詢公司。它不僅提供mysql的技術支持、培訓、咨詢,還發布了mysql的分支版本--percona Server。並圍繞

percona Server還發布了一系列的mysql工具。

官方站點: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 物理備份-增量備份