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參數問題
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章