度々失礼いたします。
現在JobSchedulerを以下の環境で動かしています。
・JobScheduler 1.9.11(Active Cluster)
・MySQL 5.7.13(マルチマスターレプリケーション)
・lsyncd 2.1.5 (/config/live配下を同期)
また、テスト用に簡単なジョブ(ジョブチェイン)を作成し、オーダーとして15分置きに実行している状況です。(20ジョブ程度)
しかし時々、ジョブの実行ログをDBに書き込むタイミングでプライマリキーの重複が起きており、
放置すると延々INSERTとROLLBACKを繰り返してJobSchedulerの動作がストップします。
また、scheduler.logにも逐次そのエラーを書き込むため、ディスクがパンクしてDBも落ちる状況です。
対策として、my.cnfにslave_skip_errors=1062の設定を追記してみましたがMySQLのログに出なくなっただけで効果がなく・・・
またJobSchedulerでログの出力を制御できないか探してもみたのですが見当たりません・・・・
現在は一時的に重複したログをDELETEしてしのいでおりますが、数時間置きに出ているため根本的な解決になっておりません・・・。
何かよい方法はありませんでしょうか。
また、Active Cluster構成でDBの冗長性を確保する場合に他にどのような構成で構築しておられるでしょうか。
何か良い案がありましたらよろしくお願いいたします。
scheduler.log
------------------------------------------------------------------------------------------------------------------------------------------------
.21 18:41:53.913 1 10866.D4C7E700 .DatabaseProductName=MySQL, DriverName=mariadb-jdbc
.21 18:41:53.914 1 10866.D4C7E700 {scheduler} sos::scheduler::database::Transaction::execute INSERT into SCHEDULER_HISTORY ("CAUSE","CLUSTER_MEMBER_ID","ID","JOB_NAME","SPOOLER_ID","START_TIME") values ('period_single','scheduler/scheduler01:4444',19442,'job1','scheduler',{ts'2016-06-21 04:05:00'}) (sos::scheduler::database::Task_history::write)
.21 18:41:53.914 0 10866.D4C7E700 [xc.insert 1, "java.sql.SQLIntegrityConstraintViolationException: Duplicate entry '19442' for key 'PRIMARY' - caused by - org.mariadb.jdbc.internal.common.QueryException: Duplicate entry '19442' for key 'PRIMARY'"]
.21 18:41:53.914 0 10866.D4C7E700 [xc.insert 2, "executeUpdate"]
.21 18:41:53.914 0 10866.D4C7E700 [xc.append "sos::scheduler::database::Task_history::write"]
.21 18:41:53.914 0 10866.D4C7E700 {scheduler} sos::scheduler::database::Transaction::execute ROLLBACK (sos::scheduler::database::Transaction::~Transaction)
.21 18:41:53.915 1 10866.D4C7E700 ~Sos_database_session() id=spooler db=jdbc:mysql://localhost:3306/scheduler user=scheduler cmd=ROLLBACK open_mode=3 ref=0
.21 18:41:53.915 0 10866.D4C7E700 .[xc.insert "Datei file:/home/scheduler/jobscheduler/scheduler/config/sos.ini"]
.21 18:41:53.915 0 10866.D4C7E700 .[xc.insert "Datei file:/home/scheduler/jobscheduler/scheduler/config/sos.ini"]
.21 18:41:53.915 0 10866.D4C7E700 .[xc.insert "Datei file:/home/scheduler/jobscheduler/scheduler/config/sos.ini"]
.21 18:41:53.915 0 10866.D4C7E700 .(Letzte Zeile wiederholt sich 2 mal)