關(guān)于 XtraBackup
XtraBackup 是一個對數(shù)據(jù)庫做物理熱備的備份工具,可用于InnoDB數(shù)據(jù)庫的肺阻塞備份,對于MyISAM的備份需要加表鎖。
XtraBackup 主要有兩個命令腳本:xtrabackup和innobackupex
xtrabackup只能備份InnoDB和XtraDB兩種數(shù)據(jù)表。
innobackupex則封裝了xtrabackup,同時還可以備份MyISAM數(shù)據(jù)表。在高版本中xtrabackup實現(xiàn)了innobackupex的功能,innobackupex在8.0+版本中已被棄用
XtraBackup 安裝
由于yum源中的XtraBackup版本較低不能備份高版本的mysql數(shù)據(jù)庫,不建議使用yum安裝XtraBackup。
下載地址 https://www.percona.com/downloads/XtraBackup/LATEST/ 根據(jù)自己的mysql版本選擇對應(yīng)的安裝包。
我的mysql版本是5.7的這里我用的是2.4.9的版本。
wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.9/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm
rpm -ivh percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm
如果安裝失敗可能是缺少對應(yīng)的依賴包,yum install安裝一下對應(yīng)依賴包即可
如:yum install perl-DBD-MySQL.x86_64
innobackupex常用參數(shù)說明
innobackupex - Non-blocking backup tool for InnoDB, XtraDB and HailDB databases
innobackupex - 用于InnoDB、XtraDB和HailDB數(shù)據(jù)庫的非阻塞備份工具
NOTICE: 'innobackupex' is deprecated, please switch to 'xtrabackup'
NOTICE: innobackupex'已被棄用,請使用'xtrabackup '
SYNOPOSIS
innobackupex [--compress] [--compress-threads=NUMBER-OF-THREADS] [--compress-chunk-size=CHUNK-SIZE]
[--encrypt=ENCRYPTION-ALGORITHM] [--encrypt-threads=NUMBER-OF-THREADS] [--encrypt-chunk-size=CHUNK-SIZE]
[--encrypt-key=LITERAL-ENCRYPTION-KEY] | [--encryption-key-file=MY.KEY]
[--include=REGEXP] [--user=NAME]
[--password=WORD] [--port=PORT] [--socket=SOCKET]
[--no-timestamp] [--ibbackup=IBBACKUP-BINARY]
[--slave-info] [--galera-info] [--stream=tar|xbstream]
[--defaults-file=MY.CNF] [--defaults-group=GROUP-NAME]
[--databases=LIST] [--no-lock]
[--tmpdir=DIRECTORY] [--tables-file=FILE]
[--history=NAME]
[--incremental] [--incremental-basedir]
[--incremental-dir] [--incremental-force-scan] [--incremental-lsn]
[--incremental-history-name=NAME] [--incremental-history-uuid=UUID]
[--close-files] [--compact]
BACKUP-ROOT-DIR
此命令行對MySQL數(shù)據(jù)庫進(jìn)行熱備份。默認(rèn)情況下,它會在指定的備份目錄中創(chuàng)建一個由當(dāng)前日期和時間命名的子目錄。使用——no-timestamp選項可以控制。此命令可以對所有數(shù)據(jù)庫或使用——databases選項指定的所有數(shù)據(jù)庫中的所有MyISAM和InnoDB表和索引進(jìn)行完全備份。創(chuàng)建的備份包含.frm、. mrg、. myd、. myi、. mad、. mai、. trg、. trn、. arm、. arz、. csm、CSV、.opt、.par和InnoDB數(shù)據(jù)和日志文件。--defaults-file=my.cnf 文件定義了數(shù)據(jù)庫的位置。這個命令會以mysql client程序連接到MySQL服務(wù)器,并作為子進(jìn)程運行xtrabackup。
innobackupex --apply-log [--use-memory=B]
[--defaults-file=MY.CNF]
[--export] [--redo-only] [--ibbackup=IBBACKUP-BINARY]
BACKUP-DIR
在上一個命令中生成的備份文件是不可以直接拿來用的?!猘pply-log命令會應(yīng)用日志為使用這個備份做一個準(zhǔn)備。這個會命令使用備份目錄下的xtrabackup_logfile恢復(fù)backup-my.cnf中指定的InnoDB數(shù)據(jù)文件,并創(chuàng)建backup-my.cnf中指定的InnoDB日志文件。此命令作為子進(jìn)程運行xtrabackup,但它不會連接到數(shù)據(jù)庫服務(wù)器。
innobackupex --copy-back [--defaults-file=MY.CNF] [--defaults-group=GROUP-NAME] BACKUP-DIR
innobackupex --move-back [--defaults-file=MY.CNF] [--defaults-group=GROUP-NAME] BACKUP-DIR
—move-back命令與—copy-back類似,唯一的區(qū)別是它將文件移動而不是復(fù)制它們。由于此選項會刪除備份文件,因此必須謹(jǐn)慎使用。當(dāng)沒有足夠的空閑磁盤空間來復(fù)制文件時,它可能很有用。
innobackupex [--decompress] [--decrypt=ENCRYPTION-ALGORITHM]
[--encrypt-key=LITERAL-ENCRYPTION-KEY] | [--encryption-key-file=MY.KEY]
[--parallel=NUMBER-OF-FORKS] BACKUP-DIR
壓縮和解壓備份文件
* **--apply-log** 通過回滾未提交的事務(wù)及同步已經(jīng)提交的事務(wù)至數(shù)據(jù)文件使數(shù)據(jù)文件處于一致性狀態(tài)
* **--redo-only** 用于--apply-log,強制備份日志時只redo,跳過rollback,這在做增量備份時非常必要。
* **--incremental** 指明是增量備份,--incremental-basedir指定上次完整備份或者增量備份文件的位置。這里的增量備份其實只針對的是InnoDB,對于MyISAM來說,還是完整備份。
* **--no-lock** 使用此選項可禁用“LUSH TABLES WITH READ LOCK”的表鎖定。如果此備份是用來做主從的不要使用此值。
* **--no-timestamp** 此選項可以禁止生成日期+時間的子目錄
* **--databases** 指定備份的數(shù)據(jù)庫,多個數(shù)據(jù)庫用空格分隔
* **--close-files** 該選項表示關(guān)閉不再訪問的文件句柄,當(dāng)xtrabackup打開表空間通常并不關(guān)閉文件句柄目的是正確的處理DDL操作。如果表空間數(shù)量巨大,這是一種可以關(guān)閉不再訪問的文件句柄的方法。使用該選項有風(fēng)險,會有產(chǎn)生不一致備份的可能
示例
#備份數(shù)據(jù)庫
xtrabackup --defaults-file=/usr/local/webserver/mysql-5.7/my.cnf --user=root --password='123456' --databases='online_core online_db_2' --backup --target-dir=/data/xtrabackup/dxk/ --socket=/tmp/mysql.sock
#應(yīng)用日志
innobackupex --use-memory=1G --apply-log /data/xtrabackup/2019-01-07_18-14-01/
#恢復(fù)數(shù)據(jù)
innobackupex --defaults-file=/usr/local/webserver/mysql-5.7-baowei/my.cnf --move-back /data/xtrabackup/2019-01-07_18-14-01/
mysql主庫不停機做主從配置
#全量備份主庫
innobackupex --defaults-file=/usr/local/webserver/mysql-5.7/my.cnf --socket=/tmp/mysql.sock --user=root --password='123456' --parallel=4 /mnt/datadisk/xtrabackup/
#copy備份文件到從庫主機
scp -r xtrabackup root@10.0.223.18:/mnt/datadisk/
#進(jìn)入從庫所在主機,停止從庫,移除data目錄
/usr/local/webserver/mysql-5.7-baowei/support-files/mysql.server stop
cd /mnt/datadisk
mv mysql_data_baowei mysql_data_baowei_bak
#應(yīng)用日志
innobackupex --use-memory=1G --apply-log /mnt/datadisk/xtrabackup/2019-01-09_01-00-01/
#恢復(fù)數(shù)據(jù)到從庫
innobackupex --defaults-file=/usr/local/webserver/mysql-5.7-baowei/my.cnf --move-back /mnt/datadisk/xtrabackup/xtrabackup/2019-01-09_01-00-01/
#修改從庫data目錄屬主,啟動從庫
chown -R mysql:mysql /mnt/datadisk/mysql_data_baowei
/usr/local/webserver/mysql-5.7-baowei/support-files/mysql.server start
#主庫創(chuàng)建slave賬號
/usr/local/webserver/mysql-5.7/bin/mysql -u root -p
GRANT REPLICATION SLAVE ON *.* TO 'baoyuan_slave'@'10.0.223.18' IDENTIFIED BY '123456';
flush privileges;
#查看binlog位置,啟動從庫slave進(jìn)程
cat /mnt/datadisk/xtrabackup/2019-01-09_01-00-01/xtrabackup_binlog_info
/usr/local/webserver/mysql-5.7-baowei/bin/mysql -u root -h 127.0.0.1 -P 3307 -p
CHANGE MASTER TO MASTER_HOST='10.0.223.17',MASTER_PORT=3306, MASTER_USER='baoyuan_slave',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000592',MASTER_LOG_POS=97895353;
start slave;
show slave status\G;
- 在恢復(fù)數(shù)據(jù)到從庫時my.cnf一定要指名datadir。
- 進(jìn)入從庫時的賬戶密碼和主庫的是一樣的,數(shù)據(jù)是從主庫復(fù)制過來的。
- 注意主庫的iptables防火墻對從庫開放3306端口。
- 主從同步延時較大的情況下建議調(diào)整從庫 innodb_flush_log_at_trx_commit 和 sync_binlog。參考:http://www.itdecent.cn/p/74b03a792ff8或https://blog.csdn.net/thundermeng/article/details/50448614
注意事項:
- xtrabackup 8.0只能用于mysql8.0的版本,如果低版本mysql的備份和遷移需要用xtrabackup2.4版本。一定要注意看手冊下載安裝不同版本的xtrabackup。xtrabackup8及以上高版本沒有innobackupex命令
- 查看當(dāng)前xtrabackup支持的mysql版本
[root@dzfxdb01 datadisk]# xtrabackup -v
xtrabackup version 2.4.9 based on MySQL server 5.7.13 Linux (x86_64) (revision id: a467167cdd4)
參考資料
https://www.cnblogs.com/zhoujinyi/p/5893333.html
http://www.itdecent.cn/p/74b03a792ff8
https://blog.csdn.net/thundermeng/article/details/50448614