Проблема записи на slave сервер при master-slave репликации

MySQL/PostgreSQL/SQLite/Oracle/M$SQL/....

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
---nebo---
старшина
Сообщения: 424
Зарегистрирован: 2008-11-01 21:06:23
Откуда: Киев
Контактная информация:

Проблема записи на slave сервер при master-slave репликации

Непрочитанное сообщение ---nebo--- » 2013-02-22 11:34:09

Всем привет!

Существует два mysql сервера, которые работают в режиме master-slave репликации.
Сервера используются для работы сайта на Wordpress.

Частенько возникает ситуация, когда боты ходят по зеркалу сайта (на него происходит переключение только в случае проблем с основным), оставляют комменты. Это приводит к записи их активности в некоторые таблицы БД. Из-за этого репликация останавливается к ошибкой:

Код: Выделить всё

mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: X.X.X.X
                  Master_User: slave
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000286
          Read_Master_Log_Pos: 90862124
               Relay_Log_File: mysqld-relay-bin.000004
                Relay_Log_Pos: 45265147
        Relay_Master_Log_File: mysql-bin.000284
             Slave_IO_Running: Yes
            Slave_SQL_Running: No
              Replicate_Do_DB: XXX_replica
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
                   Last_Errno: 1062
                   Last_Error: Error 'Duplicate entry '19817' for key 'PRIMARY'' on query. Default database: 'XXX_replica'. Query: 'INSERT INTO `wp_comments` (`comment_post_ID`,`comment_author`,`comment_author_email`,`comment_author_url`,`comment_author_IP`,`comment_date`,`comment_date_gmt`,`comment_content`,`comment_karma`,`comment_approved`,`comment_agent`,`comment_type`,`comment_parent`,`user_id`) VALUES (81367,'cekmyh','simmkc@qtntme.com','http://stuwiqrgmiqb.com/','1.1.1.27','2013-02-22 01:58:50','2013-02-21 23:58:50','KJ0rB1  <a href=\"http://cpczlllttfkv.com/\" rel=\"nofollow\">cpczlllttfkv</a>, [url=http://xiwscbpdtobw.com/]xiwscbpdtobw[/url], [link=http://qlwlhjbanxbi.com/]qlwlhjbanxbi[/link], http://kgqnilgqtiwo.com/',0,'spam','Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)','',0,0)'
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 45265002
              Relay_Log_Space: 234126149
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File:
           Master_SSL_CA_Path:
              Master_SSL_Cert:
            Master_SSL_Cipher:
               Master_SSL_Key:
        Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 1062
               Last_SQL_Error: Error 'Duplicate entry '19817' for key 'PRIMARY'' on query. Default database: 'XXX_replica'. Query: 'INSERT INTO `wp_comments` (`comment_post_ID`,`comment_author`,`comment_author_email`,`comment_author_url`,`comment_author_IP`,`comment_date`,`comment_date_gmt`,`comment_content`,`comment_karma`,`comment_approved`,`comment_agent`,`comment_type`,`comment_parent`,`user_id`) VALUES (81367,'cekmyh','simmkc@qtntme.com','http://stuwiqrgmiqb.com/','91.201.64.27','2013-02-22 01:58:50','2013-02-21 23:58:50','KJ0rB1  <a href=\"http://cpczlllttfkv.com/\" rel=\"nofollow\">cpczlllttfkv</a>, [url=http://xiwscbpdtobw.com/]xiwscbpdtobw[/url], [link=http://qlwlhjbanxbi.com/]qlwlhjbanxbi[/link], http://kgqnilgqtiwo.com/',0,'spam','Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)','',0,0)'
1 row in set (0.00 sec)
Какие возможные варианты решения проблемы?

Возможно конечно не синхронизировать таблицы с комментариями и действиями пользователя.

Спасибо!
...участки под застройку в живописном месте Интернет

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
skeletor
майор
Сообщения: 2548
Зарегистрирован: 2007-11-16 18:22:04

Re: Проблема записи на slave сервер при master-slave реплика

Непрочитанное сообщение skeletor » 2013-02-22 19:24:44

Можно скипать

Код: Выделить всё

slave stop; set global sql_slave_skip_counter=1; slave start;

Аватара пользователя
---nebo---
старшина
Сообщения: 424
Зарегистрирован: 2008-11-01 21:06:23
Откуда: Киев
Контактная информация:

Re: Проблема записи на slave сервер при master-slave реплика

Непрочитанное сообщение ---nebo--- » 2013-02-22 20:51:10

Но получается что так нужно будет делать при каждом разваливании репликации?

А как интересно сделать так, что бы не заглядывать туда?
...участки под застройку в живописном месте Интернет

_skeletor
проходил мимо

Re: Проблема записи на slave сервер при master-slave реплика

Непрочитанное сообщение _skeletor » 2013-02-22 22:48:44

В конфиге mysql'я указать

Код: Выделить всё

slave_skip_errors=1062
и тогда автоматически будут пропускаться ошибки с номером 1062.
Конечно, после изменений сделать рестарт mysql'я

FiL
ст. лейтенант
Сообщения: 1375
Зарегистрирован: 2010-02-05 0:21:40

Re: Проблема записи на slave сервер при master-slave реплика

Непрочитанное сообщение FiL » 2013-02-22 22:54:26

вариантов дохрена -
1) не пускать никого на зеркало, если мастер не сдох. При сдыхании мастера руками переключаться на зеркало.
2) настроить зеркало на работу с мастером. Если мастер сдохнет - переключить на слейва
3) настроить мастер-мастер

наверняка еще есть, но лень думать в пятницу

Dark_ASU
сержант
Сообщения: 258
Зарегистрирован: 2009-10-31 22:13:04
Контактная информация:

Re: Проблема записи на slave сервер при master-slave реплика

Непрочитанное сообщение Dark_ASU » 2013-02-26 1:42:57

Версия мускула какая?

Аватара пользователя
---nebo---
старшина
Сообщения: 424
Зарегистрирован: 2008-11-01 21:06:23
Откуда: Киев
Контактная информация:

Re: Проблема записи на slave сервер при master-slave реплика

Непрочитанное сообщение ---nebo--- » 2013-02-26 8:52:15

5.5
...участки под застройку в живописном месте Интернет