压在透明的玻璃上c-国产精品国产一级A片精品免费-国产精品视频网-成人黄网站18秘 免费看|www.tcsft.com

mysql數據庫修復

  有的時候因為停電或者其他原因導致數據庫損壞,我們可以使用mysql自帶的mysqlcheck命令來快速修復所有的數據庫或者特定的數據庫;

  接到監控系統進行報警,發現數據庫服務器死機,立刻重啟服務器,由于myqsql沒有正常關閉,導致在宕機是對數據庫中有操作的表損壞,需要進行修復數據表。

  1、通過xshell的ssh協議登錄mysql服務器。

  #ssh root@1.1.1.1 //回車,輸入密碼。

  2、登錄mysql

  #mysql -p //回車,輸入密碼。

  3、進入數據庫,檢測表是否損壞,并修復數據表。

  #use 數據庫名字。

  #check table 表名 。//檢測表數據是否損壞。

  #repair table 表名。//修復表數據。

  舉個例子,如何判斷表叔家是否損壞。

  數據表損壞

  +—————————+——-+———-+————————————————————-+

  | Table                                          | Op    | Msg_type | Msg_text                                                    |

  +—————————+——-+———-+————————————————————-+

  |test.123                                    | check | warning  | Table is marked as crashed                                  |

  |test.123                                    | check | warning  | 2 clients are using or haven’t closed the table properly    |

  |test.123                                    | check | warning  | Size of datafile is: 3424854016       Should be: 3424853036 |

  |test.123                                    | check | error       | Record at pos: 3382461400 is not remove-marked              |

  |test.123                                    | check | error       | record delete-link-chain corrupted                          |

  |test.123                                    | check | error       | Corrupt

  數據表未損壞

  +——————–+——-+———-+———-+

  | Table                            | Op     | Msg_type | Msg_text |

  +——————–+——-+———-+———-+

  |test.123          | check | status          | OK       |

  +——————–+——-+———-+———-+

  如果數據庫較多,表較多,這樣修復是非常耗時的,所以采用如下方法:

  1、通過xshell的ssh協議登錄mysql服務器。

  #ssh root@1.1.1.1 //回車,輸入密碼。

  2、檢測數據庫各個表的狀態。

  # mysqlcheck -a -o 數據庫名字 -p //回車輸入密碼,然后回車。

  如果有如下錯誤,進行表修復

  Test.123

  error    : Found key at page 821865472 that points to record outside datafile

  status   : Operation failed

  3、登錄mysql

  #mysql -p //回車,輸入密碼。

  4、進入數據庫,檢測表是否損壞,并修復數據表。

  #use 數據庫名字。

  #check table 表名 。//檢測表數據是否損壞。

  #repair table 表名。//修復表數據。

  PS:

  為了安全起見,以下兩種方法不建議在生產環境中使用

  #mysqlcheck -a -o -r -p //檢查優化并修復所有的數據庫

  #mysqlcheck -A -o -r 數據庫名稱 -p //修復指定的數據庫

  參數含意:

  -a = Analyse given tables. //分析數據表

  -c = Check table for errors //檢查數據庫中錯誤(損壞)的表

  -o = Optimise table //優化數據表

  -r = Can fix almost anything except unique keys that aren’t unique // 修復損壞的數據表

  -m = –medium-check //

  mysqlcheck說明:

  mysqlcheck客戶端可以檢查和修復MyISAM表。它還可以優化和分析表。

  mysqlcheck的功能類似myisamchk,但其工作不同。主要差別是當mysqld服務器在運行時必須使用mysqlcheck,而myisamchk應用于服務器沒有運行時。使用mysqlcheck的好處是不需要停止服務器來檢查或修復表。使用myisamchk修復失敗是不可逆的。

  Mysqlcheck為用戶提供了一種方便的使用SQL語句CHECK TABLE、REPAIR TABLE、ANALYZE TABLE和OPTIMIZE TABLE的方式。它確定在要執行的操作中使用使用哪個語句,然后將語句發送到要執行的服務器上。

 

上一篇:安卓防火墻 PS DroidWall

下一篇:mysql批量刪除指定前綴的表,批量修改表名的SQL語句