安裝 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:
和全量備份一樣