2

私のMySQLイベントは決して実行したくありません。
最新の5.6.10リリースを使用していますが、問題は5.5バージョンにもありました。
私は1つのマスター-多くのスレーブ構成を持っています。マスターでイベントを実行したいです。

  1. my.iniで、すでにevent_scheduler=ONを設定しています

2、これを確認します:

show variables like '%event_scheduler%';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| event_scheduler | ON    |
+-----------------+-------+

show processlist\G

Id: 1
User: event_scheduler
Host: localhost
db: NULL
Command: Daemon
Time: 720
State: Waiting on empty queue
Info: NULL
...

3、次に、マスターサーバーで定期的なイベントが発生します。
これは決して実行したくありません。また、日付を別の時間に変更しようとしました。

CREATE EVENT IF NOT EXISTS dbname.event_xyz
ON SCHEDULE EVERY 1 DAY STARTS '2013-02-05 00:15:00'
ON COMPLETION PRESERVE
DISABLE ON SLAVE
COMMENT 'Collect data from ...'
DO CALL dbname._procedurename;

「_procedurename」プロシージャを直接呼び出してもエラーは発生しません。

4、イベントと手順の作成者は「ルート」です。

5、の出力

show events\G

Db: dbname
Name: event_xyz
Definer: root@localhost
Time zone: SYSTEM
Type: RECURRING
Execute at: NULL
Interval value: 1
Interval field: DAY
Starts: 2013-02-05 00:15:00
Ends: NULL
Status: SLAVESIDE_DISABLED
Originator: 1
character_set_client: utf8
collation_connection: utf8_general_ci
Database Collation: utf8_general_ci

6、マスターサーバーを再起動すると、masterservername.errに次の行が表示されます。

...
Event Scheduler: Purging the queue. 0 events
...
Event Scheduler: Loaded 0 events
...

そしてその

show processlist\G

event_schedulerが

State: Waiting on empty queue !

だから、私の質問は、なぜ私のマスターサーバーでイベントを実行しないのですか?
イベントスケジューラが以前に定義されたイベントについて何も知らないのはなぜですか?
私は何かが足りないのですか?

4

2 に答える 2

4

おそらくこれはバグです。

解決策は、

DISABLE ON SLAVE

イベント宣言コマンドからのパラメーター。

この後、イベントの状態は「ENABLED」ステータスに変わり、マスターサーバーのイベントスケジューラによって発生します。

スレーブでは、このイベントの状態が「SLAVESIDE_DISABLED」ステータスで複製されました。

では、CREATEEVENT構文の「DISABLEONSLAVE」パラメーターはどのような目的で存在するのでしょうか。

于 2013-03-06T07:39:54.663 に答える