SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 11.01.2010 13:29:57

_Сергей
Завсегдатай
Зарегистрирован: 26.11.2008
Сообщений: 36

После change master to что-то поломалось.

Здравствуйте.

Слетела master-master репилкация с ошибкой

Slave SQL thread initialized, starting replication in log 'adv-bin.000049' at position 245839360, relay log './1t-relay-bin.000145' position: 1291147
[ERROR] Slave SQL: Error 'Duplicate entry '131116165' for key 'PRIMARY'' on query.

запуситив mysqlbinlog --start-pos=1291147 ./1t-relay-bin.000145
я действительно накнулся на тот запрос который давай дубликат. Решенем было перескочить эту проблемную позицию. mysqlbinlog показал мне следующих шаг и я сделал stop slave; CHANGE MASTER TO RELAY_LOG_FILE='1t-relay-bin.000145', RELAY_LOG_POS=1291771;
мне выдало ошибку Failed initializing relay log position: Could not find target log during relay log initialization, но позиция перешла. то имеем в итоге.

Проблема с дубликатами ушла, НО....
show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: ооо
                  Master_User: api
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: adv-bin.000049
          Read_Master_Log_Pos: 295943604
               Relay_Log_File: 1t-relay-bin.000145
                Relay_Log_Pos: 1291771
        Relay_Master_Log_File: adv-bin.000049
             Slave_IO_Running: Yes
            Slave_SQL_Running: No
              Replicate_Do_DB: аааа
          Replicate_Ignore_DB: mysql,test
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
                   Last_Errno: 1593
                   Last_Error: Error initializing relay log position: Could not find target log during relay log initialization
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 245839360
              Relay_Log_Space: 51396534
              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: 1593
               Last_SQL_Error: Error initializing relay log position: Could not find target log during relay log initialization
1 row in set (0.00 sec)


теперь
Relay_Log_File: 1t-relay-bin.000145
Relay_Log_Pos: 1291771

не изменяются, застыли, но
Master_Log_File: adv-bin.000049
Read_Master_Log_Pos: 295943604

бегут как сумашедшие.
Тоесть создается такое впечатление что репликация восстановилась, но то что не изменяются
Relay_Log_File: 1t-relay-bin.000145
Relay_Log_Pos: 1291771

меня сильно тревожит.

Что я вообще натоворил и как это исправить?

Неактивен

 

#2 11.01.2010 13:38:17

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: После change master to что-то поломалось.

Ну, Вы неудачно выбрали положение в двоичном журнале. С помощью
mysqlbinlog найдите удачное положение (искать следует «#at …») и
переключите репликацию на него.

А вообще на будущее — есть отличная переменная, которая указывает,
сколько строк из репликации следует пропустить:
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
Сейчас не поможет, т.к. Вы уже сбили положение в relay log, так что
действуйте так, как написано в первом пункте smile

Неактивен

 

#3 11.01.2010 14:15:34

_Сергей
Завсегдатай
Зарегистрирован: 26.11.2008
Сообщений: 36

Re: После change master to что-то поломалось.

paulus написал:

так что
действуйте так, как написано в первом пункте smile

в первом пункте чего?

Отредактированно _Сергей (11.01.2010 14:33:24)

Неактивен

 

#4 11.01.2010 14:30:18

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: После change master to что-то поломалось.

В первом пункте моего ответа. Т.е. «найти удачное положение и продолжить
репликацию с него».

Неактивен

 

#5 11.01.2010 14:33:33

_Сергей
Завсегдатай
Зарегистрирован: 26.11.2008
Сообщений: 36

Re: После change master to что-то поломалось.

paulus написал:

искать следует «#at …» и

именно это я и искал

# at 1291147----------> раньше стояло тут
#100111 10:15:42 server id 30  end_log_pos 245839432    Query   thread_id=11966919      exec_time=0     error_code=0
SET TIMESTAMP=1263197742/*!*/;
SET @@s.pseudo_thread_id=11966919/*!*/;
SET @@s.foreign_key_checks=1, @@s.sql_auto_is_null=1, @@s.unique_checks=1, @@s.autocommit=1/*!*/;
SET @@s.sql_mode=0/*!*/;
SET @@s.auto_increment_increment=16, @@s.auto_increment_offset=5/*!*/;
/*!\C latin1 *//*!*/;
SET @@s.character_set_client=8,@@s.collation_connection=8,@@s.collation_server=33/*!*/;
SET @@s.lc_time_names=0/*!*/;
SET @@s.collation_database=DEFAULT/*!*/;
BEGIN
/*!*/;
# at 1291219
#100111 10:15:42 server id 30  end_log_pos 245839460    Intvar
SET INSERT_ID=131116165/*!*/;
# at 1291247
#100111 10:15:42 server id 30  end_log_pos 245839957    Query   thread_id=11966919      exec_time=0     error_code=0
use api/*!*/;
SET TIMESTAMP=1263197742/*!*/;
INSERT INTO `s` (`hash`,`ip`,`host`,`site-id`,`user-id`,`cart-id`,`country-id`,`language-id`,`currency-id`,`create-time`,`modify-time`,`user-agent`) VALUES ('qlfcjinny09jf0jpih','1.2.19.14','www.r.com','-568954484',NULL,NULL,NULL,NULL,NULL,'2010-01-11 10:15:41','2010-01-11 10:15:41','Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1) rBot BETA 1.2 (ffff)')
/*!*/;
# at 1291744
#100111 10:15:42 server id 30  end_log_pos 245839984    Xid = 305650529
COMMIT/*!*/;

---------------------> я перествил сюда# at 1291771
#100111 10:15:42 server id 30  end_log_pos 245840056    Query   thread_id=11966919      exec_time=0     error_code=0
SET TIMESTAMP=1263197742/*!*/;
BEGIN
/*!*/;
# at 1291843
#100111 10:15:42 server id 30  end_log_pos 245840578    Query   thread_id=11966919      exec_time=0     error_code=0
SET TIMESTAMP=1263197742/*!*/;
UPDATE `s` SET `id`='131116165',`hash`='qlfcjin9pny09jf0jpih',`ip`='1.2.19.14',`host`='www.r.com',`site-id`='-568954484',`user-id`='0',`cart-id`='0',`country-id`='250',`language-id`='1',`currency-id`='1',`create-time`='2010-01-11 10:15:41',`modify-time`='2010-01-11 10:15:41',`user-agent`='Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1) rBot BETA 1.2 (ffff)' WHERE `id`='131116165'
/*!*/;
# at 1292365
#100111 10:15:42 server id 30  end_log_pos 245840605    Xid = 305650534
COMMIT/*!*/;
# at 1292392
#100111 10:15:42 server id 30  end_log_pos 245840677    Query   thread_id=11966919      exec_time=0     error_code=0
SET TIMESTAMP=1263197742/*!*/;
BEGIN
/*!*/;

как понять что позиция правильная?

Отредактированно _Сергей (11.01.2010 14:34:08)

Неактивен

 

#6 11.01.2010 14:37:55

_Сергей
Завсегдатай
Зарегистрирован: 26.11.2008
Сообщений: 36

Re: После change master to что-то поломалось.

в relay-log.info позиция осталась старая 1291147
может там руками поправить?

Неактивен

 

#7 11.01.2010 14:45:50

_Сергей
Завсегдатай
Зарегистрирован: 26.11.2008
Сообщений: 36

Re: После change master to что-то поломалось.

а не надо запускать START SLAVE SQL_THREAD; ?

Неактивен

 

#8 11.01.2010 14:57:01

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: После change master to что-то поломалось.

Попробуйте 1291843.
Теоретически, должно работать. Практически — Вы пытаетесь его поставить
на BEGIN, который не есть полноценная команда, может быть, не запускается
из-за этого.

Если не заработает — то, если на мастере еще бинлоги остались, то может спасти
STOP SLAVE;
CHANGE MASTER TO MASTER_LOG_FILE='adv-bin.000049', MASTER_LOG_POS=245839360;
START SLAVE;

Неактивен

 

#9 11.01.2010 15:02:17

_Сергей
Завсегдатай
Зарегистрирован: 26.11.2008
Сообщений: 36

Re: После change master to что-то поломалось.

на мастере все осталось.
1291843 пробовал - результат тот же.
После того как я перестартанул мускуль все вернулось к тому с чего началось.
опять ошибка Duplicate entry и все позиции стали такими как и были

может попробовать SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; раз уж все вернулось как и было?

Неактивен

 

#10 11.01.2010 15:03:53

_Сергей
Завсегдатай
Зарегистрирован: 26.11.2008
Сообщений: 36

Re: После change master to что-то поломалось.

на свой страх и риск сделал SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;

вроде бы пошло!!!
но дождусь пока все изменения синхронизируются

Отредактированно _Сергей (11.01.2010 15:04:59)

Неактивен

 

#11 11.01.2010 15:05:40

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: После change master to что-то поломалось.

Угу, теперь Вы пропустили одно событие, и всё бежит дальше. Не понятно,
почему RELAY_LOG не переключался. Ну да ладно, главное, что заработало smile

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson