Mysqlbackup 備份詳解(mysql官方備份工具)

A.1全庫備份.

命令:

mysqlbackup --defaults-file=/home/mysql-server/mysql3/my.cnf  --user=root --password=root  --databases="mysql total2" --with-timestamp   --backup-dir=/home/mysql-server/backup   backup

 

參數說明:    

--defaults-file my.cnf文件的路徑,主要用於一臺服務器多個mysql服務.默認位置是/etc/my.cnf

--user  用戶名,這個用戶必須在mysql庫裏面有創建table和查詢,插入的權限.在備份的過程中.mysqlbackup會在mysql庫下建立backup_history, backup_progress.用戶保留備份的歷史信息和備份的基礎信息.   

--password密碼

--database 需要備份的數據庫,要備份多個數據庫需要用””包括起來,每個數據庫中間用空格分開

--with-timestamp用戶創建一個備份目錄下面當前時間的文件夾,如果沒有這個參數,多次備份時,制定同一個目錄,會使上一次備份的文件覆蓋掉.

--backup-dir備份的目錄

Backup  表明,這是備份操作

 

A.2全庫還原.

第一步:檢測事務日誌

Mysqlbackup --defaults-file=/home/mysql-server/mysql2/my.cnf  --backup-dir=/home/mysql-server/backup/2012-03-21_14-01-34/  apply-log

參數說明:

apply-log:因爲在備份的時候是在線的,如果有新插入的SQL語句,會記錄新增加的LSN,然後新修改的頁面會放到這個文件裏面(ibbackup_logfile,同時也會放到表空間裏面.當還原使用這個參數的時候,mysqlbackup會檢測ibbackup_logfile和表空間的LSN,然後比較ibbackup_logfile文件表空間LSN的差值,把這個值放到事務日誌LOG裏面.(事務日誌如果填滿了,會進入表空間的)

       

第二步:copy物理文件

mysqlbackup --defaults-file=/home/mysql-server/mysql2/my.cnf --backup-dir=/home/mysql-server/backup/2012-03-21_14-01-34/  --innodb_log_files_in_group=2  copy-back

# 注意:在還原的時候,my.cnf文件中必要要有datadir的參數

 

 

B.1 壓縮全庫備份

mysqlbackup --defaults-file=/home/mysql-server/mysql3/my.cnf  --user=root --password=root --compress-level=1 --databases="mysql total2" --with-timestamp   --backup-dir=/home/mysql-server/backup  backup

 

參數說明:

--compress-level=1

1爲快速壓縮.共有9個等級

 

 

B.2壓縮還原

第一步:檢測事務日誌,並解壓

mysqlbackup --defaults-file=/home/mysql-server/mysql2/my.cnf --uncompress --backup-dir=/home/mysql-server/backup/2012-03-21_14-08-33/ apply-log

 

uncompress解壓壓縮後的文件.

   

第二步:copy物理文件

mysqlbackup --defaults-file=/home/mysql-server/mysql2/my.cnf --innodb_log_files_in_group=2 --backup-dir=/home/mysql-server/backup/2012-03-21_14-08-33/ copy-back

 # 注意:在還原的時候,my.cnf文件中必要要有datadir的參數

增量備份不支持壓縮. backup-and-apply-log參數不能跟--compress-level同用

 

C.1 備份時,同時釋放事務日誌

備份

mysqlbackup  --defaults-file=/home/mysql-server/mysql3/my.cnf  --user=root --password=root  --databases="mysql total2" --with-timestamp     --backup-dir=/home/mysql-server/backup  backup-and-apply-log

參數說明:

backup-and-apply-log 這個參數,在備份的時候,就把事務日誌檢測的功能就完成了,並把ibbackup_logfile與表空間差值的LSN內容放入到了事務日誌裏面,所以在還原的時候,就只需要備份物理文件就行

還原

mysqlbackup --defaults-file=/home/mysql-server/mysql2/my.cnf --innodb_log_files_in_group=2 --backup-dir=/home/mysql-server/backup/2012-03-21_19-25-09/  copy-back     

  

D.1 增量備份

第一次增量備份:

mysqlbackup  --defaults-file=/home/mysql-server/mysql3/my.cnf  --user=root --password=root   --with-timestamp

--databases=”mysql total2” --incremental --incremental-backup-dir=/home/mysql-server/in/  --incremental-base=dir:/home/mysql-server/backup/2012-03-22_11-10-28  backup

參數說明:  

--incremental :代表爲增量備份.

--incremental-backup-dir : 增量備份存放到哪個路徑下

--incremental-base : 增量備份的基礎備份或增量備份的文件

 

第二次增量備份:

mysqlbackup  --defaults-file=/home/mysql-server/mysql3/my.cnf  --user=root --password=root   --with-timestamp

--databases=”mysql total2”  --incremental --incremental-backup-dir=/home/mysql-server/in/  --incremental-base=dir:/home/mysql-server/backup/2012-03-22_11-15-28  backup

 

參數說明:  

--incremental-base : 這裏的備份,就是上一次增量備份的路徑

增量備份原理:增量備份是基於第一次的完整備份之後,通過完整最後的LSN點這個基礎在往後進行備份.當第二次增量備份的時,就基於前一次增量備份的LSN點的基礎在進行備份.所以--incremental-base這個參數在增量備份的時候,是指向上一次全備份或增量備份的LSN

            

 

 

D.2 增量還原

1. 全備檢測匹配釋放事務日誌

   mysqlbackup --defaults-file=/home/mysql-server/mysql2/my.cnf  --backup-dir=/home/mysql-server/backup/2012-03-21_17-59-54/ apply-log

 

2. 檢測匹配釋放第一次的增量備份

   mysqlbackup  --backup-dir=/home/mysql-server/backup/2012-03-21_17-59-54/  --incremental-backup-dir=/home/mysql-server/in/2012-03-22_11-47-47/  apply-incremental-backup

 

3.檢測匹配釋放第二次的增量備份

  mysqlbackup  --backup-dir=/home/mysql-server/backup/2012-03-21_17-59-54/  --incremental-backup-dir=/home/mysql-server/in/2012-03-22_11-50-47/  apply-incremental-backup

 

4. 最後進行物理文件複製

   mysqlbackup --defaults-file=/home/mysql-server/mysql2/my.cnf  --backup-dir=/home/mysql-server/backup/2012-03-21_17-59-54/copy-back

 

增量還原原理:

1.               首先檢測匹配釋放全備事務日誌文件(當然如果備份中使用了backup-and-apply-log,在備份的時候,已經檢測匹配了,就不需要這一步了)

2.               第一次增量備份的文件釋放到全備文件裏面.(首先會進入事務日誌,然後是表空間),所以--backup-dir指向全備目錄(基於LSN點向後增加)

3.               第二次增量備份的文件也是釋放到全備文件裏面. (首先會進入事務日誌,然後是表空間),因爲第一次的增量備份後,全庫裏面已經有了第一次的LSN,所以二次還原的時候同樣指向全備文件裏面使LSN點在外後增加

4.               因爲增量的頁面,已經全部進入了事務日誌或表空間,這個時候,就可以直接備份物理文件了.

 

但最後依然記住

# =======================================================================

把先備份的系統庫MV到原來的地方

修改data目錄的權限(如果你設置的是已MySQL用戶訪問的話)

     chown -R mysql.mysql data

# =========================================================================

在啓動mysql server..

 

 

Mysqlbackup工作原理

1.       mysqlbackupinnodb的表空間進行物理複製,但是,它是記錄LSN點的,在備份過程中,新增加的輸入直接寫入備份文件的ibbackup_logfile.同時記錄最後的LSN

2.       mysqlbackup myisam進行的是鎖表全備.就算是增量備份,它依然是全備.

3.       還原的時候,檢測對比ibbackup_logfile文件裏面與表空間裏面的差值,使ibbackup_logfile裏面的數據進入事務日誌或表空間

4.       在備份文件中的meta/backup_variables.txt文件中記錄了備份的一些信息

  [backup_variables]

start_lsn=1602048                                               #開始備份的LSN

end_lsn=687810168                                           結束LSN

apply_log_done=1                                             # 是否釋放檢測ibbackup_logfile文件(0表示沒有,1表示已經釋放)

is_incremental=0                                                #是否是增量爲增量備份文件(0:,1:)

is_incremental_with_redo_log_only=0              # 只配置重做日誌,當輸入數據大小重做日誌大小時,會有一場拋出

is_partial=1                                                        # 是服務器備份還是部分備份(0表示全服務器備份,1表示部分備份)

is_compressed=0                                              #是否壓縮(0表示沒有壓縮,1表示壓縮)

binlog_position=mysql-bin.000001:107          # 二進制文件大小

is_onlyinnodb=0                                               #是否只備份了innodb的表



文章轉自:http://blog.csdn.net/m582445672/article/details/7649944

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章