使用 Xtrabackup 備份與恢復數據庫

全量備份與恢復

全量備份

# innobackupex --user=root --password=123 --no-timestamp --databases=wdroot /fullbackup

恢復步驟

  1. 應用事務日誌到備份的文件中。
    # innobackupex --apply-log --user-memory=1G  /fullbackup
  2. 恢復數據到數據庫目錄中。(恢復前需要先確認/var/lib/mysql目錄爲空目錄)
    # innobackupex --datadir=/var/lib/mysql/ --copy-back /fullbackup
  3. 恢復完成後更改文件屬主屬組,最後啓動數據庫服務。
    # chown -R mysql.mysql /var/lib/mysql

增量備份與恢復

增量備份步驟

  1. 全量備份。
    # innobackupex --user=root --password=123 --no-timestamp /fullbackup
  2. 基於全量備份進行第一次增量備份。
    # innobackupex --user=root --password=123 --incremental --no-timestamp --incremental-basedir=/fullbackup /backup/incre01
  3. 在第一次增量備份的基礎上進行第二次增量備份。
    # innobackupex --user=root --password=123 --incremental --no-timestamp --incremental-basedir=/backup/incre01 /backup/incre02

增量恢復步驟

  1. 應用完整備份事務日誌到備份文件中。
    # innobackupex --apply-log --redo-only /fullbackup
  2. 將第一次增量備份應用到完整備份文件中。
    # innobackupex --apply-log --redo-only --incremental-dir=/backup/incre01 /fullbackup
  3. 將第二次增量備份應用到完整備份文件中。(恢復最後一個增量備份不需要 redo-only 參數
    # innobackupex --apply-log  --incremental-dir=/backup/incre02 /fullbackup
  4. 最後整體進行一次應用事務日誌。
    # innobackupex --apply-log /fullbackup
  5. 將備份數據恢復到數據庫目錄中。
    # innobackupex --datadir=/var/lib/mysql/ --copy-back /fullbackup
  6. 備份數據恢復完成後更改數據庫目錄中所有數據的屬主屬組,然後啓動數據庫。
    # chown -R mysql.mysql /var/lib/mysql

    如果要恢復到指定時間點,可以根據 xtrabackup_binlog_info 文件中 binlog 文件的位置藉助 mysqlbinlog 命令讀取 binlog 日誌,將數據恢復到具體的時間點。

innobackupex 常用參數

--user=             #指定數據庫備份的用戶
--password=         #指定數據庫備份的用戶密碼
--socket=           #指定socket文件位置
--defaults-file=    #指定my.cnf配置文件
--apply-log         #通過回滾未提交的事務及同步已經提交的事務至備份的數據文件中使備份數據文件處於一致性狀態
--redo-only         #只應用xtrabackup日誌中已提交的事務數據,不回滾還未提交的數據
--copy-back         #將備份數據複製到數據庫目錄中,數據庫目錄要爲空
--no-timestamp      #生成備份文件目錄名不以時間戳命名
--stream=           #指定流的格式做備份,--stream=tar,將備份文件歸檔
--datadir=          #指定mysql實例的數據庫文件所在路徑
--user-memory=      #該選項和--apply-log選項一起使用,默認值100M
--slave-info        #對mysql slave進行備份的時候使用,會將master的binlog文件名和偏移量位置保存到xtrabackup_slave_info文件中
--safe-slave-backup #會暫停mysql slave的SQL線程直到沒有打開的臨時表的時候開始備份。備份結束後SQL線程會自動啓動,目的主要是確保一致性的複製狀態
--include=          #指定一個正則表達式,用來匹配要備份的數據庫或者數據庫的某些表
--tables-file=      #該選項的參數是指定一個文件名,此文件中每行包含一個要備份的表的完整名稱,格式爲databasename.tablename
--databases=        #備份指定數據庫,多個空格隔開,不加此參數代表備份所有數據庫
--incremental=      #說明創建的是一個增量備份,還需要跟着指定 --incremental-basedir
--incremental-basedir=   #增量備份的基準目錄,也就是它的上次備份的備份文件的路徑
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章