1. 程式人生 > >mysql系列之6--------使用第三方工具-percona來備份mysql和恢復

mysql系列之6--------使用第三方工具-percona來備份mysql和恢復

文件目錄 restart form rpm 導入 完全備份 mys 只需要 schema

使用第三方工具來備份mysql-----percona


一、前期準備工作:

1、安裝依賴包:yum -y install perl-Digest-MD5 perl-DBD-MySQL

rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm

2、安裝主包: percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm

3、包含兩個組件:

/usr/bin/xtrabackup :支持innodb和xtraDB(增量備份)

/usr/bin/innobackupex :支持innodb和myisam(只支持全備,不支持增量)

4、innobackupex 包含的一些選項

--user 用戶名

--password 密碼

--databases 庫名

--no-timestamp 不使用系統日期做備份目錄的子目錄名

--apply-log 恢復日誌

--copy-back 恢復數據

二、完全備份和完全恢復

1、完全備份

innobackupex --user root --password 123456 --database="mysql db66 performance sys"

--no-timestamp /allbak //指定備份三個數據庫,生成的備份文件目錄不用系統時間做目錄名

2、恢復數據時,數據庫目錄為空,三個系統庫必須備份進去

首先恢復日誌:innobackupex --user root --password 123456 --apply-log /allbak

刪除數據庫目錄: rm -rf /var/lib/mysql

創建數據庫目錄: mkdir /var/lib/mysql

恢復數據:innobackupex --user root --password 123456 --copy-back /allbak/

賦予數據目錄權限:chown -R mysql:mysql /var/lib/mysql

重啟服務,驗證:systemctl restart mysqld


三、增量備份和增量恢復

1、在增量備份之前先做一次完全備份。

innobackupex --user root --password 123456

--databases="performance_schema sys mysql db666"

--no-timestamp /onebak

2、第一次增量備份

innobackupex --user root --password 123456 //指定用戶名密碼

--databases="performance_schema sys mysql db666" //指定需要備份的數據庫

--incremental /new1 //指定增量備份的路徑

--incremental-basedir=/onebak //指定以哪個備份來做為增量備份的參考

--no-timestamp

3、第二次增量備份:

innobackupex --user root --password 123456

--databases="performance_schema sys mysql db666"

--incremental /new2 //第二次增量備份的路徑

--incremental-basedir=/new1 //以上次增量備份做為參考來做增量備份

--no-timestamp

4、增量恢復的文件目錄說明

xtrabackup_checkpoints xtrabackup_logfile //這兩個文件記錄修改的lsn號

5、恢復步驟

A、刪除數據目錄下的文件:rm -rf /var/lib/mysql/*

B、恢復日誌---完全備份的日誌

innobackupex --user root --password 123456

--databases="performance_schema sys mysql db666"

--apply-log --redo-only //恢復日誌,並合並日誌

/onebak --no-timestamp

C、恢復第一次增量的備份(只需要恢復日誌,日誌合並即可)

innobackupex --user root --password 123456

--databases="performance_schema sys mysql db666"

--apply-log --redo-only /onebak //源日誌路徑

--incremental-dir=/new1 --no-timestamp //需合並的日誌文件的路徑

D、恢復第二次增量的備份

innobackupex --user root --password 123456

--databases="performance_schema sys mysql db666"

--apply-log --redo-only /onebak //源日誌文件的路徑

--incremental-dir=/new2 --no-timestamp //第二次增量備份合並的日誌

E、恢復數據,只需還原全備份裏面的,因為增量備份的內容已經合並到全備裏面

innobackupex --user root --password 123456 --copy-back /onebak

F、給數據目錄給權限,重啟服務驗證

chown -R mysql:mysql /var/lib/mysql

systemctl restart mysqld


四、恢復完全備份數據中的單張表

1、export //導出表信息 import //導入表空間

刪除表空間:alter table 表 discard tablespace;

2、備份單個數據庫:

innobackupex --user root --password 123456

--databases="mydb" --no-timestamp /mydb //只備份一個數據庫

3、刪除表,創建表(表字段必須要和以前的一樣,模擬表丟失

drop table t1; create table t1(id int);

4、導出表信息:用到的參數是--export

innobackupex --user root --password 123456 --databases="db66" --apply-log --export /db66

5、刪除表空間:在mysql命令行裏操作

alter table db66.t1 discard tablespace;

6、把備份目錄下導出的表信息拷貝到數據庫目錄下,並給權限

cp /db66/db66/t1.{cfg,exp,ibd} /var/lib/mysql/db66/

chown mysql /var/lib/mysql/db66/t1.*

7、導入表空間

alter table db66.t1 import tablespace;

8、驗證:select * from db66.t1;






















































































mysql系列之6--------使用第三方工具-percona來備份mysql和恢復