在一個應用程序中,應該決不基于他們的位置使用SELECT * 檢索列,因為被返回的列的順序永遠不能保證;對數(shù)據庫的一個簡單改變可能導致應用程序相當有戲劇性地失敗。
可以使用如下方法改變:
以正確的列順序創(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ù)據庫復制
MySQL(至今)沒有數(shù)據庫復制,但是有一些如何實現(xiàn)的信息。
復制一個數(shù)據庫最一般的方法是使用更新日志。
數(shù)據庫備份
為了得到一個一致的備份,在相關的表上做一個LOCK TABLES。你只需一個讀鎖定;當你在數(shù)據庫目錄中做文件的一個拷貝時,這允許其他線程繼續(xù)查詢該表。如果你想要做一個SQL級的備份,你可以SELECT INTO OUTFILE。
備份一個數(shù)據庫的另一個方法是使用mysqldump程序:
為你的數(shù)據庫做一個完整的備份:
shell> mysqldump --tab=/path/to/some/dir --opt --full
你也可以簡單地拷貝所有的表文件(“*.frm”、“*.MYD”和“*.MYI”文件),只要服務器不在更新任何東西。
停止mysqld如果它正在運行,然后以--log-update選項啟動它。你將得到一個名為“hostname.n”形式的日志文件, 這里n是隨著你每次執(zhí)行mysqladmin refresh或mysqladmin flush-logs、FLUSH LOGS語句、或重啟服務器而遞增的一個數(shù)字。這些日志文件向你提供了在你執(zhí)行mysqldump處后面進行的復制數(shù)據庫改變的所需信息。
如果你必須恢復一些東西,嘗試首先用myisamchk -r恢復你的表。這應該處理所有情況的99.9%。如果myisamchk失敗,嘗試下列過程:
恢復原來的mysqldump備份。
執(zhí)行下列命令以再次運行更新日志中的更改:
shell> ls -1 -t -r hostname.[0-9]* | xargs cat | mysql
ls被用來以正確的順序得到所有的日志文件。
你也可以與SELECT * INTO OUTFILE 'file_name' FROM tbl_name做有選擇的備份并且用LOAD DATA INFILE 'file_name' REPLACE ...恢復。為了避免重復記錄,在表中你需要一個PRIMARY KEY或UNIQUE鍵。當在唯一鍵值上一個新記錄與一個老記錄重復時,REPLACE關鍵詞使得老記錄用一個新記錄替代。
2021-07-09
2021-07-08
2021-07-08
2021-07-08
2021-07-08
2021-07-08
2021-07-07
2021-07-07
2021-07-07
2021-07-07
2021-07-07
2021-07-06
2021-07-06
2021-07-06
工作態(tài)度怎么寫 具有穩(wěn)定的工作心態(tài)
2021-07-06
該文觀點僅代表作者本人,查查吧平臺系信息發(fā)布平臺,僅提供信息存儲空間服務,不承擔相關法律責任。圖片涉及侵權行為,請發(fā)送郵件至85868317@qq.com舉報,一經查實,本站將立刻刪除。