MySQL Xtrabackup備份還原

2021-08-31 21:28:23 字數 3625 閱讀 4825

通常我們都是使用xtrabackup工具來備份資料庫,它是乙個專業的備份工具,先來簡單介紹下它。

percona提供的mysql資料庫備份工具,惟一開源的能夠對innodb和xtradb資料庫,它的增量備份不是基於二進位制日誌檔案來還原資料的,是基於mysql資料塊。

特點:備份時選項

xtrabackup –backup

--user:該選項表示備份賬號

--password:該選項表示備份的密碼

--databases:該選項接受的引數為資料名,如果要指定多個資料庫,彼此間需要以空格隔開;如:」xtra_test dba_test」,同時,在指定某資料庫時,也可以只指定其中的某張表。如:」mydatabase.mytable」。該選項對innodb引擎表無效,還是會備份所有innodb表

--defaults-file:該選項指定從哪個檔案讀取mysql配置,必須放在命令列第乙個選項位置

--incremental:該選項表示建立乙個增量備份,需要指定–incremental-basedir

--incremental-basedir:該選項指定為前一次全備份或增量備份的目錄,與–incremental同時使用

--incremental-dir:該選項表示還原時增量備份的目錄

--include=name:指定表名,格式:databasename.tablename

prepare於準備選項

prepare

--export:表示開啟可匯出單獨的表之後再匯入其他mysql中

--redo-only:此選項在prepare base full backup,往其中merge增量備份時候使用

還原時選項

--copy-back:複製

--move-back:移動

1)xtrabackup_info:innobackupex工具執行時的相關資訊,包括版本,備份選項,備份時長,備份lsn,binlog的位置

2)xtrabackup_checkpoints:備份型別(如完全或增量)、備份狀態(如是否已經為prepared狀態)和lsn(日誌序列號)範圍資訊,每個innodb頁(通常為16k大小)都會包含乙個日誌序列號,即lsn。lsn是整個資料庫系統的系統版本號,每個頁面相關的lsn能夠表明此頁面最近是如何發生改變的

3)xtrabackup_binlog_info:mysql伺服器當前正在使用的二進位制日誌檔案及至備份這一刻為止二進位制日誌事件的位置,可利用實現基於binlog的恢復

4)backup-my.cnf:備份命令用到的配置選項資訊

5)xtrabackup_logfile:備份生成的日誌檔案

1.datadir目錄必須為空。除非指定innobackupex –force-non-emptydirectorires選項指定,否則–copy-backup選項不會覆蓋

2.restore還原之前,必須shutdown停止 mysql服務,不能將乙個執行中的例項restore到datadir目錄中

3.修改恢復檔案的許可權為mysql

4.最後一次增量備份還原要回滾事務

5.二進位制安裝的mysql要是出現停止不了服務就用killall –9 mysqld 殺掉程序進而實現停止服務

1、兩台主機17和37,其中17當主mysql伺服器,37用來還原的主機,

2、目錄,1個存放完整備份的目錄,n個存放增量備份的目錄

說明:full目錄: 存放完全備份

inc1目錄:存放第一次的增量備份

inc2目錄:存放第二次的增量備份

1、完全備份資料庫

xtrabackup -pcentos --backup --target-dir=/backups/full/

# --backup表示備份

# --target-dir=填寫備份到**

2、往表中增加資料

mysql -pcentos hellodb -e "insert students (name,age) values('gaodao01',20)"
3、第一次增量備份

xtrabackup –pcentos --backup --target-dir=/backups/inc1/ --incremental-basedir=/backups/full

# --incremental-basedir表示基於誰的增量備份,寫上上一次的備份路徑

#

4、再次修改資料表

mysql -pcentos hellodb -e "insert students (name,age) values('gaodao02',21)"
5、第二次增量備份

xtrabackup -pcentos --backup --target-dir=/backups/inc2/ --incremental-basedir=/backups/inc1/
說明:還原的時候我們要考慮到前幾次不要回滾,最後一次還原要回滾,還原主機要安裝xtrabackup工具

1、把備份的目錄傳送到要還原的主機上

scp -r /backups/ 192.168.43.37:/
2、停服務並清空mysql資料

systemctl stop mysqld
3、完全備份的預處理

# --prepare 表示還原
4、第一次增量備份預處理

# 同樣不回滾
5、第二次增量備份預處理

xtrabackup --prepare  --target-dir=/backups/full --incremental-dir=/backups/inc2

# 這是最後一次,所以要回滾不完整的事務

6、複製處理好的資料到真正的存放資料庫目錄下

xtrabackup --copy-back --target-dir=/backups/full

# 它會根據你的配置檔案my.cnf來讀取存放位置

7、修改資料庫檔案許可權

以上還原到了備份時的狀態,我們備份完二次增量後又加了條記錄,還沒來得急三次增量備份就宕機了,所以再次利用二進位制日誌檔案還原到最新狀態

8、通過二進位制檔案還原到最新狀態

1)以下圖中檔案記錄了還原到的位置

2)從原主機匯出二進位制檔案日誌

3)scp傳送到目標主機來還原

skip-networking
systemctl start mysqld
mysql -pcentos 4)進入資料庫驗證

5)ok 恢復完成,刪除配置檔案中的skip-networking並重啟服務

systemctl restart mysqld

mysql xtrabackup增量備份

mysql xtrabackup增量備份 mysql 增量備份策略 周一全備,其他增量備份,根據業務需要,設定保留日期,如保留一月。增量備份步驟 1 建立全備 2 根據全備目錄,建立增量備份 3 第二次增量備份根據第一次增量備份目錄,依次類推 下面是今天寫的增量備份指令碼,先在自己的測試機上跑幾天。...

mysql xtrabackup備份恢復

wget yum install y percona xtrabackup 24 2.4.15 1.el7.x86 64.rpm rpm qa grep xtrabackup which xtrabackup備份 innobackupex defaults file etc my.cnf user ...

mysql restore mysql備份還原

1 簡介 基於binlog的恢復需要建立在全量備份恢復基礎上。使用mysqldump的全量備份的方法在我前面的文章裡有詳細介紹,可以參考 我們可以將增量的binlog備份下來,用來恢復增量資料。2 還原增量binlog的方法 2.1 時間點的恢復建立在一下規則的基礎上 1 mysql伺服器需要開啟二...