主頁(yè) > 教育培訓(xùn) > 電腦培訓(xùn) > mysql學(xué)習(xí)中常見問(wèn)題集錦解答技巧(3)

mysql學(xué)習(xí)中常見問(wèn)題集錦解答技巧(3)

  在一個(gè)應(yīng)用程序中,應(yīng)該決不基于他們的位置使用SELECT * 檢索列,因?yàn)楸环祷氐牧械捻樞蛴肋h(yuǎn)不能保證;對(duì)數(shù)據(jù)庫(kù)的一個(gè)簡(jiǎn)單改變可能導(dǎo)致應(yīng)用程序相當(dāng)有戲劇性地失敗。

  可以使用如下方法改變:

  以正確的列順序創(chuàng)建一張新表。

  執(zhí)行INSERT INTO new_table SELECT fields-in-new_table-order FROM old_table.

  刪除或改名old_table。

  ALTER TABLE new_table RENAME old_table。

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

  MySQL(至今)沒有數(shù)據(jù)庫(kù)復(fù)制,但是有一些如何實(shí)現(xiàn)的信息。

  復(fù)制一個(gè)數(shù)據(jù)庫(kù)最一般的方法是使用更新日志。

  數(shù)據(jù)庫(kù)備份

  為了得到一個(gè)一致的備份,在相關(guān)的表上做一個(gè)LOCK TABLES。你只需一個(gè)讀鎖定;當(dāng)你在數(shù)據(jù)庫(kù)目錄中做文件的一個(gè)拷貝時(shí),這允許其他線程繼續(xù)查詢?cè)摫?。如果你想要做一個(gè)SQL級(jí)的備份,你可以SELECT INTO OUTFILE。

  備份一個(gè)數(shù)據(jù)庫(kù)的另一個(gè)方法是使用mysqldump程序:

  為你的數(shù)據(jù)庫(kù)做一個(gè)完整的備份:

  shell> mysqldump --tab=/path/to/some/dir --opt --full

  你也可以簡(jiǎn)單地拷貝所有的表文件(“*.frm”、“*.MYD”和“*.MYI”文件),只要服務(wù)器不在更新任何東西。

  停止mysqld如果它正在運(yùn)行,然后以--log-update選項(xiàng)啟動(dòng)它。你將得到一個(gè)名為“hostname.n”形式的日志文件, 這里n是隨著你每次執(zhí)行mysqladmin refresh或mysqladmin flush-logs、FLUSH LOGS語(yǔ)句、或重啟服務(wù)器而遞增的一個(gè)數(shù)字。這些日志文件向你提供了在你執(zhí)行mysqldump處后面進(jìn)行的復(fù)制數(shù)據(jù)庫(kù)改變的所需信息。

  如果你必須恢復(fù)一些東西,嘗試首先用myisamchk -r恢復(fù)你的表。這應(yīng)該處理所有情況的99.9%。如果myisamchk失敗,嘗試下列過(guò)程:

  恢復(fù)原來(lái)的mysqldump備份。

  執(zhí)行下列命令以再次運(yùn)行更新日志中的更改:

  shell> ls -1 -t -r hostname.[0-9]* | xargs cat | mysql

  ls被用來(lái)以正確的順序得到所有的日志文件。

  你也可以與SELECT * INTO OUTFILE 'file_name' FROM tbl_name做有選擇的備份并且用LOAD DATA INFILE 'file_name' REPLACE ...恢復(fù)。為了避免重復(fù)記錄,在表中你需要一個(gè)PRIMARY KEY或UNIQUE鍵。當(dāng)在唯一鍵值上一個(gè)新記錄與一個(gè)老記錄重復(fù)時(shí),REPLACE關(guān)鍵詞使得老記錄用一個(gè)新記錄替代。

免責(zé)聲明:該文觀點(diǎn)僅代表作者本人,查查吧平臺(tái)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)空間服務(wù),不承擔(dān)相關(guān)法律責(zé)任。圖片涉及侵權(quán)行為,請(qǐng)發(fā)送郵件至85868317@qq.com舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。返回查查吧首頁(yè),查看更多>>
提示

該文觀點(diǎn)僅代表作者本人,查查吧平臺(tái)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)空間服務(wù),不承擔(dān)相關(guān)法律責(zé)任。圖片涉及侵權(quán)行為,請(qǐng)發(fā)送郵件至85868317@qq.com舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。

優(yōu)惠商城

更多