Mysql使用innobackupex線上備份方案(全量+增量)操作記錄

來源:互聯網
上載者:User

標籤:有用   語言   進程   操作   備份mysql   seq   簡單   database   拷貝檔案   

 

在日常的linux營運工作中,對mysql資料庫的備份是非常重要的一個環節。關於mysql的備份和恢複,比較傳統的是用mysqldump工具。今天這裡介紹下另一款mysql備份工具innobackupex,利用它對mysql做全量和增量備份,僅僅依據本人實戰操作做一記錄,如有誤述,敬請指出~

一、innobackupex的介紹
Xtrabackup是由percona開發的一個開源軟體,是使用perl語言完成的指令碼工具,能夠非常快速地備份與恢複mysql資料庫,且支援線上熱備份(備份時不影響資料讀寫),此工具調用xtrabackup和tar4ibd工具,實現很多對效能要求並不高的任務和備份邏輯,可以說它是innodb熱備工具ibbackup的一個開源替代品。
Xtrabackup中包含兩個工具:
1)xtrabackup :用於熱備份innodb,xtradb引擎表的工具,不能備份其他表。
2)innobackupex:對xtrabackup封裝的perl指令碼,提供了用於myisam(會鎖表)和innodb引擎,及混合使用引擎備份的能力。
innobackupex比xtarbackup有更強的功能,它整合了xtrabackup和其他的一些功能,它不但可以全量備份/恢複,還可以基於時間的增量備份與恢複。

Xtrabackup可以做什麼
1)線上(熱)備份整個庫的InnoDB, XtraDB表
2)在xtrabackup的上一次整庫備份基礎上做增量備份(innodb only)
l3)以流的形式產生備份,可以直接儲存到遠程機器上(本機硬碟空間不足時很有用)

MySQL資料庫本身提供的工具並不支援真正的增量備份,二進位日誌恢複是point-in-time(時間點)的恢複而不是增量備份。Xtrabackup工具支援對InnoDB儲存引擎的增量備份,工作原理如下:
1)首先完成一個完全備份,並記錄下此時檢查點的LSN(Log Sequence Number)。
2)在進程增量備份時,比較資料表空間中每個頁的LSN是否大於上次備份時的LSN,如果是,則備份該頁,同時記錄當前檢查點的LSN。

innobackupex備份mysql資料的原理
innobackupex首先調用xtrabackup來備份innodb資料檔案,當xtrabackup完成後,innobackupex就查看檔案xtrabackup_suspended ;然後執行“FLUSH TABLES WITH READ LOCK”來備份其他的檔案

innobackupex恢複mysql資料的原理
innobackupex首先讀取my.cnf,查看變數(datadir,innodb_data_home_dir,innodb_data_file_path,innodb_log_group_home_dir)對應的目錄是存在,確定相關目錄存在後,然後先copy myisam表和索引,然後在copy innodb的表、索引和日誌。

------------------------------------------------------------------------------------------------------------------------------------------
以上簡單概括了innobackupex備份和恢複的原理,下面將詳細說下它備份和恢複的工作原理:

(1)備份的工作原理
       如果在程式啟動階段未指定模式,innobackupex將會預設以備份模式啟動。
       預設情況下,此指令碼以--suspend-at-end選項啟動xtrabackup,然後xtrabackup程式開始拷貝InnoDB資料檔案。當xtrabackup程式執行結束,innobackupex將會發現xtrabackup建立了xtrabackup_suspended_2檔案,然後執行FLUSH TABLES WITH READ LOCK,此語句對所有的資料庫表加讀鎖。然後開始拷貝其他類型的檔案。
       如果--ibbackup未指定,innobackupex將會自行嘗試確定使用的xtrabackup的binary。其確定binary的邏輯如下:首先判斷備份目錄中xtrabackup_binary檔案是否存在,如果存在,此指令碼將會依據此檔案確定使用的xtrabackup binary。否則,指令碼將會嘗試串連database server,通過server版本確定binary。如果串連無法建立,xtrabackup將會失敗,需要自行指定binary檔案。
       在binary被確定後,將會檢查到資料庫server的串連是否可以建立。其執行邏輯是:建立串連、執行query、關閉串連。若一切正常,xtrabackup將以子進程的方式啟動。
       FLUSH TABLES WITH READ LOCK是為了備份MyISAM和其他非InnoDB類型的表,此語句在xtrabackup已經備份InnoDB資料和記錄檔後執行。在這之後,將會備份 .frm, .MRG, .MYD, .MYI, .TRG, .TRN, .ARM, .ARZ, .CSM, .CSV, .par, and .opt 類型的檔案。
       當所有上述檔案備份完成後,innobackupex指令碼將會恢複xtrabackup的執行,等待其備份上述邏輯執行過程中產生的交易記錄檔。接下來,表被解鎖,slave被啟動,到server的串連被關閉。接下來,指令碼會刪掉xtrabackup_suspended_2檔案,允許xtrabackup進程退出。

(2)恢複的工作原理
       為了恢複一個備份,innobackupex需要以--copy-back選項啟動。
       innobackupex將會首先通過my.cnf檔案讀取如下變數:datadir, innodb_data_home_dir, innodb_data_file_path, innodb_log_group_home_dir,並確定這些目錄存在。
       接下來,此指令碼將會首先拷貝MyISAM表、索引檔案、其他類型的檔案(如:.frm, .MRG, .MYD, .MYI, .TRG, .TRN, .ARM, .ARZ, .CSM, .CSV, par and .opt files),接下來拷貝InnoDB表資料檔案,最後拷貝記錄檔。拷貝執行時將會保留檔案屬性,在使用備份檔案啟動MySQL前,可能需要變更檔的owener(如從拷貝檔案的user更改到mysql使用者)。
---------------------------------------------------------------------------------------------------------------------------------------------------

二、innobackupex針對mysql資料庫的備份環境部署

 


三、innobackupex使用總結

 

Mysql使用innobackupex線上備份方案(全量+增量)操作記錄

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.