MYSQLのトラブルシューティングと本番環境の最適化

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マスターマルチスレーブ、マルチマスターマルチスレーブ

おすすめ

転載: blog.csdn.net/weixin_39608791/article/details/108444813