XtraBackup 相關

安裝 XtraBackup

1. yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm

2.?yum install percona-xtrabackup-24

遇到的問題:

Transaction check error:
file /etc/my.cnf from install of Percona-Server-shared-56-5.6.39-rel83.1.el7.x86_64 conflicts with file from package mysql-community-server-5.7.22-1.el7.x86_64

解決方法:
安裝?mysql-community-libs-compat
1. wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-community-libs-compat-5.7.22-1.el7.x86_64.rpm
2.?rpm -ivh mysql-community-libs-compat-5.7.22-1.el7.x86_64.rpm
3.?yum install percona-xtrabackup-24


創建備份用戶:

RELOAD、LOCK TABLES:在備份時,需要執行 FLUSH TABLES WITH READ LOCK 和 FLUSH ENGINE LOGS,然后開始復制數據。并且在使用 Backup Locks 時,需要執行 LOCK TABLES FOR BACKUP 和 LOCK BINLOG FOR BACKUP 。除非備份時,執行 --no-lock 選項,這樣便不需要這兩個權限了。

REPLICATION CLIENT:在備份時需要獲得二進制日志的位置信息,需要該權限。

CREATE TABLESPACE:使用 XtraBackup 進行恢復獨立表空間的時候,需要使用導入表空間,這時候需要該權限。

PROCESS:XtraBackup 在備份的時候,利用該權限可以查看所有正在服務器端運行的線程情況。

SUPER:用在復制環境中開啟和關閉 SLAVE 線程。

CREATE:CREATE 權限用于創建 PERCONA_SCHEMA.xtrabackup_historty 數據庫和表。

INSERT:INSERT 權限用于將寫入歷史記錄到 PERCONA_SCHEMA.xtrabackup_historty 數據庫和表。

SELECT:當 innobackupex 使用 --incremental-history-name 或 --incremental-history-uuid 選項時,可以使用 SELECT 權限查詢?PERCONA_SCHEMA.xtrabackup_historty 表的 innodb_to_lsn 的值來滿足該特性。

CREATE USER 'backup'@'localhost' IDENTIFIED BY '****';

GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT,?PROCESS ON *.* TO 'backup'@'localhost';

FLUSH PRIVILEGES;


全量備份:

backup stage:

innobackupex --host=127.0.0.1 --port=3306 --user=backup --password=***** /path/BACKUP_DIR/

prepare stage:

innobackupex --apply-log /path/BACKUP_DIR/******

--defaults-file:可以指定讀取的配置文件,該選項必須作為命令行第一個選項

--use-memory:該選項指定 xtrabackup 在 prepare 階段進行崩潰恢復的內存使用量,支持的單位如 1MB 1M 1GB 1G。它僅與 --apply-log 選項一起使用。

recovery stage:

datadir 目錄必須為空,如果不為空,innobackupex --copy-back 將不會復制

innobackupex --copy-back /path/BACKUP_DIR/*****

chown -R mysql:mysql datadir

systemctl restart mysqld


增量備份:

backup stage:

導入了 sakila 數據庫

innobackupex --host=127.0.0.1 --port=3306 --user=backup --password=****** --incremental --incremental-basedir=/path/BACKUP_DIR/2018-05-11_22-11-35/ /path/INCREMENTAL_BACKUP_DIR/

在 sakila 表中創建了 test 表

innobackupex --host=127.0.0.1 --port=3306 --user=backup --password=****** --incremental --incremental-basedir=/path/INCREMENTAL_BACKUP_DIR/2018-05-11_23-03-41 /path/INCREMENTAL_BACKUP_DIR/

往 test 表中插入數據

innobackupex --host=127.0.0.1 --port=3306 --user=backup --password=****** --incremental --incremental-basedir=/path/INCREMENTAL_BACKUP_DIR/2018-05-11_23-34-32 /path/INCREMENTAL_BACKUP_DIR/


prepare stage:

準備恢復到創建 test 表的狀態

1. cp -R 2018-05-11_22-11-35 /path/BASE_DIR

2.?innobackupex --apply-log --redo-only /path/BASE_DIR

3. innobackupex --apply-log --redo-only --incremental-dir=/path/INCREMENTAL_BACKUP_DIR/2018-05-11_23-03-41/ /path/BASE_DIR

4.?innobackupex --apply-log --incremental-dir=/path/INCREMENTAL_BACKUP_DIR/2018-05-11_23-34-32/ /path/BASE_DIR

在恢復的最后次增量備份前,都要加 --redo-only

recovery stage:

和全量備份一樣


恢復到了第二次增量備份狀態
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容