mysql系列~xtrabackup使用
零 原理
1 開啓兩個線程,一個線程拷貝innodb文件,一個線程拷貝redolog日誌,redolog從最新的ckpt點開始拷貝日誌
2 拷貝完innodb文件,全局加ftwl鎖,開始拷貝非innodb文件
3 拷貝完非innodb文件,開始獲取binlog的位置,並將binlog的點位信息寫入文件中
4 停止拷貝redolog日誌的線程,釋放全局鎖
一 參數講解
--slave-info 獲取從庫同步信息
--safe-slave-backup 停止從庫複製sql_thread進程,發生在全局FTDWRL鎖上,完成後會打開sql_thread,時間過長可能導致日誌記錄複製異常警告
--parallel 並行拷貝innodb文件,建議增大
--compress 針對拷貝的innodb文件採取壓縮
--compress-threads 壓縮線程數量
--ftwrl-wait-timeout=SECONDS 等待ftwl鎖,如果異常則推出
二 備份參數
1 實時備份
innobackupex --defaults-file=/tmp/my.cnf --host=localhost --user=root --password=root --slave-info backupdir
2 每日task
innobackupex --defaults-file=/tmp/my.cnf --host=localhost --user=root --password=root --slave-info --safe-slave-backup --ftwrl-wait-timeout=120--stream=tar $backup_dir --parallel=6 2>$logfile|gzip > $gzip_file
三 部分備份恢復
目的 針對具體庫/表實現遷移或者指定庫從庫 拷貝ibd等文件,然後discard,import 即可,每張表都需要新建,discard再import
庫備份 innobackupex --defaults-file=/tmp/my.cnf --databases="db1 db2 db3"--host=localhost --user=root --password=root --slave-info backupdir
表備份 innobackupex --defaults-file=/tmp/my.cnf --include="db.table db.table" --host=localhost --user=root --password=root --slave-info backupdir
還原 innobackupex --apply-log --export dir
需要導入活動實例
1 創建 單表的結構 create table
2 禁用表空間 ALTER TABLE tablename DISCARD TABLESPACE;
3 拷貝相關表文件指定庫目錄.ibd,cfg,frm文件
4 重新授權chown -R mysql:mysql
5 啓用表空間 ALTER TABLE tablename IMPORT TABLESPACE;
6 進行表數據查看
四 檢測是否正常
1 日誌過濾'complate ok'
2 檢測 echo $? 是否爲0
五 xtrabackup遇到過的最常見問題還是從因爲慢查詢導致的無法獲取FTWL參數問題
1 開啓兩個線程,一個線程拷貝innodb文件,一個線程拷貝redolog日誌,redolog從最新的ckpt點開始拷貝日誌
2 拷貝完innodb文件,全局加ftwl鎖,開始拷貝非innodb文件
3 拷貝完非innodb文件,開始獲取binlog的位置,並將binlog的點位信息寫入文件中
4 停止拷貝redolog日誌的線程,釋放全局鎖
一 參數講解
--slave-info 獲取從庫同步信息
--safe-slave-backup 停止從庫複製sql_thread進程,發生在全局FTDWRL鎖上,完成後會打開sql_thread,時間過長可能導致日誌記錄複製異常警告
--parallel 並行拷貝innodb文件,建議增大
--compress 針對拷貝的innodb文件採取壓縮
--compress-threads 壓縮線程數量
--ftwrl-wait-timeout=SECONDS 等待ftwl鎖,如果異常則推出
二 備份參數
1 實時備份
innobackupex --defaults-file=/tmp/my.cnf --host=localhost --user=root --password=root --slave-info backupdir
2 每日task
innobackupex --defaults-file=/tmp/my.cnf --host=localhost --user=root --password=root --slave-info --safe-slave-backup --ftwrl-wait-timeout=120--stream=tar $backup_dir --parallel=6 2>$logfile|gzip > $gzip_file
三 部分備份恢復
目的 針對具體庫/表實現遷移或者指定庫從庫 拷貝ibd等文件,然後discard,import 即可,每張表都需要新建,discard再import
庫備份 innobackupex --defaults-file=/tmp/my.cnf --databases="db1 db2 db3"--host=localhost --user=root --password=root --slave-info backupdir
表備份 innobackupex --defaults-file=/tmp/my.cnf --include="db.table db.table" --host=localhost --user=root --password=root --slave-info backupdir
還原 innobackupex --apply-log --export dir
需要導入活動實例
1 創建 單表的結構 create table
2 禁用表空間 ALTER TABLE tablename DISCARD TABLESPACE;
3 拷貝相關表文件指定庫目錄.ibd,cfg,frm文件
4 重新授權chown -R mysql:mysql
5 啓用表空間 ALTER TABLE tablename IMPORT TABLESPACE;
6 進行表數據查看
四 檢測是否正常
1 日誌過濾'complate ok'
2 檢測 echo $? 是否爲0
五 xtrabackup遇到過的最常見問題還是從因爲慢查詢導致的無法獲取FTWL參數問題
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.