溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何進(jìn)行MySQL管理基礎(chǔ)中的維護(hù)、備份和恢復(fù)

發(fā)布時間:2021-11-20 09:24:26 來源:億速云 閱讀:150 作者:柒染 欄目:MySQL數(shù)據(jù)庫

如何進(jìn)行MySQL管理基礎(chǔ)中的維護(hù)、備份和恢復(fù),很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

1.日志記錄

   MySQL的日志文件可用于分析性能和排查問題,保存在與數(shù)據(jù)文件相同的目錄下。有以下幾種不同類型日志文件:

日志文件類型        默認(rèn)文件名        mysqld選項        作用

錯誤日志        <主機名>.err        log-error        記錄服務(wù)器上發(fā)生的每個錯誤。
一般查詢?nèi)罩?       <主機名>.log        log            記錄客戶機發(fā)給服務(wù)器的每個查詢的蹤跡。
慢查詢?nèi)罩?       <主機名>-slow.log    log-slow-queries    記錄執(zhí)行時間超過long_query_time值的所有查詢。
二進(jìn)制日志        <主機名>-bin-######    log-bin            記錄更新了或已經(jīng)潛在更新了數(shù)據(jù)的所有語句。

注:log-bin選項中的“######”是二進(jìn)制日志文件的編號,每次生成新日志文件會自動增加。如果指定日志文件名,MySQL會只取第一個“.”前面的部分,并自動添加6位數(shù)字編號,從000001開始。

   可以使用FLUSH LOGS命令刷新日志,錯誤日志的內(nèi)容寫入相同路徑下的*.err-old文件,然后*.err文件被清空;一般查詢?nèi)罩竞吐樵內(nèi)罩局袝梢粭l包含mysqld信息和列標(biāo)題的記錄,將新舊記錄分割開;當(dāng)前的二進(jìn)制日志會被關(guān)閉,使用新的順序編號創(chuàng)建新日志。

[@more@]2.檢查和修理表

   檢查表可以使用myisamchk工具或CHECK TABLE命令,前者只能用于MYISAM表,后者適用于所有表。myisamchk可以分別使用-F、-m、-e、-C、-w選項執(zhí)行快速檢查、中速檢查、擴展檢查(最慢)、變更檢查、等待檢查,CHECK TABLE命令可以添加FAST、MEDIUM、EXTENDED等關(guān)鍵字來指定檢查的種類。
   檢查表時如果發(fā)現(xiàn)錯誤,就應(yīng)該對其進(jìn)行修理。最好先復(fù)制存在問題的表,以便嘗試不同的修理方法。myisamchk工具使用-r選項,可以修理損壞的表,與檢查表時相同,被修理的表不能被鎖定。另外,還可以使用-o、-q選項執(zhí)行不同類型的修理操作。還可以使用REPAIR TABLE命令對表進(jìn)行修復(fù),類似地,可以添加QUICK或EXTENDED關(guān)鍵字設(shè)置修理操作的類型。
   myiasmchk工具要求表不能被鎖定,所以最好在服務(wù)器關(guān)閉的情況下使用,而CHECK TABLE和REPAIR TABLE命令則必須在服務(wù)器運行時使用。
   此外,使用OPTIMIZE TABLE命令可以對表進(jìn)行優(yōu)化,整理數(shù)據(jù)文件碎片,對索引頁進(jìn)行排序,更新表的統(tǒng)計信息。需要注意的是,優(yōu)化操作會鎖定表,過程中客戶機無法訪問。


3.備份和恢復(fù)

   使用mysqldump工具可以對表或數(shù)據(jù)庫進(jìn)行備份。執(zhí)行備份操作的用戶應(yīng)在進(jìn)行轉(zhuǎn)儲的表或數(shù)據(jù)庫上具有select和lock tables權(quán)限。

mysql> show grants for ggyy@localhost;
+-------------------------------------------------------------------------------------------------------------+
| Grants for ggyy@localhost                                                                                   |
+-------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'ggyy'@'localhost' IDENTIFIED BY PASSWORD '*484FFAA42C12F40931C794D33A11B7F075B91467' |
| GRANT SELECT, LOCK TABLES ON `ggyy`.* TO 'ggyy'@'localhost'                                                 |
+-------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)


   下面是一些轉(zhuǎn)儲表的例子:

<1>轉(zhuǎn)儲ggyy數(shù)據(jù)庫中的blob_text_test表,將結(jié)果重定向到一個指定的文件。

mysqldump ggyy blob_text_test -u ggyy -p > E:ackupMySQLlob_text_test.sql

<2>轉(zhuǎn)儲ggyy數(shù)據(jù)庫中的char_test表,使結(jié)果直接輸出到一個指定的文件。( -r 選項用于在MSDOS環(huán)境中使輸出文件行尾只有換行符,而不是換行符+回車符。)

mysqldump ggyy char_test -u ggyy -p -r E:ackupMySQLchar_test.sql

<3>轉(zhuǎn)儲ggyy數(shù)據(jù)庫中的多個表,將結(jié)果重定向到一個指定的文件。

mysqldump ggyy date_time_test float_test int_test members members_temp test_crttb test_crttb2 test_crttb3 test_crttb4 test_crttb5 ts_dt_test -u ggyy -p > E:ackupMySQLggyy-tables.sql

<4>轉(zhuǎn)儲test數(shù)據(jù)庫中的namelist和oraleng表,只產(chǎn)生少量的輸出,將結(jié)果重定向到一個指定的文件。( --compact 選項使轉(zhuǎn)儲結(jié)果中不包含DROP TABLE、ALTER TABLE ... DISABLE KEYS、LOCK TABLES等語句和“--”開頭的注釋。)

mysqldump test namelist oraleng --compact -u root -p > E:ackupMySQL amelist+oraleng.sql

<5>只轉(zhuǎn)儲test數(shù)據(jù)庫中test表的定義,將結(jié)果重定向到一個指定的文件。

mysqldump test test -d -u root -p > E:ackupMySQL est_def.sql

<6>只轉(zhuǎn)儲test數(shù)據(jù)庫中test表的數(shù)據(jù),將結(jié)果重定向到一個指定的文件。

mysqldump test test -t -u root -p > E:ackupMySQL est_data.sql

   當(dāng)然還可以對整個數(shù)據(jù)庫進(jìn)行轉(zhuǎn)儲,語法是 mysqldump

。如果同時轉(zhuǎn)儲多個數(shù)據(jù)庫可以使用 -B 選項,例如轉(zhuǎn)儲ggyy和test數(shù)據(jù)庫:

mysqldump -B ggyy test -u root -p -r E:ackupMySQLmysqlback_20100319.sql

   mysqldump工具生成的包含SQL語句的文件,可以使用mysql命令行工具運行,從而達(dá)到恢復(fù)數(shù)據(jù)的目的。執(zhí)行恢復(fù)操作的用戶應(yīng)該在進(jìn)行導(dǎo)入的數(shù)據(jù)庫上具有drop、create、alter、insert等權(quán)限。

mysql> show grants for ggyy@localhost;
+-------------------------------------------------------------------------------------------------------------+
| Grants for ggyy@localhost                                                                                   |
+-------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'ggyy'@'localhost' IDENTIFIED BY PASSWORD '*484FFAA42C12F40931C794D33A11B7F075B91467' |
| GRANT SELECT, INSERT, CREATE, DROP, ALTER, LOCK TABLES ON `ggyy`.* TO 'ggyy'@'localhost'                    |
+-------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)


   下面的命令可以將之前轉(zhuǎn)儲的ggyy數(shù)據(jù)庫中的表導(dǎo)入到ggyy數(shù)據(jù)庫中:

mysql ggyy -u ggyy -p < E:ackupMySQLlob_text_test.sql

mysql ggyy -u ggyy -p < E:ackupMySQLchar_test.sql

mysql ggyy -u ggyy -p < E:ackupMySQLggyy-tables.sql

   另外,在mysql提示符下使用SOURCE命令同樣可以進(jìn)行恢復(fù)。下面的語句可以將之前轉(zhuǎn)儲的test數(shù)據(jù)庫中的表導(dǎo)入到test數(shù)據(jù)庫中:

source E:ackupMySQL amelist+oraleng.sql

source E:ackupMySQL est_def.sql

source E:ackupMySQL est_data.sql

undefinedundefinedundefinedundefinedundefinedundefined

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI