MySQLデータベーステーブル修復MyISAM

3234 ワード

一:MySQLにおけるMyISAM表の破損原因の総括:
1、サーバーが突然停電してデータファイルが破損した;強制的にシャットダウンし、mysqlサービスを先にシャットダウンしなかった.mysqldプロセスはテーブルを書くときに殺されます.2、ディスクが破損している.3、サーバーがハングアップした.4、mysql自体のバグ.
二:MySQLにおけるMyISAM表破損の症状まとめ:
1、データの照会時報にエラーが発生しました:Incorrect key file for table:'.....Try to repair it 2、クエリはテーブルにローを見つけたり、不完全なデータを返したりすることはできません.3 、Error: Table '...' is marked as crashed and should be repaired . 4、テーブルを開けませんでした:Can't open file:'×××.MYI' (errno: 145) .
3:MySQLにおけるMyISAMテーブル破損の予防:
1、MyISAM表を定期的にチェックする.myisamchkもmysqlcheckもcheck tableも使えます.2、大量の更新や削除操作を行った後、mysqlcheckまたはoptimize tableを使用してテーブルを最適化することで、ファイルの破片を減らし、テーブルの破損の確率を減らすことができます.3、サーバーをシャットダウンする前に、mysqldをシャットダウンします(正常にサービスをシャットダウンし、kill-9を使用してプロセスを殺さないでください).4、ups電源を使用して、突然電源が切れることを避ける.5、最新の安定版mysqlを使用して、mysql自体のバグを減らしてテーブルの破損を招く.6、ディスクに対してraidを行い、ディスクエラーを減らし、性能を向上させる.7、データベースサーバはmysqldと必要な他のサービスだけを走ったほうがいい.他の業務サービスを走ってはいけない.これにより、デッドラインによるテーブルの破損の可能性を減らす.
四:MySQLにおけるMyISAMテーブル破損の修復総括:
1、mysqldがダウンして起動できない場合は、mysiamchkツールで修復できます.このツールはmysqldサービスが起動していない場合に使用できます.このツールでは、MyISAMテーブルの修復をチェックして分析できます.2、mysqldがまだ実行されている場合、または再起動できる場合はmysqlcheckツールで修復できます.あるいは直接mysqlの内蔵修復SQL文によって修復する:CHECK TABLE,REPAIR TABLE,ANALYSE TABLE,OPTIMIZE TABLE.この2つの方法は同様に表の修復作用を達成することができる.以上の2つの方法にはそれぞれ適用シーンがあります.
MySQLデータテーブル破損の巧みな修復mysqlテーブルを修復する前に、まずどのテーブルに問題があるかを知る必要があります.
rootでログインしてinformation_schemaで問題のあるテーブル名を検索
select TABLE_SCHEMA as DB_DBNAME,TABLE_NAME from INFORMATION_SCHEMA.tables where engine is null;
イベントビューアに
≪アプリケーション・ログ|Application Log|ldap≫:≪タイプが「≪エラー|Errors|ldap≫」--イベント・ソースが「≪Mysql|Mysql|ldap≫」のエラー・ログ.
1 xxxxx: Table '.xxxx' is marked as crashed and should be repaired
またはphpmyadminで「使用中」などの問題のあるテーブルを直接表示します.
問題テーブルを調べたら、mysqlデータベースのMYISAMテーブルを修復するコマンドを使用します.
1、check, repair
例えばabcのtestテーブルに問題がある
 
  
# mysql -u root -p 'abc';   // mysql , abc
mysql> check table test;  // Msg_type warning error。 Status OK
mysql> repair table test;  // test ( “ ” )
mysql> check table test; //

2. myisamchk, isamchk
ここでmyisamchkはMYISAMタイプのデータテーブルに適用され、isamchkはISAMタイプのMySQLデータテーブルに適用されます.この2つのコマンドの主なパラメータは同じで、一般的に新しいシステムではデフォルトのデータテーブルタイプとしてMYISAMが使用されます.ここではmyisamchkを例に説明します.データ・テーブルに問題がある場合に使用します.
myisamchk tablename.MYI
検査を行い、修復が必要な場合は、次のように使用できます.
myisamchk -of tablename.MYI
myisamchkの詳細なパラメータの説明については、その使用方法を参照してください.注意が必要な場合は修正時にMySQLサーバーがこのMySQLデータテーブルにアクセスしていないことを確認しなければならない.保険の場合は検査時にMySQLサーバーShutdownを落としたほうがいい.
mysqladmin -uroot -p shutdown
また、次のコマンドをrcに置くことができます.localでMySQLサーバーを起動する前に:
[ -x/tmp/MySQL.sock ] &&/pathtochk/myisamchk -of/DATA_DIR/*/*.MYI
その中の/tmp/MySQL.sockはMySQLが傍受するSockファイルの場所であり、RPMを使用してインストールするユーザーには/var/lib/MySQL/MySQLであるべきである.sockは、ソースコードを用いる実装については/tmp/MySQLである.sockは自分の実際の状況に応じて変更できますが、pathtochkはmyisamchkの位置です.DATA_DIRはあなたのMySQLデータベースが保存されている場所です.
注意が必要な場合は、このコマンドをrcに置くつもりです.localでは、このコマンドを実行するときにMySQLサーバが起動していないことを確認する必要があります!
3、すべてのデータベースの修復を検出する(表)
 
  
MySQLcheck -A -o -r -p
mysqlcheck --all-databases -r