MySQLのレプリケーションエラーについて 1032,1062

We encourage users to post events happening in the community to the community events group on https://www.drupal.org.
Masa Nishio's picture

こんにちは。今週、知人がこちら(g.d.o.japan)に新規登録したのですが、質問を投稿できない(拒否される)とのことなので代わりに投稿します(おそらくまだ承認されていないということでしょう)。

どうぞよろしくお願いします。


お世話になります。
現在、Drupal8にてサイト構築を行っておりますが、自力解決できない問題があり、質問させていただきたく存じます。

今回、Drupal用のRDBとしてMySQLを利用して、DBサーバを構築いたしました。
DBサーバは冗長化のため、2台構成としており、両DBサーバはMySQLの機能でレプリケーションを実施しておりますが、以下の2種類のエラーが発出してレプリケーションがとまってしまいます。

エラー1

2017-09-13T14:04:37.717649+09:00 7 [Note] Slave SQL for channel '': Could not execute Delete_rows event on table drupal_db.watchdog; Can't find record in 'watchdog', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log mysql-bin.000002, end_log_pos 211537910, Error_code: 1032

エラー2

Could not execute Write_rows event on table drupal_db.watchdog; Duplicate entry '741659' for key 'PRIMARY', Error_code: 1062; handler error HA_ERR_FOUND_DUPP_KEY; the event's master log mysql-bin.000001, end_log_pos 1161

調査したところ、これらのエラーは発生しても無視してレプリケーションを続行させることも可能であるとのことでした。
そこで、以下の2点について、質問させていただきたく存じます

質問1

上記のエラーは、以下の3テーブルにて発生しておりますが、これらのテーブルは、Drupalの動作にどのような役割を担っておりますでしょうか。

・drupal_db.watchdog
・drupal_db.semaphore
・drupal_db.key_value_expire

質問2

これらの3テーブルは、一部もしくは全部のクエリがレプリケーションされなかったときに、フェールオーバ時の動作に影響を及ぼしますでしょうか

以上となります。
突然の質問で申し訳ございませんが、皆様の知見をお借りできればと存じますので、何卒宜しくお願い申し上げます。

※尚、当方で調査したところ、これらのテーブルの役割は以下の通りであると思われます
・drupal_db.watchdog・・・ログ。
・drupal_db.semaphore・・・DBの排他制御。
・drupal_db.key_value_expire・・・何らかの一時ファイル

Comments

muro's picture

質問に対する答えでないですが、仮にフェールオーバされても、watchdogが同期されていない=レプリケーション先でログが消失しているので、監査が厳しいサイトではアウトになります。

レプリケーションですが、「mysql-bin.000001, end_log_pos 1161」と早い時点で、「Duplicate entry '741659' for key 'PRIMARY'」重複エラーがでているので、おそらくMySQLのレプリケーション環境の構築がうまくいってないと推測されます。

なんとなくですが、レプリケーションのタイプを非同期にしていて、同期が完了する前に、マスタが切り替わっているようなエラーの出方です。

yuukiyam's picture

muroさん

アドバイスありがとうございます。

"MySQLのレプリケーション環境の構築がうまくいってないと推測されます。"
→構築手順から見直してみることに致します。
誠にありがとうございました