×

Mysql備份還有這么多套路,還不了解下?

分類:互聯(lián)網(wǎng)熱點(diǎn) 編輯:小新 瀏覽量:3
2020-07-20 13:33:06

 邏輯備份和物理備份 

邏輯備份 邏輯備份用于備份數(shù)據(jù)庫(kù)的結(jié)構(gòu)(CREAET DATABASE、CREATE TABLE)和數(shù)據(jù)(INSERT),這種備份類型適合數(shù)據(jù)量小、跨SQL服務(wù)器、需要修改數(shù)據(jù)等場(chǎng)景。如`mysqldump`命令就是產(chǎn)生一個(gè)邏輯備份工具,使用`mysqldump`輸出的文件包含`CREATE TABLE`和`INSERT`語(yǔ)句,能夠直接重建表內(nèi)容和表結(jié)構(gòu)。 使用邏輯備份有以下優(yōu)勢(shì)和劣勢(shì): 

優(yōu)勢(shì) * 可移植性高,SQL語(yǔ)句可直接適用于其他SQL服務(wù)器; * 在數(shù)據(jù)恢復(fù)之前可增加、修改數(shù)據(jù); * 數(shù)據(jù)恢復(fù)粒度小可以是服務(wù)器、數(shù)據(jù)庫(kù)、表級(jí)別; * 使用文本格式,可讀性高;

劣勢(shì) * 備份時(shí)需要訪問(wèn)mysql服務(wù)器,影響其他客戶端; * 需要將數(shù)據(jù)轉(zhuǎn)換成邏輯格式(SQL,CSV); * 如果命令運(yùn)行在客戶端,mysql服務(wù)器還需要將數(shù)據(jù)發(fā)送給客戶端; * 因?yàn)檩敵龈袷綖槲谋疚募?,占?a href="/tag/88" target="blank">空間較大; 

 物理備份 物理備份是包括存儲(chǔ)數(shù)據(jù)庫(kù)內(nèi)容的目錄和文件的副本,這種類型的備份適用于需要在出現(xiàn)問(wèn)題時(shí)快速恢復(fù)的大型重要數(shù)據(jù)庫(kù)。 

優(yōu)勢(shì) * 完整的Mysql文件和目錄備份,只需要復(fù)制文件不需要轉(zhuǎn)換,速度比邏輯備份更快; * 除了備份數(shù)據(jù),還能備份配置文件和日志文件; * 不需要運(yùn)行Mysql服務(wù)器就可以完成備份; * 備份工具簡(jiǎn)單使用cp、scp、tar命令即可完成備份; 

劣勢(shì) * 可移植性不高,恢復(fù)數(shù)據(jù)只適用于相同或類似的機(jī)器上; * 為了保持?jǐn)?shù)據(jù)庫(kù)文件的一致性,需要停機(jī)備份; * 恢復(fù)粒度不能按表或用戶恢復(fù); 

在線備份和離線備份 在線備份需要mysql服務(wù)器處理運(yùn)行狀態(tài),以便備份工具從mysql服務(wù)器中獲取數(shù)據(jù)。離線備份表示mysql服務(wù)器處理停止?fàn)顟B(tài)。兩種備份形式也可以稱為“熱備份”和“冷備份“。 

 在線備份的主要特性 * 備份不需要停機(jī),對(duì)其他客戶端影響較小其他連接能夠正常訪問(wèn)mysql服務(wù)器(依賴操作類型,如讀操作); * 備份需要加鎖,以免在備份期間對(duì)數(shù)據(jù)做出修改; 

 離線備份的主要特性 * 備份期間服務(wù)器不可用; * 備份過(guò)程更簡(jiǎn)單,不會(huì)受到客戶端的干擾; 

 邏輯備份(mysqldump使用) `mysqldump`屬于邏輯備份命令,使用`mysqldump`備份的優(yōu)勢(shì)是它非常方便和靈活,可以直接編輯輸出文件或者使用導(dǎo)入到其他的SQL服務(wù)器中去,但是它不能用作備份大量數(shù)據(jù)的快速解決方案,對(duì)于大數(shù)據(jù)量,即使備份花費(fèi)的時(shí)候可以接受,但是恢復(fù)數(shù)據(jù)也可能會(huì)非常緩慢,因?yàn)閳?zhí)執(zhí)行SQL語(yǔ)句會(huì)涉及磁盤(pán)I/O進(jìn)行插入,創(chuàng)建索引等。`mysqldump`的使用方式非常簡(jiǎn)單: ```shell shell> mysqldump db_name [tbl_name ...] shell> mysqldump --databases db_name ... shell> mysqldump --all-databases ``` 使用`mysqldump`備份時(shí)要注意:**數(shù)據(jù)庫(kù)的一致?tīng)顟B(tài),在執(zhí)行`mysqldump`命令時(shí)要保證數(shù)據(jù)不會(huì)再發(fā)生變更**,保持?jǐn)?shù)據(jù)的一致性有二種方法: * 使Mysql服務(wù)器只讀 * 使用事務(wù)加上隔離級(jí)別:`REPEATABLE READ ` 使用`REPEATABLE READ`事務(wù)隔離級(jí)別執(zhí)行`mysqldump`命令(使用事務(wù)保持?jǐn)?shù)據(jù)庫(kù)的一致?tīng)顟B(tài)): ```shell mysqldump --master-data=2 \ --flush-logs \ --single-transaction \ --all-databases > /backup/`date +%F-%H`-mysql-all.sql ``` 備份參數(shù)說(shuō)明: * --master-data: 將二進(jìn)制日志文件的名稱和位置備份 * --flush-logs: 開(kāi)始備份之前刷新mysql服務(wù)器日志文件 * --single-transaction:開(kāi)始備份之前設(shè)置事務(wù)隔離級(jí)別為**REPEATABLE READ**然后發(fā)送一個(gè)**START TRANSACTION**命令。 * --all-databases:備份所有數(shù)據(jù)庫(kù) ### 物理備份(復(fù)制原始文件) 為了保證復(fù)制文件的完整性,備份原始文件最好是**停止mysql服務(wù)器**,復(fù)制原始文件備份由以下步驟完成: 1. 停止mysql服務(wù)器 `$ mysqladmin shutdown` 2. 使用合適的工具復(fù)制原始數(shù)據(jù)文件 `$ tar cf /tmp/dbbackup.tar ./data` 3. 備份完成后,運(yùn)行mysql服務(wù)器 `$ mysqld_safe` 

使用主從備份模式 使用`mysqldump`和`tar`備份或多或少都會(huì)對(duì)業(yè)務(wù)產(chǎn)生影響,使用`mysqldump`備份需要對(duì)數(shù)據(jù)加鎖,加鎖就意味著其他客戶端操作受到限制。使用`tar`命令需要停止服務(wù)器直接導(dǎo)致數(shù)據(jù)庫(kù)服務(wù)器不可用,有沒(méi)有辦法能解決這兩種問(wèn)題呢?答案是有的,就是使用主從備份模式。 在單機(jī)的基礎(chǔ)上增加一臺(tái)Slave機(jī)器對(duì)Master機(jī)器的數(shù)據(jù)進(jìn)行同步: ![](https://user-gold-cdn.xitu.io/2019/11/20/16e88e37b5005cae?w=374&h=315&f=png&s=10551) 開(kāi)始備份時(shí)對(duì)Slave進(jìn)行備份,這樣即使Slave停機(jī)或?qū)?shù)據(jù)加鎖也不會(huì)影響業(yè)務(wù)的正常使用,如果公司有條件或業(yè)務(wù)非常重要可以選擇這種方案來(lái)備份數(shù)據(jù)。 歡迎關(guān)注微信公眾號(hào)《架構(gòu)文摘》,高質(zhì)量技術(shù)文章第一時(shí)間推送。


聲明:免責(zé)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),也不承認(rèn)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,請(qǐng)發(fā)

送郵件至:operations@xinnet.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)

需注明出處:新網(wǎng)idc知識(shí)百科

免費(fèi)咨詢獲取折扣

Loading