備份前階段:
1敢会、備份文件夾必須專用于備份
在xtrabackup文件夾中吃谣,不應該有任何其他文件或任何文件夾萝喘。因為文件或文件夾時間戳可能會影響下一次增量備份夏醉。原因是
if($ option_incremental_basedir ne''){
$ incremental_basedir = $ option_incremental_basedir;
} else {
我的@dirs =`ls -t $ backup_root`;
我的$ inc_dir = $ dirs [0];
格格($ inc_dir);
$ incremental_basedir = File :: Spec-> catfile($ backup_root,$ inc_dir);
ls -t用于確定基于修改時間的最新備份文件夾疑苫。最舊的文件夾時間戳可能由于錯誤而更改熏版,在我們的示例中,清除作業(yè)開始工作捍掺,并且由于文件夾很大而無法完成撼短。在這種情況下,此清除文件夾(最舊的文件夾)可被視為最新的備份文件夾挺勿,xtrabackup會選擇錯誤的文件夾阔加。
2、information_schema未備份
這意味著表創(chuàng)建時間戳丟失满钟。所有表的時間戳都基于它們何時恢復胜榔。
備份階段:
(1)從master進行備份
innobackupex --user = root --password =`keydbgetkey mysqlroot` --host='localhost' --port=3308
復制信息會記錄在xtrabackup_binlog_pos_innodb
中。
基于ROW的復制事件格式允許僅維護持久表狀態(tài)湃番。因此夭织,即使臨時表中有更改,主日志文件和位置也將相同吠撮,所以備份master不會備份臨時表尊惰。
備份選項--compress --nolock
數(shù)據(jù)庫備份已壓縮。它可以節(jié)省2/3的空間泥兰。no-lock意味著xtrabackup不會發(fā)出“FLUSH TABLES WITH READ LOCK”來臨時鎖定表以獲得一致的* frm文件弄屡。這意味著如果在備份* frm期間發(fā)生某些DDL,則備份可能會不一致鞋诗。
(2)從slave進行備份
innobackupex --user = root --password =`keydbgetkey mysqlroot` --host='localhost' --port=3308 --slave-info
如果你有一個大的alter table查詢運行膀捷,xtrabackup將等到“alter query”結束。
mysql> show processlist;
+------+-----------------+-----------+------+---------+--------+----------------------------------+------------------------------------------------+-----------+---------------+
| Id | User | Host | db | Command | Time | State | Info | Rows_sent | Rows_examined |
+------+-----------------+-----------+------+---------+--------+----------------------------------+------------------------------------------------+-----------+---------------+
| 1 | event_scheduler | localhost | NULL | Daemon | 260586 | Waiting on empty queue | NULL | 0 | 0 |
| 157 | root | localhost | NULL | Sleep | 1 | | NULL | 1 | 4 |
| 192 | system user | | NULL | Connect | 258744 | Waiting for master to send event | NULL | 0 | 0 |
| 193 | system user | | yax | Connect | 5923 | altering table | alter table creative_content drop column stacy | 0 | 0 |
| 5389 | root | localhost | NULL | Query | 4 | Waiting for backup lock | LOCK TABLES FOR BACKUP | 0 | 0 |
| 5390 | root | localhost | NULL | Query | 0 | init | show processlist | 0 | 0 |
+------+-----------------+-----------+------+---------+--------+----------------------------------+------------------------------------------------+-----------+---------------+
6 rows in set (0.00 sec)
這里單獨提一下 Waiting for backup lock
削彬。
xtrabackup詳見https://www.percona.com/doc/percona-server/LATEST/management/backup_locks.html
mariabackup詳見https://mariadb.com/kb/en/library/backup-lock/
在沒有啟用GTID的情況下從多線程從站(MTS)進行備份全庸,此時--slave-info無法添加。
innobackupex --user = root --password =`keydbgetkey mysqlroot` --host='localhost' --port=3308 --slave-info
innobackupex: Error: The --slave-info option requires GTID enabled for a multi-threaded slave
對于沒有啟用GTID的MTS融痛,--safe-slave-backup是可選的壶笼。它導致執(zhí)行點 - 時間恢復的不同機制。
innobackupex --user = root --password =`keydbgetkey mysqlroot` --host='localhost' --port=3308 --safe-slave-backup
或者
innobackupex --user = root --password =`keydbgetkey mysqlroot` --host='localhost' --port=3308
不鎖表進行備份
使用此選項可在備份時禁用備份鎖定雁刷。僅當所有表都是InnoDB并且您不關心備份的二進制日志位置時才使用它覆劈。
如果備份用于point-in-time-recovery,則根本不能使用無鎖沛励。
恢復階段:
未完待續(xù)责语。。侯勉。
http://funwithmysql.blogspot.com/2017/05/xtrabackup-backup-restore.html