標籤:io os 使用 ar strong 檔案 資料 sp div
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的表
Mysqlbackup 備份詳解(mysql官方備份工具)