MySQLフェイルオーバー時にDB接続不可となり取得データが欠落する
環境説明:
DB:MySQL 5.7.23 (AWSのRDS-マルチAZ)
ZabbixServer:4.0.1
ZabbixServerはDockerコンテナ上で稼働 (AWSのECS)
コンテナイメージ:Zabbix公式のもの(https://hub.docker.com/r/zabbix/zabbix-server-mysql/)
事象:
RDSのフェイルオーバーが発生した際、以下ログを出力し、ZabbixServerとMySQLの接続が切れてしまいます
158:20190426:105915.881 [Z3005] query failed: [2013] Lost connection to MySQL server during query [begin;]
自然復旧はせず、コンテナを再起動することで復旧いたしました。
この時、フェイルオーバー発生時から再起動実施までの監視データが欠落してしまいます。
RDSのフェイルオーバー発生時でもデータが欠落しない構成や設定がございましたらご教授お願い致します。
なお、以下のフォーラムは確認しており、発生原因についても概ね理解しております。
しかし、コンテナ上でZabbixServerを稼働しており、再起動による解決ではデータが欠落してしまいますので、
データが欠落しない形での解決を目指しております。
http://www.zabbix.jp/node/3431
TNK - 投稿数: 4769
Zabbix 4.0.7の環境を構築して試してみましたが、RDSでフェイル
オーバーが起きた時に、zabbix_serverプロセスではその変化をハ
ンドリングできていないようです。
現時点の対応としては、zabbix_serverプロセスを再起動しないと
データベース(RDS)への再接続を行って正常な状態に戻らないよう
です。
明確なログが出力される場合は、参考にされた本サイトのURLでも
話題に上がっているような対策をご検討ください。
どうしても欠落させたくないというのであれば、複数のZabbixサー
バーから監視するという案も考えられるとは思います。
is12306 - 投稿数: 6
TNKさん
ご返信ありがとうございます。
また、わざわざ構築までして頂きありがとうございます。
やはり再起動が必要なのですね。。
リソース監視については多少データの欠落が生じても許容できるのですが、
ログ監視については欠落が生じないようにしたいのです。
監視データはDBに書き込む前にキャッシュに書き込まれると記憶しております。
再起動を実施する前にこのキャッシュ(HistoryTextCache)をどこかに退避するようなことは可能でしょうか?