国产精品无码一区二区三区太,亚洲一线产区二线产区区别,欧美A区,人妻jealousvue人妻

×

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

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

 邏輯備份和物理備份 

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

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

劣勢 * 備份時需要訪問mysql服務(wù)器,影響其他客戶端; * 需要將數(shù)據(jù)轉(zhuǎn)換成邏輯格式(SQL,CSV); * 如果命令運行在客戶端,mysql服務(wù)器還需要將數(shù)據(jù)發(fā)送給客戶端; * 因為輸出格式為文本文件,占用空間較大; 

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

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

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

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

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

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

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

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


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

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

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

免費咨詢獲取折扣

Loading