mysqlbackup的總結_20170918

wzq609發表於2017-09-18

一、mysqlbackup工具的介紹

1.1 mysqlbackup軟體的說明undefined

Mysql的備份方法有很多種,大部分企業當資料量很小的時候都是選擇mysqldump匯出資料庫的方式來進行備份,但是當資料量較多的時候,就不建議用這種方法進行。

公司的Mysql資料庫300GB,用mysqldump的方法進行恢復的時候,居然用了整整的一個星期,如果真正在災難的時候需要恢復,那簡直就是災難啊。

經過網上的查詢和搜尋,發現mysql的備份軟體確實太多,第三方的機構也有提供了相應的備份軟體,ORACLE公司也提供了針對企業的備份軟體MySQL Enterprise Backup簡稱:mysqlbackup

考慮到軟體的生命週期和軟體的文件考慮,還是使用mysqlbakcup,原因如下:

mysqlbackup3.5到4.1版本說明mysql公司一直在更新這個軟體,這樣隨著mysql軟體的更新備份軟體也會跟著更新,避免出現bug沒有解決,同時mysql dba掌握了這麼技術後也可以一直延續使用,提高了學習的收益。


 mysql的網站裡面有完整的使用手冊,這些文件對於整個軟體的使用至關重要;

1.2 mysqlbackup軟體的下載

mysqlbackup企業版在mysql的開源社群是下載不了的,需要有metalink的賬號才能下載。(早期是可以下載的,估計後來使用者的體驗不錯,需要授權購買oracle的服務才可以了)

目前我的環境都還是mysql5.6的,所以選擇用3.12的版本(3.12的版本修復了幾個重要的bug,建議用這個版本)


1.3 mysqlbackup軟體的安裝

選擇相應的版本進行下載,每臺要進行備份的mysql伺服器都需要安裝這個軟體。Mysql提供了兩種包,安裝的方法也有所不同。常用的安裝步驟如下:

sudo rpm -i package_name.rpm

tar xvzf package.tgz

安裝的目錄如下:/opt/mysql/meb-3.12

其他設定命令使用的快捷方式:ln -s /opt/mysql/meb-3.12/bin/mysqlbackup    /usr/bin/mysqlback

二、
mysqlbackup工具的介紹

mysqlbackup和mysqldump的主要功能是備份跟還原,mysqlbackup是oracle的企業產品感覺整個產品的思路和oracle的rman很像。mysqlbackup的功能對比成oracle的expdp。

Mysqlbackup提供了備份還原一些企業的功能:提供了更快的備份方式和更快的還原方式,支援線上全備和增倍、備份的壓縮、並行備份、備份的加密、資料庫的還原和基於時間點的還原。

透過mysqlbackup --help可以檢視相關的命令操作。 

三、mysqlbackup備份準備工作

      本章介紹使用mysqlbakcup的準備工作和使用方法;

3.1 備份的準備工作

      備份無小事,在備份之前,需要做好以下的準備工作,保證備份的正常執行。

需要做準備的工作如下幾點:

3.1.1 備份位置和空間的配置。

建議備份的目錄和資料庫檔案的目錄區分開,避免備份把空間撐爆了而導致系統不能使用;

3.1.2 設定備份策略(備份頻率、備份保留週期)

同時計算下每次備份所需要的磁碟空間再根據備份策略合理安排備份的空間;

3.1.3 建立單獨的備份使用者

其他業務分開賬號的使用,資料庫作為重要的系統,一般都會每年變更管理密碼的,這裡單獨使用一個避免後期還需要變更;
備份使用者所需要的基本許可權

  1. GRANT CREATE, INSERT, DROP, UPDATE ON mysql.backup_progress TO 'mysqlbackup'@'localhost';
  2. GRANT CREATE, INSERT, SELECT, DROP, UPDATE ON mysql.backup_history TO 'mysqlbackup'@'localhost';
  3. GRANT REPLICATION CLIENT ON *.* TO 'mysqlbackup'@'localhost';
  4. GRANT SUPER ON *.* TO 'mysqlbackup'@'localhost';
  5. GRANT LOCK TABLES, SELECT, CREATE, DROP, FILE ON *.* TO 'mysqlbackup'@'localhost'


3.2 備份庫主要選項


    備份其實主要的內容也就是backup、restore和校驗。每個階段使用的主要引數如下:
  • Backup operations: backup, backup-and-apply-log, backup-to-image
  • Update operations: apply-log, apply-incremental-backup
  • Restore operations: copy-back, copy-back-and-apply-log
  • Validation operation: validate Single-file backup
  • operations: image-to-backup-dir, backup-dir-to-image, list-image, extract

在3.12.3以下的版本backup-and-apply-log這個備份的時候不能結合引數compress使用。mysqlbackup官方的文件建議使用backup-to-image選項,該方法效能更好,而且備份的檔案也更小。
備註:

When used with the 
apply-log or copy-back-and-apply-log operation, uncompresses a 
compressed backup before applying the InnoDB log. When used with the copy-back operation,uncompresses a compressed prepared backup (created by the backup-and-apply-log command with the --compress option) before restoring it to a server (only supported for MySQL Enterprise

Backup 3.12.3 and later).
backup-to-image
Produces a single-file backup holding the backup data. In most cases, single-file backups are preferred over directory backups, which are created using the backup command.

3.3 備份庫主要引數

可以透過mysqlbackup --help會顯示豐富的引數說明,這邊列幾個比較常見的引數

引數 說明 備註
--backup-dir
The directory to store the backup data.

--backup-image
Specifies the path name of the backup image.
結合backup-to-image使用
--compress
Create backup in compressed format.
預設級別是1
--compress-level
Specifies the level of compression.
--compress-level=LEVEL  
  Specify value from 0-9. 
  Specify value 0 to disable compression. 
  Specify value 1 for fastest compression. 
  Specify value 9 for best compression.
--uncompress
Uncompress the compressed backup before an apply-log,
copy-back, or copy-back-and-apply-log operation.
如果備份是有使用compress,還原的時候就得使用該引數
--datadir
Path to mysql server data directory.

--defaults-file
Only read default options from the given file.

--force
Force overwriting of data, log, or image files, depending on
the operation.
進行強制覆蓋
--incremental
Specifies that the associated backup or backup-to-image
operation is incremental.
增量備份選項
--incremental-backup-dir
Specifies the location under which to store data from an
incremental backup.
增量備份儲存位置
--incremental-base
The specification of base backup for --incremental option.
上次完整備份的位置
--with-timestamp
Create a subdirectory underneath the backup directory
with a name formed from the timestamp of the backup
operation.
根據時間戳生成一個檔案,因為備份的時候需要在一個空的目錄儲存檔案,所以一般建議使用整個引數

四、
mysqlbackup備份及還原


方法一:使用backup

點選(此處)摺疊或開啟

  1. 全備的指令碼
  2. [root@db02 backup]# mysqlbackup --user=mysqlbackup --password=123   --backup-dir=/backup  --with-timestamp  backup 

  3. 還原的指令碼
  4. [root@db02 backup]# mysqlbackup --backup-dir=/backup/2017-09-18_13-49-11 apply-log #因為在備份期間資料庫還在讀寫,把這期間的log進行應用,達到資料的一致性
  5. [root@db02 backup]# mysqlbackup --datadir=/data/mysql --backup-dir=/backup/2017-09-18_13-49-11 copy-back

方法二:在不同的時期使用app-log

點選(此處)摺疊或開啟
  1. 全備的指令碼
  2. [root@db02 backup]#mysqlbackup --defaults-file=/etc/my.cnf --user=mysqlbackup --password=123 --backup-dir=/backup --with-timestamp backup-and-apply-log
  3. 還原的指令碼
  4. [root@db02 backup]# mysqlbackup --datadir=/data/mysql --backup-dir=/backup/2017-09-18_13-49-11 copy-back
【注】backup-and-apply-log使用這個指令碼,mysql官方文件有以下說明,不能用於增量備份,但是在實驗中卻是可以的;
backup-and-apply-log
A combination of backup and apply-log. It cannot be used for an incremental backup.

方法三:使用backup-to-image的方式

這種方法是mysql官方推薦的,只有產生單個的備份二進位制檔案,整個備份的大小也比前面兩種要小
點選(此處)摺疊或開啟
  1. 全備的指令碼
  2. [root@db02 mysql]# mysqlbackup --user=mysqlbackup --password=123 --backup-image=backup.mbi --backup-dir=/backup --with-timestamp backup-to-image

  3. 還原的指令碼
  4. [root@db02 data]# mysqlbackup --defaults-file=/backup/2017-09-15_17-06-07/server-my.cnf --datadir=/data/mysql --backup-dir=/backup/2017-09-15_17-06-07 copy-back

五、mysqlbackup增量備份及還原

方法一:用bakcup的方法進行的增量備份

點選(此處)摺疊或開啟
  1. 備份的操作:先進行全備後進行增備
  2. mysqlbackup --defaults-file=/etc/my.cnf --user=mysqlbackup --password=123 --backup-dir=/backup --with-timestamp backup #全備
  3. mysqlbackup --defaults-file=/etc/my.cnf --user=mysqlbackup --password=123 --with-timestamp --incremental --incremental-backup-dir=/backup/ --incremental-base=dir:/backup/2017-09-18_14-51-25 backup #增量備份
  4. --incremental-base 為前面全備的路徑
點選(此處)摺疊或開啟
  1. 還原的操作
  2. mysqlbackup --backup-dir=/backup/2017-09-18_15-25-59 apply-log #全備的庫先apply-log
  3. mysqlbackup --backup-dir=/backup/2017-09-18_15-25-59 --incremental-backup-dir=/backup/2017-09-18_15-42-56 apply-incremental-backup #在步驟一的基礎上繼續恢復
  4. mysqlbackup --defaults-file=/etc/my.cnf --force --backup-dir=/backup/2017-09-18_15-25-59/ --datadir=/data/mysql copy-back-and-apply-log #複製然後再恢復增備的log

方法二:用image的方法進行的增量備份

點選(此處)摺疊或開啟
  1. 備份的操作:先進行全備後進行增備
  2. mysqlbackup --user=mysqlbackup --password=123 --backup-image=backup.mbi --backup-dir=/backup --with-timestamp backup-to-image #先備份成image
  3. mysqlbackup --defaults-file=/etc/my.cnf --user=mysqlbackup --password=123 --with-timestamp --incremental --incremental-backup-dir=/backup/ --incremental-base=dir:/backup/2017-09-18_15-53-57 backup #在原來備份的基礎上進行增量備份
點選(此處)摺疊或開啟
  1. 還原的操作
  2. mysqlbackup --backup-dir=/backup/full --backup-image=/backup/2017-09-18_15-53-57/backup.mbi image-to-backup-dir 先轉換成方法一的備份檔案,後續的步驟都跟前面一樣
  3. mysqlbackup --backup-dir=/backup/full apply-log
  4. mysqlbackup --backup-dir=/backup/full --incremental-backup-dir=/backup/2017-09-18_15-56-13 apply-incremental-backup
  5. mysqlbackup --defaults-file=/etc/my.cnf --force --backup-dir=/backup/full --datadir=/data/mysql copy-back-and-apply-log

六、其他操作

6.1 關於image備份的一些操作

點選(此處)摺疊或開啟
  1. mysqlbackup --backup-image=/backup/2017-09-18_15-53-57/backup.mbi validate 檢查備份的有效性;
  2. mysqlbackup --backup-image=/backup/2017-09-18_15-53-57/backup.mbi list-image 列出備份物件
  3. mysqlbackup --backup-image=/backup/2017-09-18_15-53-57/backup.mbi extract 進行解壓,直接在備份目錄裡面操作
  4. mysqlbackup --backup-dir=/backup/backup --backup-image=/backup/2017-09-18_15-53-57/backup.mbi image-to-backup-dir 指定備份目錄進行解壓

6.2 其他

     關於備份的壓縮:其實備份的壓縮挺好用的,經過測試可以顯著的節省備份的空間。雖然在上面測試的時候沒有演示,實際上本人是有操作過備份壓縮的,而且相對於正常的備份其實並沒有消耗很多的時間;
     關於image的增量備份:image的增量備份恢復步驟相對全備麻煩了很多,在官方文件裡面找了很久是不是還有更便捷的操作,但始終沒有找到相關操作說明,如果知道的朋友麻煩留下言,感激不盡;
     關於增量備份:增量備份有沒有必要了,其實這要看我們系統的重要性、資料增長的速度。目前我們這邊最大的系統2天才產生一個G的binlog,整體資料庫也不算很大,所以現在每天都是使用全備了。
    關於該軟體:mysqlbackup其實還有很多的功能的,可以針對表、資料庫物件進行備份。同時也可以用於搭建從庫,這個功能對於資料庫很大的使用者是個福音,強烈對劍該功能;
    但是由於這個軟體是Oracle的企業版,付費使用者才能使用的,所以網上相關的資料並不多。但是有很全的官方文件。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12679300/viewspace-2145129/,如需轉載,請註明出處,否則將追究法律責任。