close

主要是在上一篇 實作簡單的MariaDB Replication中,

使用mysqldump的備份還原來架設replication.

而本文中除了介紹innobackupex備份還原外,

還補充說明使用innobackupex來設定replication的情況.

首先,innobackupex與xtrabackup的差異可以看xtrabackup 详解(已纠正)

一般會使用innobackex,因為他本身就是調用xtrabackup的功能備份innodb,還多了對其他Data Engine的支援.

(但在2.3以後xtrabackup重構,innobackup只是xtrabackup的軟連結)

首先我覺得google到的幾張圖很清楚的解釋備份機制,所以放上來並說明

首先,MySql-Like的Innodb資料庫寫入,有redo/undo的日誌機制來實現acid,

所以在備份時就會產生xtrabackup_log以便應用在熱備份期間變動部分.

另外在備份非innodb的部分會藉由掛上read lock取得完整的資料內容.

innobackupex.jpg

安裝

參考官方安裝即可,https://www.percona.com/doc/percona-xtrabackup/LATEST/installation/yum_repo.html

備份

完整

innobackupex -user=xxx -password=ooo /full_backup_path/

增量(僅對innodb而言,其他data engine是全備)

innobackupex -user=xxx -password=ooo --incremental --incremental-basedir=/full_backup_path/timestamp /incremental_backup_path/

還原

使用完整備份(innobackupex --apply-log等同於xtrabackup --prepare)

innobackupex --apply-log /full_backup_path/timestamp

innobackupex --defaults-file=/path/my.cnf --copy-back /full_backup_path/timestamp

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

使用增量備份 => 先對全備prepare,再對增量做prepare,除了最後一個prepare,其他都需要加--redo-only

innobackupex --apply-log --redo-only /full_backup_path/timestamp

innobackupex --apply-log /full_backup_path/timestamp --incremental-dir=/incremental_backup_path/timestamp

innobackupex --defaults-file=/path/my.cnf --copy-back /full_backup_path/timestamp

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

如果有壓縮/解壓需求,請參考 官網Making a Compressed Backup 與 RESTORING XBSTREAM BACKUP CREATED BY PERCONA XTRABACKUP

============關於壓縮與串流的使用============

當使用壓縮備份時
參數 --compress --compress-threads=#
串流備分,
參數 --stream=STREAMNAME  (有tar和xbstream兩種)

innobackupex -user=xxx -password=ooo --stream=xbstream --compress --compress-threads=# /mysql_data_path > /backup_path/backup_filename.xbstream

還原使用參數, 若有使用串流(stream),則需要先解開,得到*.qp檔

xbstream -x < /backup_path/backup_filename.xbstream

需再次解開(需要安裝qpress套件, Mariadb Tools 可以找到rpm檔),得到正常可用的檔案

innobackupex --decompress /backup_path/  => 此語法在xtrabackup 2.1.4之後支援

接著才是正常的innobackupex --apply-log 再 innobackupex --copy-back
======================================

Replication => 官網How to setup a slave for replication in 6 simple steps with Percona XtraBackup

如果是從master備份,依照上面的備份方式即可,

如果是從slave備份,備份時使用--slave-info參數,
(可再額外附加--safe-slave-backup,則在備份期間會中斷SQL_thread和檢查Slave_open_temp_tables數量是否為0)

會將master的binlog 檔名和位置記錄在xtrabackup_slave_info檔中.

其他的剩下的設定部分,參考前文 實作簡單的MariaDB Replication

 

遠端備分

因工作環境需要輩分遠端的機器的DB,使用--host參數後發現,
還會讀取本地設定檔,找本地sock file.並不能熱備分遠端的DB.

後來採用stream的方式,邊備分邊傳送,語法如下,參考Percona Xtrabackup小筆記

innobackupex --user=name --password=name [--compress] --stream=tar|xbstream [--slave-info] --parallel=# /any_path/ | ssh user@ip "cat - > /full_backup_path/bak.tar|bak.xbstream"

這樣在備份本機並不會佔用空間.
注意 : ssh需要有對應權限

 

參考

MySQL · 物理备份 · Percona XtraBackup 备份原理

Innobackupex使用

官網innobackupex option reference

利用innobackupex搭建MySQL从库

xtrabackup 使用说明

 

arrow
arrow
    文章標籤
    innobackupex mariadb xtrabackup
    全站熱搜
    創作者介紹
    創作者 abcg5 的頭像
    abcg5

    Aaron Yang

    abcg5 發表在 痞客邦 留言(0) 人氣()