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. mysqlbackup對innodb的表空間進行物理複製,但是,它是記錄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