Events и смена ролей в реплике

245
23 июля 2017, 10:00

Здравствуйте! Столкнулся с проблемой в percona56. Допустим есть схема репликации Master <--> Slave . Создаём на мастере event

CREATE EVENT `test_event`
    ON SCHEDULE
      EVERY 1 MINUTE
    ON COMPLETION 
      PRESERVE
    DO
      insert into test1 (unix_time) values (NOW() + 0);

Который просто каждую минуту пишет в таблицу test1 дату. После чего видим на мастере

       EVENT_CATALOG: def
        EVENT_SCHEMA: test
          EVENT_NAME: test_event
             DEFINER: root@localhost
           TIME_ZONE: SYSTEM
          EVENT_BODY: SQL
    EVENT_DEFINITION: insert into test1 (unix_time) values (NOW() + 0)
          EVENT_TYPE: RECURRING
          EXECUTE_AT: NULL
      INTERVAL_VALUE: 1
      INTERVAL_FIELD: MINUTE
            SQL_MODE: NO_ENGINE_SUBSTITUTION
              STARTS: 2017-07-19 15:57:12
                ENDS: NULL
              STATUS: ENABLED
       ON_COMPLETION: PRESERVE
             CREATED: 2017-07-19 15:57:12
        LAST_ALTERED: 2017-07-19 15:57:12
       LAST_EXECUTED: 2017-07-20 13:56:12
       EVENT_COMMENT: 
          ORIGINATOR: 10
CHARACTER_SET_CLIENT: utf8
COLLATION_CONNECTION: utf8_general_ci
  DATABASE_COLLATION: latin1_swedish_ci

и на слэйве

       EVENT_CATALOG: def
        EVENT_SCHEMA: test
          EVENT_NAME: test_event
             DEFINER: root@localhost
           TIME_ZONE: SYSTEM
          EVENT_BODY: SQL
    EVENT_DEFINITION: insert into test1 (unix_time) values (NOW() + 0)
          EVENT_TYPE: RECURRING
          EXECUTE_AT: NULL
      INTERVAL_VALUE: 1
      INTERVAL_FIELD: MINUTE
            SQL_MODE: NO_ENGINE_SUBSTITUTION
              STARTS: 2017-07-19 08:57:12
                ENDS: NULL
              STATUS: SLAVESIDE_DISABLED
       ON_COMPLETION: PRESERVE
             CREATED: 2017-07-19 08:57:12
        LAST_ALTERED: 2017-07-19 08:57:12
       LAST_EXECUTED: NULL
       EVENT_COMMENT: 
          ORIGINATOR: 10
CHARACTER_SET_CLIENT: utf8
COLLATION_CONNECTION: utf8_general_ci
  DATABASE_COLLATION: latin1_swedish_ci

Всё ок, всё работает... до того момента, как нам необходимо сменить роли. Теперь делаем из слэйва мастера, а из мастера слэйва и-и-и - статус эвента не меняется ни там, ни там. То есть фактически получается, что теперь слэйв пишет в таблицу test1 , а у мастера статус SLAVESIDE_DISABLED и хоть он уже не слэйв - ничего не происходит.

Собственно вопрос: А как с этим бороться? Каждый раз руками статусы менять эвентам? А если у меня их тысячи? Или может я чего неправильно делаю?

READ ALSO
Mysql Inj Update

Mysql Inj Update

Тестирую mysql инъекцию на своем сайте конечно же, и стало интересно, select легко делается, а можно ли сделать update через инъекцию? через get

231
Сортировка по COUNT(*)

Сортировка по COUNT(*)

Данный запрос делает выборку по числу повторений за последний час:

254
Динамические псевдонимы полей в mysql

Динамические псевдонимы полей в mysql

Возможно ли в MySQL добавлять динамически псевдонимы полей?

326
Получить массив String[] из Map&lt;String, String&gt;

Получить массив String[] из Map<String, String>

Добрый деньЕсть такой метод

362