SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 21.12.2010 00:47:37

studz
Участник
Зарегистрирован: 12.10.2010
Сообщений: 6

[nativecode=2006 ** MySQL server has gone away] при включенной репликации

Народ всем привет, столкнулся вот с такой проблемой, есть  большие базы и тяжелые запросы, на мастере все выполняется, на реплике также все выполняется, НО только тогда когда выключена репликация, как только ее включаем получаем при выполнении тех же запросов на реплике :

[nativecode=2006 ** MySQL server has gone away]
и все т.е. почему-то реплика отваливается, реплика в read only, каким образом репликация так пагубно влияет и как этого можно избежать?

Спасибо!

Неактивен

 

#2 21.12.2010 02:42:44

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

Re: [nativecode=2006 ** MySQL server has gone away] при включенной репликации

Варианта два — плохой и еще хуже. Плохой — это если Ваш клиент не дожидается
ответа. Например, если он выполняет запрос, но ставит некоторый таймаут на его
выполнение. Со включенной репликой база отвечает медленнее, и в таймаут Вы
не укладываетесь. Если у клиента есть настройка, регулирующая таймауты, эта
проблема лечится легко.

Вариант еще хуже — если физически падает процесс MySQL. В этом случае я бы на-
чал смотреть с потребления памяти, а потом уже стал бы искать ошибки в ПО.

Неактивен

 

#3 21.12.2010 11:51:25

studz
Участник
Зарегистрирован: 12.10.2010
Сообщений: 6

Re: [nativecode=2006 ** MySQL server has gone away] при включенной репликации

ну таймауты вроде задраны выше некуда, серверы вроде одинаковые практически по железу, запросы выполняются из веба также одинаково, настройки у реплики одинаковы по параметрам потреблению памяти, своп вообще не используется, т.е. на первый взгляд вроде все должно отрабатывать, т.к. выполняли запросы когда мастер практически простаивал. Может как-то возможно изолировать процесс репликации, звучит конечно  не правильно, но все же, чтобы он не сильно влиял на сервер

Отредактированно studz (21.12.2010 12:02:17)

Неактивен

 

#4 21.12.2010 16:32:12

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

Re: [nativecode=2006 ** MySQL server has gone away] при включенной репликации

Таймауты задраны выше некуда, но это они или нет?

Неактивен

 

#5 21.12.2010 18:51:47

RuslanSVS
Завсегдатай
Зарегистрирован: 08.11.2010
Сообщений: 28

Re: [nativecode=2006 ** MySQL server has gone away] при включенной репликации

Дело в том что когда водятся изменения на слейве то меняются индексы и реплика отваливается

Неактивен

 

#6 21.12.2010 19:16:03

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

Re: [nativecode=2006 ** MySQL server has gone away] при включенной репликации

Насколько я понимаю, реплика тут не отваливается smile

Неактивен

 

#7 22.12.2010 00:40:17

RuslanSVS
Завсегдатай
Зарегистрирован: 08.11.2010
Сообщений: 28

Re: [nativecode=2006 ** MySQL server has gone away] при включенной репликации

[nativecode=2006 ** MySQL server has gone away]
и все т.е. почему-то реплика отваливается        --------  а это про что речь тогда  шла?

Неактивен

 

#8 22.12.2010 14:30:43

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

Re: [nativecode=2006 ** MySQL server has gone away] при включенной репликации

Отваливается от клиента? smile

Неактивен

 

#9 28.12.2010 12:35:03

studz
Участник
Зарегистрирован: 12.10.2010
Сообщений: 6

Re: [nativecode=2006 ** MySQL server has gone away] при включенной репликации

Да все верно вы поняли, клиент отваливается от выполнения запроса мускулем на сервере с репликой, а реплика в это время работает, с мастера все запросы выполняются, вот параметры, которые были увеличены, в остальном они почти идентичны как на мастере так и на реплике:

wait_timeout=58800
interactive_timeout = 58800
innodb_lock_wait_timeout = 900

php.ini
default_socket_timeout = 6000
setting connect_timeout = 6000
mysql.connect_timeout = 9600


Причем, реплика при запросах не сильно то и напрягается по нагрузке. Странно, т.к. как только делаешь stop slave; на ней, все начинает бегать и выполняться с этого сервера довольно быстро.


По поводу ваших 2 вариантов) Плохого и еще хуже
Как бы это отдебажить? 1 -ый наверное не подходит, т.к. из веба также запросы выполняются как на него (с остановленной репликой) так и на мастере.
"Со включенной репликой база отвечает медленнее" а почему это интересно? Т.к. в этот момент запросы на мастер практически не шли, и тем более инсерты.
" Если у клиента есть настройка, регулирующая таймауты, эта
проблема лечится легко." попробовали в php.ini увеличить execution_time=300 , но это не помогло

Вариант еще хуже — если физически падает процесс MySQL. В этом случае я бы на-
чал смотреть с потребления памяти, а потом уже стал бы искать ошибки в ПО.
С памятью все в порядке, как и с состоянием сервера, конечно я на 100% не уверен что сам процесс упал, не могу утверждать, но судя по состоянию сервера  это вряд-ли, да и он же не перезапускается если падает?

Отредактированно studz (28.12.2010 12:45:02)

Неактивен

 

#10 28.12.2010 16:18:30

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

Re: [nativecode=2006 ** MySQL server has gone away] при включенной репликации

Просто зайдите на сервер клиентом mysql и выполните \s. В выводе статистики
будет строка Uptime, в которой будет написано, сколько времени работает сервер.

Неактивен

 

#11 17.01.2011 17:53:15

studz
Участник
Зарегистрирован: 12.10.2010
Сообщений: 6

Re: [nativecode=2006 ** MySQL server has gone away] при включенной репликации

Дебажим дальше))) из консоли все запросы выполняются нормально, значит дело в клиенте php, народ может кто сталкивался с таким? что может быть не так?
Может еще есть какие-то таймауты помимо этих?

wait_timeout=58800
interactive_timeout = 58800
innodb_lock_wait_timeout = 900

php.ini
default_socket_timeout = 6000
setting connect_timeout = 6000
mysql.connect_timeout = 9600

Неактивен

 

#12 17.01.2011 18:30:18

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

Re: [nativecode=2006 ** MySQL server has gone away] при включенной репликации

А параметры точно не меняются внутри приложения?

Неактивен

 

Board footer

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