記事ディレクトリ
MySQLのトラブルシューティングと本番環境の最適化
1.ケースの実装:MySQL単一インスタンスの一般的な障害
障害1
1.故障現象
エラー2002(HY000):ソケット "/data/mysq/mysql.sock '(2)経由でローカルMySQLサーバーに接続できません
2.問題分析
データベースが開始されていないか、データベースポートがファイアウォールによってブロックされています
3.ソリューション
データベースを起動するか、ファイアウォールのデータベースリスニングポートを開きます
障害2
1.故障現象
エラー1045(28000):ユーザー 'root @' localhostへのアクセスが拒否されました(パスワード:NOを使用)
2.問題分析
パスワードが正しくない、またはアクセスできない
3.ソリューション
my.cnfのメイン構成ファイルを変更し、[mysqld]にスキップ許可テーブルを追加します。
- updateは、userテーブルのauthentication_stringフィールドを更新します
- 再認証します。
フォルト3
1.故障現象
データベースへのリモート接続を使用すると、データベースへのリモート接続が遅いという問題が時々発生します
2.問題分析
DNS解決が遅い、クライアント接続が多すぎる
3.ソリューション
- my.cnfメイン構成ファイルを変更します(skip-name-resolveパラメーターを追加します)
- データベース認証によりホスト名の使用が禁止されています
フォルト4
1.故障現象
ファイルを開けません: 'xxX_ forums.MYI'。(errmno:145)
2.問題分析
- サーバーが異常終了した、データベースが配置されているスペースがいっぱいである、またはその他の不明な理由によりデータベーステーブルが損傷した
- データベースをコピーしたため、ファイルの所属グループが変更されました
3.ソリューション
- データテーブルの修復(myisamchk、phpMyAdmin)
- ファイルのグループを変更する
フォルト5
1.故障現象
エラー1129(HY000):ホストxxx.oxx.xxx.xxxは、多くの接続エラーのためにブロックされています。「mysqladmin flush-hosts」でブロックを解除します
2.問題分析
接続エラーの最大数を超えました
3.ソリューション
- キャッシュをクリアする(flush-hostsキーワード)
- mysq |構成ファイルを変更します(max_connect_errors = 1000)
フォルトシックス
1.故障現象
あまりにも多くの接続
2.問題分析
接続数がMySQLの最大接続制限を超えています
3.ソリューション
- MySQL構成ファイルを変更します(max_ connections = 10000)
- 一時的にパラメータを変更します。setGLOBAL max_ connections = 10000;
フォルトセブン
1.故障現象
警告:誰でも書き込み可能な構成ファイル/etc/my.cnfは無視されますエラー!MySQLは実行中ですが、PIDファイルが見つかりませんでした
2.問題分析
MySQL構成ファイル/etc/my.cn許可の問題
3.ソリューション
chmod 644 /etc/my.cnf
フォルトエイト
1.故障現象
InnoDB:エラー:14178ページのログシーケンス番号29455369832
InnoDB:は未来にあります!現在のシステムログシーケンス番号29455369832
2.問題分析
Innodbデータファイルが破損しています
3.ソリューション
my.cnf構成ファイルを変更します(innodb_ force_recovery = 4)
データベース起動後のデータファイルのバックアップ
バックアップファイルを使用してデータを復元する
2.ケースの実装:MySQLマスター/スレーブ環境の一般的な障害
フォルトワン
1.故障現象
Slave_ I0_ライブラリからの実行はNO
マスターとスレーブのMySQLサーバーIDが等しいため、スレーブI / Oスレッドが停止します。レプリケーションが機能するためには、これらのIDが異なる必要があります(または--replicate-same-server-idオプションをスレーブで使用する必要がありますが、これは必ずしも意味がありません。使用する前にマニュアルを確認してください)。
2.問題分析:
メインライブラリとスレーブライブラリのserver-id値が同じです
3.ソリューション
- スレーブライブラリのserver-id値をメインライブラリとは異なるように変更します。
- データベースを再起動して再度同期します
障害2
1.故障現象:
Slave_ I0_ライブラリからの実行はNO
2.問題分析:
主キーが競合するか、主データベースがデータを削除または更新し、データベースでレコードが見つからず、データが変更されます。
3.ソリューション
- メソッド一
mysql>スレーブを停止します。
mysql> set GLOBAL SQL_SLAVE_ SKIP_COUNTER = 1;
mysql>スレーブを開始します。 - 方法2
はグローバルread_only = trueを設定します。
フォルト3
1.故障現象
リレーログ位置の初期化エラー:バイナリログからヘッダーを読み取る1/0エラー
2.問題分析
ライブラリのリレーログのリレービンが破損しています
3.ソリューション
手動で修復し、同期されたbinlogとposポイントを再度見つけて、
mysql> CHANGE MASTER TO MASTER_LOG_FILE = 'mysql-bin.xx'、MASTER_LOG_POS = xxx;を再同期します。
3.ケースの実装:MySQLの最適化
1.ハードウェアの最適化
- CPU:SMPアーキテクチャマルチチャネル対称CPUを使用することをお勧めします
- RAM:4GBを超える物理RAM
- ディスク:RAID-0 + 1ディスクアレイまたはソリッドステートドライブ
2. MySQL構成ファイルの最適化
- 構成アイテムを調整する
3. SQL最適化
- ケーブルボウを使用してみてください|チェック
- ページングを最適化する
- GROUP BY最適化
4. MySQLアーキテクチャの最適化
- アーキテクチャの選択:マスタースレーブ、マスターマスター、1マスターマルチスレーブ、マルチマスターマルチスレーブ