国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

MySQL數(shù)據(jù)庫備份(4)

2024-07-24 12:55:07
字體:
供稿:網(wǎng)友
數(shù)據(jù)庫損壞的發(fā)生有很多原因,程度也不同。如果你走運(yùn),你可能僅損壞一兩個(gè)表(如掉電),如果你倒霉,你可能必須替換整個(gè)數(shù)據(jù)目錄(如磁盤損壞)。在某些情況下也需要恢復(fù),比如用戶錯(cuò)誤地刪除了數(shù)據(jù)庫或表。不管這些倒霉事件的原因,你將需要實(shí)施某種恢復(fù)。

  如果表損壞但沒丟失,嘗試用myisamchk或isamchk修復(fù)它們,如果這樣的損壞可有修復(fù)程序修復(fù),你可能根本不需要使用備份文件。關(guān)于表修復(fù)的過程,見《數(shù)據(jù)庫維護(hù)與修復(fù)》。

  恢復(fù)過程涉及兩種信息源:你的備份文件和個(gè)更新日志。備份文件將表恢復(fù)到實(shí)施備份時(shí)的狀態(tài),然而一般表在備份與發(fā)生問題之間的時(shí)間內(nèi)已經(jīng)被修改,更新日志包含了用于進(jìn)行這些修改的查詢。你可以使用日志文件作為mysql的輸入來重復(fù)查詢。這已正是為什么要啟用更新日志的原因。

  恢復(fù)過程視你必須恢復(fù)的信息多少而不同。實(shí)際上,恢復(fù)整個(gè)數(shù)據(jù)庫比單個(gè)表跟容易,因?yàn)閷?duì)于數(shù)據(jù)庫運(yùn)用更新日志比單個(gè)表容易。

4.1 恢復(fù)整個(gè)數(shù)據(jù)庫

  首先,如果你想恢復(fù)的數(shù)據(jù)庫是包含授權(quán)表的mysql數(shù)據(jù)庫,你需要用--skip-grant-table選項(xiàng)運(yùn)行服務(wù)器。否則,它會(huì)抱怨不能找到授權(quán)表。在你已經(jīng)恢復(fù)表后,執(zhí)行mysqladmin flush-privileges告訴服務(wù)器裝載授權(quán)標(biāo)并使用它們。

  將數(shù)據(jù)庫目錄內(nèi)容拷貝到其它某個(gè)地方,如果你在以后需要它們。

  用最新的備份文件重裝數(shù)據(jù)庫。如果你用mysqldump產(chǎn)生的文件,將它作為mysql的輸入。如果你用直接從數(shù)據(jù)庫拷貝來的文件,將它們直接拷回?cái)?shù)據(jù)庫目錄,然而,此時(shí)你需要在拷貝文件之前關(guān)閉數(shù)據(jù)庫,然后重啟它。

  使用更新日志重復(fù)做備份以后的修改數(shù)據(jù)庫表的查詢。對(duì)于任何可適用的更新日志,將它們作為mysql的輸入。指定--one-database選項(xiàng)使得mysql只執(zhí)行你有興趣恢復(fù)的數(shù)據(jù)庫的查詢。如果你知道你需要運(yùn)用所有更新日志文件,你可以在包含日志的目錄下使用這條命令:

% ls -t -r -1 update.[0-9]* | xargs cat | mysql --one-database db_name

  ls命令生成更新日志文件的一個(gè)單列列表,根據(jù)服務(wù)器產(chǎn)生它們的次序排序(主意:如果你修改任何一個(gè)文件,你將改變排序次序,這導(dǎo)致更新日志一錯(cuò)誤的次序被運(yùn)用。)

  很可能你會(huì)是運(yùn)用某幾個(gè)更新日志。例如,自從你備份以來產(chǎn)生的更新日志被命名為update.392、update.393等等,你可以這樣重新運(yùn)行:

%mysql --one-database db_name < update.392
%mysql --one-database db_name < update.393
.....


  如果你正在實(shí)施恢復(fù)且使用更新日志恢復(fù)由于一個(gè)錯(cuò)誤建議的drop database、drop table或delete語句造成丟失的信息,在運(yùn)用更新日志之前,要保證從其中刪除這些語句。

4.2 恢復(fù)單個(gè)表

  恢復(fù)單個(gè)表較為復(fù)雜。如果你用一個(gè)由mysqldump生成的備份文件,并且它不包含你感興趣的表的數(shù)據(jù),你需要從相關(guān)行中提取它們并將它們用作mysql的輸入。這是容易的部分。難的部分是從只運(yùn)用于該表的更新日志中拉出片斷。你會(huì)發(fā)覺mysql_find_rows實(shí)用程序?qū)Υ撕苡袔椭鼜母氯罩局刑崛《嘈胁樵儭?

  另一個(gè)可能性是使用另一臺(tái)服務(wù)器恢復(fù)整個(gè)數(shù)據(jù)庫,然后拷貝你想要的表文件到原數(shù)據(jù)庫中。這可能真的很容易!當(dāng)你將文件拷回?cái)?shù)據(jù)庫目錄時(shí),要確保原數(shù)據(jù)庫的服務(wù)器關(guān)閉。



發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 大方县| 扎赉特旗| 缙云县| 镇平县| 溆浦县| 巩留县| 西畴县| 上犹县| 商都县| 措美县| 昌吉市| 南城县| 石家庄市| 泉州市| 平邑县| 七台河市| 常山县| 长汀县| 阳原县| 扎囊县| 双江| 百色市| 定南县| 天柱县| 镇沅| 石家庄市| 驻马店市| 乌拉特前旗| 资阳市| 芮城县| 东至县| 莱阳市| 绥芬河市| 白城市| 和林格尔县| 邯郸市| 衡东县| 乌兰察布市| 灌阳县| 当雄县| 延寿县|