亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來(lái)到思海網(wǎng)絡(luò),我們將竭誠(chéng)為您提供優(yōu)質(zhì)的服務(wù)! 誠(chéng)征網(wǎng)絡(luò)推廣 | 網(wǎng)站備案 | 幫助中心 | 軟件下載 | 購(gòu)買(mǎi)流程 | 付款方式 | 聯(lián)系我們 [ 會(huì)員登錄/注冊(cè) ]
促銷(xiāo)推廣
客服中心
業(yè)務(wù)咨詢(xún)
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352289
點(diǎn)擊這里給我發(fā)消息  81721488
有事點(diǎn)擊這里…  376585780
有事點(diǎn)擊這里…  872642803
有事點(diǎn)擊這里…  459248018
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  380791050
技術(shù)支持
有事點(diǎn)擊這里…  714236853
有事點(diǎn)擊這里…  719304487
有事點(diǎn)擊這里…  1208894568
有事點(diǎn)擊這里…  61352289
在線(xiàn)客服
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  983054746
有事點(diǎn)擊這里…  893984210
當(dāng)前位置:首頁(yè) >> 技術(shù)文章 >> 文章瀏覽
技術(shù)文章

備份和拷貝MYSQL數(shù)據(jù)庫(kù)

添加時(shí)間:2012-12-21 21:01:31  添加: 思海網(wǎng)絡(luò) 

  重要的是在表丟失和毀壞時(shí)備份數(shù)據(jù)庫(kù)。如果系統(tǒng)發(fā)生崩潰,您就能夠?qū)⒈砘謴?fù)到崩潰時(shí)刻的狀態(tài),并盡可能不丟失數(shù)據(jù)。同樣,錯(cuò)發(fā)DROP DATABASE 或DROP TABLE 命令的用戶(hù)可能會(huì)向您請(qǐng)求進(jìn)行數(shù)據(jù)恢復(fù)。有時(shí),這是由MySQL管理員引起的破壞,管理員試圖通過(guò)使用像vi 或emacs 這樣的編輯器直接編輯表文件而毀壞了它們。這樣做對(duì)表來(lái)說(shuō)肯定是干了壞事。
    備份數(shù)據(jù)庫(kù)的兩種主要方法是使用mysqldump 程序或直接拷貝數(shù)據(jù)庫(kù)文件(如便用c p、tar 或c p i o)。每種方法都有自己的優(yōu)點(diǎn)和缺點(diǎn):
    mysqldump 與MySQL服務(wù)器聯(lián)合進(jìn)行操作。直接拷貝方法與服務(wù)器相脫離,因此必須采取措施確保在進(jìn)行拷貝時(shí)沒(méi)有客戶(hù)機(jī)在修改這些表。這個(gè)問(wèn)題與利用文件系統(tǒng)備份來(lái)備份數(shù)據(jù)庫(kù)的問(wèn)題相同:如果數(shù)據(jù)庫(kù)表在文件系統(tǒng)備份時(shí)進(jìn)行更新,則進(jìn)行備份的表文件處于非一致的狀態(tài),并且對(duì)于今后恢復(fù)該表沒(méi)有意義。文件系統(tǒng)備份和直接拷貝文件的區(qū)別是:對(duì)于后者,您具有控制備份進(jìn)度的權(quán)利,因此可以采取措施確保服務(wù)器使表處于靜止?fàn)顟B(tài)。
    mysqldump 比直接拷貝技術(shù)要慢。
    mysqldump 產(chǎn)生可移植到其他機(jī)器、甚至具有不同硬件結(jié)構(gòu)的機(jī)器上的文本文件。直接拷貝文件不能夠移植到其他機(jī)器上,除非要拷貝的表使用MyISAM 存儲(chǔ)格式。ISAM 表只能在具有相同硬件結(jié)構(gòu)的機(jī)器之間進(jìn)行拷貝。例如,將文件從S PARC 的Solaris 機(jī)器拷貝到Intel 的Solaris 機(jī)器(或者相反)是行不通的。由MySQL3.23 引進(jìn)的MyISAM 表存儲(chǔ)格式可以解決這個(gè)問(wèn)題,因?yàn)樵摳袷脚c機(jī)器獨(dú)立。因此,如果以下兩個(gè)條件都滿(mǎn)足的話(huà),直接拷貝文件可以移植到具有不同硬件結(jié)構(gòu)的機(jī)器上:即另一臺(tái)機(jī)器上也必須運(yùn)行MySQL3.23 以上的版本,并且文件必須表示成MyISAM 表,而不是ISAM 表。
    不論選擇哪種備份方法,都有某些原則,您必須堅(jiān)持這些原則,才能確保在需要恢復(fù)數(shù)據(jù)庫(kù)內(nèi)容時(shí)得到最好的結(jié)果:
    定期執(zhí)行備份。設(shè)置一個(gè)時(shí)間表并堅(jiān)持使用它。
    告訴服務(wù)器運(yùn)行更新日志。更新日志在您需要恢復(fù)崩潰后的數(shù)據(jù)庫(kù)時(shí)給予幫助。在使用備份文件將數(shù)據(jù)庫(kù)恢復(fù)到備份時(shí)刻的狀態(tài)后,可以通過(guò)運(yùn)行更新日志中的查詢(xún),重新運(yùn)行備份之后所做的改變。這個(gè)操作將數(shù)據(jù)庫(kù)中的表恢吹攪吮覽J笨痰淖刺T諼募低潮阜縈镅災(zāi)校菘獗阜菸募硎就耆ⅲ?full dump),而更新日志則表示增量轉(zhuǎn)儲(chǔ)。
    使用一致和可理解的備份文件命名模式。像b a c k up 1、backup2 等名字沒(méi)有特殊的含義。當(dāng)需要它執(zhí)行恢復(fù)時(shí),還得浪費(fèi)時(shí)間去查看文件中的內(nèi)容。您會(huì)發(fā)現(xiàn)使用數(shù)據(jù)庫(kù)名和花時(shí)間去構(gòu)造備份文件名是有好處的。例如:
    % mysqldump samp_db> /usr/archives/mysql/samp_db. 1999-10-02
    % mysqldump menagerie> /usr/archives/mysql/menagerie.1999-10-02
    在產(chǎn)生備份文件后您可能需要將它們壓縮。畢竟備份文件都比較大,所以您可能還需要終止備份文件以避免它們填滿(mǎn)磁盤(pán),這與終止日志文件類(lèi)似。您可以用相同的技術(shù)終止備份文件:
    用文件系統(tǒng)備份來(lái)備份您的備份文件。如果您遭受了一個(gè)完全崩潰,不僅毀壞了數(shù)據(jù)目錄而且還破壞了包含數(shù)據(jù)庫(kù)備份的磁盤(pán)驅(qū)動(dòng)器,那將造成真正的麻煩。您還應(yīng)該備份更新日志。
    將備份文件放在與您的數(shù)據(jù)庫(kù)不同的文件系統(tǒng)上。這將減少含有數(shù)據(jù)字典的文件系統(tǒng)被生成的備份文件填滿(mǎn)的可能性。
    創(chuàng)建備份的技術(shù)對(duì)于將數(shù)據(jù)庫(kù)拷貝到另一個(gè)服務(wù)器上也是很有幫助的。將數(shù)據(jù)庫(kù)轉(zhuǎn)移到運(yùn)行在另一個(gè)主機(jī)上的服務(wù)器是很平常的,但您還可以將數(shù)據(jù)轉(zhuǎn)移到運(yùn)行在相同主機(jī)上的另一個(gè)服務(wù)器。如果正為一個(gè)新版本的MySQL運(yùn)行服務(wù)器,并且想用成品服務(wù)器上的某些真實(shí)數(shù)據(jù)來(lái)測(cè)試它時(shí),可能會(huì)這樣做。還有一種可能,那就是您得到了一臺(tái)新的機(jī)器并要將所有的數(shù)據(jù)庫(kù)移動(dòng)到新機(jī)器上。

用mysqldump 備份和拷貝數(shù)據(jù)庫(kù)

    當(dāng)使用mysqldump 程序產(chǎn)生數(shù)據(jù)庫(kù)備份文件時(shí),缺省設(shè)置是該文件的內(nèi)容由C R E AT E TABLE 語(yǔ)句組成,這些語(yǔ)句創(chuàng)建被轉(zhuǎn)儲(chǔ)的表以及包含表中的行數(shù)據(jù)的INSERT 語(yǔ)句。換句話(huà)說(shuō),mysqldump 創(chuàng)建在今后可作為對(duì)mysql的輸入使用的輸出結(jié)果,以重建數(shù)據(jù)庫(kù)。
    可以將整個(gè)數(shù)據(jù)庫(kù)按以下命令轉(zhuǎn)儲(chǔ)到單獨(dú)的文本文件中:

    該文件的其余部分由更多的INSERT 和CREATE TABLE 語(yǔ)句組成。
    如果想在生成備份時(shí)進(jìn)行壓縮,可替換成類(lèi)似下列的命令:
    % mysqldump samp_db | gzip > /usr/archives/mysql/samp_db.1999.10.02.gz
    如果您有一個(gè)超大數(shù)據(jù)庫(kù),則該輸出文件也將是極大的且管理起來(lái)很困難。如果您喜歡的話(huà),可以通過(guò)在mysqldump 命令的數(shù)據(jù)庫(kù)名之后命名單個(gè)的表來(lái)轉(zhuǎn)儲(chǔ)這些表的內(nèi)容。這個(gè)操作將該轉(zhuǎn)儲(chǔ)文件分成更小的、更多的可管理的文件。下面的例子將說(shuō)明如何將samp_db 的
一些表轉(zhuǎn)儲(chǔ)到單個(gè)文件中:
    % mysqldump samp_db student score event absence > gradebook.sql
    % mysqldump samp_db member president > hist-league.sql
    如果您正在生成備份文件并打算用這些備份文件來(lái)定期刷新另一個(gè)數(shù)據(jù)庫(kù)的內(nèi)容,則可能要使用--add-drop-table 選項(xiàng)。此選項(xiàng)告訴mysqldump 將DROP TABLE IF EXISTS 語(yǔ)句寫(xiě)到備份文件中。然后,當(dāng)您取出該備份文件并將其加載到第二個(gè)數(shù)據(jù)庫(kù)時(shí),如果表已經(jīng)存在將不會(huì)出現(xiàn)錯(cuò)誤信息。如果您正在運(yùn)行第二個(gè)數(shù)據(jù)庫(kù),可使用此技術(shù)利用從第一個(gè)數(shù)據(jù)庫(kù)中的數(shù)據(jù)拷貝來(lái)定期地加載它。
    如果您正在轉(zhuǎn)儲(chǔ)數(shù)據(jù)庫(kù)使該數(shù)據(jù)庫(kù)可以轉(zhuǎn)換到另一個(gè)服務(wù)器上,則無(wú)須創(chuàng)建備份文件。應(yīng)確保該數(shù)據(jù)庫(kù)存在于另一臺(tái)主機(jī)上,然后用一個(gè)管道使mysql直接讀取mysqldump 的輸出結(jié)果來(lái)轉(zhuǎn)儲(chǔ)數(shù)據(jù)庫(kù)。例如,如果想要將samp_db 數(shù)據(jù)庫(kù)從p i t _ v i per.snake.net 拷貝到b o a . s n a k e . n e t,操作如下:
    % mysqladmin -h boa.snake.netcreate samp_db
    % mysqldump samp_db | mysql-h boa.snake.net samp_db
    稍后,如果想要在boa.snake.net 中再次刷新該數(shù)據(jù)庫(kù),可跳過(guò)mysqladmin 命令,但要將--add-drop-table 增加到mysqldump 中,以避免得到有關(guān)“表已經(jīng)存在”的錯(cuò)誤:
    % mysqldump --add-drop-table samp_db | mysql-h boa-snake.net samp_db
    mysqldump 的其他選項(xiàng)包括如下所示的幾個(gè):
    --flush-log 和--lock-tables 的結(jié)合有助于檢查數(shù)據(jù)庫(kù)。--lock-table 鎖定所有正在轉(zhuǎn)儲(chǔ)的表,而--flush-log 關(guān)閉并重新打開(kāi)更新日志文件。如果正在產(chǎn)生后續(xù)的更新日志,則新的更新日志將只包含從備份的那一點(diǎn)開(kāi)始修改數(shù)據(jù)庫(kù)的查詢(xún)。這時(shí)檢查對(duì)于該備份
時(shí)間的更新日志的檢查點(diǎn)(然而,鎖定所有的表對(duì)于備份期間客戶(hù)機(jī)訪問(wèn)來(lái)說(shuō)不太好,如果您有需要執(zhí)行更新操作的客戶(hù)機(jī)的話(huà))。
    如果用--flush-logs 檢查對(duì)于備份時(shí)間的更新日志檢查點(diǎn),最好轉(zhuǎn)儲(chǔ)整個(gè)數(shù)據(jù)庫(kù)。如果轉(zhuǎn)儲(chǔ)單個(gè)文件,則將更新日志的檢查點(diǎn)與備份文件同步是比較難的。在恢復(fù)操作中,您通常在總數(shù)據(jù)庫(kù)( per- d a t a b a s e)的基礎(chǔ)上抽取更新日志的內(nèi)容。對(duì)于抽取單個(gè)表的更新日志來(lái)說(shuō)沒(méi)有選項(xiàng),因此您必須自己抽取它們。
    缺省設(shè)置時(shí),mysqldump 將表的全部?jī)?nèi)容在寫(xiě)之前讀到內(nèi)存中。這實(shí)際上不是必須的,事實(shí)上,如果您真的有大型表的話(huà),這幾乎是一個(gè)失敗的方法。可以用--quick 選項(xiàng)告訴mysqldump 寫(xiě)每一行(只要是被檢索的)。要想進(jìn)一步優(yōu)化該轉(zhuǎn)儲(chǔ)過(guò)程,可用- - o p t
來(lái)代替- - q ui c k。-- opt 選項(xiàng)開(kāi)啟其他的選項(xiàng),這些選項(xiàng)將加快轉(zhuǎn)儲(chǔ)數(shù)據(jù)和讀回?cái)?shù)據(jù)的速度。
    由于快速備份的好處,使得用--opt 執(zhí)行備份成為最常用的方法。但是,要當(dāng)心, - - o p t 選項(xiàng)有一個(gè)代價(jià): --opt 所優(yōu)化的是您的備份過(guò)程,而不是由其他客戶(hù)機(jī)對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)。--opt 選項(xiàng)可防止任何人更新被鎖定的正在轉(zhuǎn)儲(chǔ)的任何表。您會(huì)很容易地發(fā)現(xiàn)在常
規(guī)數(shù)據(jù)庫(kù)訪問(wèn)中在這一點(diǎn)上所做的努力。試著在一天中數(shù)據(jù)庫(kù)通常最繁忙的時(shí)刻運(yùn)行一個(gè)備份。這不會(huì)花費(fèi)太多的時(shí)間。
    與--opt 作用有點(diǎn)相反的選項(xiàng)是- d e l a y e d。該選項(xiàng)導(dǎo)致mysqldump 寫(xiě)INSERT D E L AYED 語(yǔ)句而非INSERT 語(yǔ)句。如果您將一個(gè)數(shù)據(jù)文件加載到另一個(gè)數(shù)據(jù)庫(kù)中并且想要使該操作對(duì)其他查詢(xún)(這些查詢(xún)可能正在數(shù)據(jù)庫(kù)中發(fā)生)造成的影響最小,則- -
d e l a y e d將有助于達(dá)到這個(gè)目的。
    --compress 選項(xiàng)有助于將數(shù)據(jù)庫(kù)拷貝到另一臺(tái)機(jī)器上,因?yàn)樗梢詼p少網(wǎng)絡(luò)傳輸中的字節(jié)數(shù)量。這里有一個(gè)例子,請(qǐng)注意,為了使程序與遠(yuǎn)程主機(jī)上的服務(wù)器進(jìn)行通信(而不是與本地主機(jī)通信),給出了--compress 選項(xiàng):
    % mysqldump --opt samp_db | mysql--compress -h boa.snake.net samp_db
    mysqldump 有許多選項(xiàng),詳細(xì)信息請(qǐng)參考附錄E。

使用直接拷貝數(shù)據(jù)庫(kù)備份和拷貝方法

    不用mysqldump 來(lái)備份數(shù)據(jù)庫(kù)或表的另一種方法是直接拷貝表文件。通常可利用像c p、tar 或cpio 這樣的實(shí)用程序來(lái)進(jìn)行。本節(jié)的例子使用的是c p。
    當(dāng)使用直接拷貝備份( direct-copy backup)方法時(shí),必須確保沒(méi)有使用這些表。如果在拷貝一個(gè)表的同時(shí)服務(wù)器正在修改它,則拷貝無(wú)效。
    確保拷貝完整性的最好方法是關(guān)閉服務(wù)器,拷貝文件,然后重新啟動(dòng)服務(wù)器。如果不想關(guān)閉服務(wù)器,則應(yīng)參考第13 章,查閱有關(guān)在執(zhí)行表檢查點(diǎn)時(shí)鎖定服務(wù)器的介紹。如果服務(wù)器在運(yùn)行中,則相同的約束都適用于拷貝文件,您應(yīng)該用同樣的鎖定協(xié)議使服務(wù)器保持靜止?fàn)顟B(tài)。
    假定服務(wù)器關(guān)閉,或者已經(jīng)鎖定了想要拷貝的表,下面的例子將說(shuō)明怎樣將整個(gè)samp_db 數(shù)據(jù)庫(kù)備份到備份目錄中( DATADIR 代表服務(wù)器的數(shù)據(jù)目錄):
    % cd DATADIR
    % cp -r samp_db /usr/archive/mysql    單個(gè)表可按如下進(jìn)行拷貝:
    % cd DATADIR/samp_db
    % cd member.* /usr/archive/mysql/samp_db
    % cd score.* /usr/archive/mysql/samp_db
    ...
    當(dāng)完成備份時(shí),可以重新啟動(dòng)服務(wù)器(如果已使它關(guān)閉),或者釋放在表上施加的鎖(如果保持服務(wù)器運(yùn)行)。
    要想用直接拷貝文件將數(shù)據(jù)庫(kù)從一臺(tái)機(jī)器拷貝到另一臺(tái)機(jī)器,只要將這些文件拷貝到另一臺(tái)服務(wù)器主機(jī)上的相應(yīng)數(shù)據(jù)庫(kù)上即可。應(yīng)確保這些文件是對(duì)MyISAM 表的或者兩臺(tái)機(jī)器都有相同的硬件結(jié)構(gòu)。否則這些表在第二個(gè)主機(jī)上看起來(lái)好象有很奇怪的內(nèi)容。還應(yīng)該確保第
二臺(tái)主機(jī)的服務(wù)器不會(huì)在您安裝這些表時(shí)去訪問(wèn)它們。

復(fù)制數(shù)據(jù)庫(kù)

    術(shù)語(yǔ)“復(fù)制”的含義簡(jiǎn)單地說(shuō)有點(diǎn)像“拷貝數(shù)據(jù)庫(kù)到另一個(gè)服務(wù)器”,或者是包含在主數(shù)據(jù)庫(kù)的內(nèi)容發(fā)生變化時(shí)次數(shù)據(jù)庫(kù)的有效更新( live updating)的含義。如果想簡(jiǎn)單地將數(shù)據(jù)庫(kù)拷貝到另一個(gè)服務(wù)器上,則可以使用在前面已經(jīng)討論的那些命令。自MySQL3.23 版本以來(lái),就已經(jīng)開(kāi)始出現(xiàn)對(duì)基于有效更新的復(fù)制的支持。但它的功能仍未成熟,因此,在這方面筆者沒(méi)有什么可討論的,如果有興趣,您可以注意一下當(dāng)前的新版本,看看有些什么新的開(kāi)發(fā)功能。

關(guān)鍵字:MYSQL、數(shù)據(jù)庫(kù)、服務(wù)器

分享到:

頂部 】 【 關(guān)閉
版權(quán)所有:佛山思海電腦網(wǎng)絡(luò)有限公司 ©1998-2024 All Rights Reserved.
聯(lián)系電話(huà):(0757)22630313、22633833
中華人民共和國(guó)增值電信業(yè)務(wù)經(jīng)營(yíng)許可證: 粵B1.B2-20030321 備案號(hào):粵B2-20030321-1
網(wǎng)站公安備案編號(hào):44060602000007 交互式欄目專(zhuān)項(xiàng)備案編號(hào):200303DD003  
察察 工商 網(wǎng)安 舉報(bào)有獎(jiǎng)  警警  手機(jī)打開(kāi)網(wǎng)站