MySQL slave_net_timeoutパラメータによるクラスタ問題の解決例
1671 ワード
【背景】一連のデータベースクラスタを5.6に5.5アップグレードした後、alter.logはwarning異常を報告します.
データベーストラフィック圧力qps 1 tpsは、ほぼ0 4〜10秒以上で書き込み動作します.
【分析】
1主従複製情報ホストアドレス、ポート、複製ユーザ、binlogファイル位置等の情報はmasterに記憶する.infoでは、5.6バージョンでセキュリティが大幅に改善されており、change masterを実行するときにパスワードを指定することは推奨されていません.マスタースレーブを作成するときにパスワードを設定すると、5.6 MySQLから上記のwarning情報が表示されます.これもこのクラスタが5.5バージョンでエラーを報告しない理由です.
2 MySQL Replicationの再接続メカニズム
マスターコピー関係が確立されたシステムでは、通常、ライブラリからマスターライブラリにCOM_を送信します.BINLOG_DUMPコマンドの後、マスターライブラリに新しいbinlog eventがあり、スタンバイライブラリにbinlogが送信されます.しかし、ネットワーク障害やその他の原因でプライマリ・ライブラリとスレーブ・ライブラリの接続が切断されたり、プライマリ・ライブラリにbinlogが長時間送信されなかったりします.例えばこの例ではデータベースクラスタ10 s程度がまだ書き込まれていない場合、slave_を超えるnet_timeoutが設定した4 sは、ライブラリからプライマリライブラリに再接続要求を開始します.5.6バージョンslaveが再接続要求を開始すると、MySQLは明文のユーザー名パスワードがあるかどうかを判断し、ある場合はerror.に上記の情報を送信する.log. 【解決策】この例ではslave_net_timeoutは大きく25に設定されています.slave_net_timeoutは、マスターライブラリから送信されたBinary Logs eventsを何秒も受信していない後に、ライブラリからネットワークがタイムアウトしたと判断し、Slave IOスレッドがマスターライブラリに再接続するように設定されています.このパラメータのデフォルト値は3600 sですが、時間がかかりすぎると、データベースが遅延したり、プライマリ・スタンバイ・ライブラリの直接のリンク・例外がタイムリーに検出されません.slave_net_timeoutを短く設定すると、Masterがデータ更新を行わない場合に頻繁に再接続されます.一般ラインは5 sに設定されています.
もちろん、業務側とコミュニケーションをとり、アクセスがほとんどない業務ラインに対してラインオフを行い、会社のために資源を節約することもできます.
2015-02-03 15:44:51 19633 [Warning] Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the \'START SLAVE Syntax\' in the MySQL Manual for more information.
データベーストラフィック圧力qps 1 tpsは、ほぼ0 4〜10秒以上で書き込み動作します.
【分析】
1主従複製情報ホストアドレス、ポート、複製ユーザ、binlogファイル位置等の情報はmasterに記憶する.infoでは、5.6バージョンでセキュリティが大幅に改善されており、change masterを実行するときにパスワードを指定することは推奨されていません.マスタースレーブを作成するときにパスワードを設定すると、5.6 MySQLから上記のwarning情報が表示されます.これもこのクラスタが5.5バージョンでエラーを報告しない理由です.
2 MySQL Replicationの再接続メカニズム
マスターコピー関係が確立されたシステムでは、通常、ライブラリからマスターライブラリにCOM_を送信します.BINLOG_DUMPコマンドの後、マスターライブラリに新しいbinlog eventがあり、スタンバイライブラリにbinlogが送信されます.しかし、ネットワーク障害やその他の原因でプライマリ・ライブラリとスレーブ・ライブラリの接続が切断されたり、プライマリ・ライブラリにbinlogが長時間送信されなかったりします.例えばこの例ではデータベースクラスタ10 s程度がまだ書き込まれていない場合、slave_を超えるnet_timeoutが設定した4 sは、ライブラリからプライマリライブラリに再接続要求を開始します.5.6バージョンslaveが再接続要求を開始すると、MySQLは明文のユーザー名パスワードがあるかどうかを判断し、ある場合はerror.に上記の情報を送信する.log. 【解決策】この例ではslave_net_timeoutは大きく25に設定されています.slave_net_timeoutは、マスターライブラリから送信されたBinary Logs eventsを何秒も受信していない後に、ライブラリからネットワークがタイムアウトしたと判断し、Slave IOスレッドがマスターライブラリに再接続するように設定されています.このパラメータのデフォルト値は3600 sですが、時間がかかりすぎると、データベースが遅延したり、プライマリ・スタンバイ・ライブラリの直接のリンク・例外がタイムリーに検出されません.slave_net_timeoutを短く設定すると、Masterがデータ更新を行わない場合に頻繁に再接続されます.一般ラインは5 sに設定されています.
set global slave_net_timeout = 25
もちろん、業務側とコミュニケーションをとり、アクセスがほとんどない業務ラインに対してラインオフを行い、会社のために資源を節約することもできます.