При администрации игрового сервера, когда mysql база разрослась до больших размеров(2gb в дампе) возникла некая проблема. Дело в том, что во время выполнения бэкапа(mysqldump) игровой сервер, как и все его игроки повисает на пару минут, пока mysqldump не отработает до конца.Не знает ли кто-нибудь более безболезненную процедуру архивации, которая не будет вызывать продолжительных подвисаний?
>При администрации игрового сервера, когда mysql база разрослась до больших размеров(2gb в
>дампе) возникла некая проблема. Дело в том, что во время выполнения
>бэкапа(mysqldump) игровой сервер, как и все его игроки повисает на пару
>минут, пока mysqldump не отработает до конца.
>
>Не знает ли кто-нибудь более безболезненную процедуру архивации, которая не будет вызывать
>продолжительных подвисаний?ответ не совсем на вопрос твой, но может поможет.
создай удалённого юзера и зайди с видновой машины на свой серв с помощью навиката или хейди и делай от туда, баг должен уйти
>[оверквотинг удален]
>>бэкапа(mysqldump) игровой сервер, как и все его игроки повисает на пару
>>минут, пока mysqldump не отработает до конца.
>>
>>Не знает ли кто-нибудь более безболезненную процедуру архивации, которая не будет вызывать
>>продолжительных подвисаний?
>
>ответ не совсем на вопрос твой, но может поможет.
>создай удалённого юзера и зайди с видновой машины на свой серв с
>помощью навиката или хейди и делай от туда, баг должен уйти
>мдааа - ты просто гений чувак, каких свет не видовал!
те будем грузить не только винт на серваке, но еще и сеть на обоих машинах - ВЕЛИКОЛЕПНА!
По уму нужно настраивать репликацию на другую машину, а уже оттуда снимать дамп. Альтернативный вариант - использование различных вариантов nice. Ну и наконец можно снимать бинарный дамп, особенно хорошо при наличии снапшотов.
>ответ не совсем на вопрос твой, но может поможет.
>создай удалённого юзера и зайди с видновой машины на свой серв с помощью навиката или >хейди и делай от туда, баг должен уйтиЭто не помогает, так как тут скорее не баг, а просто нагрузка на скуль, при выполнение сложных запросов с join(ами) также висит игровой сервак.
>По уму нужно настраивать репликацию на другую машину, а уже оттуда снимать
>дамп. Альтернативный вариант - использование различных вариантов nice. Ну и наконец
>можно снимать бинарный дамп, особенно хорошо при наличии снапшотов.Вот тоже склонялся к репликации, но никогда этого не делал, поэтому хотелось бы узнать, возможно ли сделать репликацию на той же машине, на которой и основной скуль? Если нет, тогда ещё 1 вопрос, если есть 2 тачки, на обоих стоит скуль, который используется по назначению, возможно ли настроить взаимную репликацию для этих двух тачек, т. е. тачка 1 реплицирует тачку 2, тачка 2 реплицирует тачку 1?
Заранее спасибо.
>Это не помогает, так как тут скорее не баг, а просто нагрузка
>на скуль, при выполнение сложных запросов с join(ами) также висит игровой
>сервак.Это блокировка таблиц на время снятия дампа. Решение одно -- поднимать репликацию.
>
>>По уму нужно настраивать репликацию на другую машину, а уже оттуда снимать
>>дамп. Альтернативный вариант - использование различных вариантов nice. Ну и наконец
>>можно снимать бинарный дамп, особенно хорошо при наличии снапшотов.
>
>Вот тоже склонялся к репликации, но никогда этого не делал, поэтому хотелось
>бы узнать, возможно ли сделать репликацию на той же машине, на
>которой и основной скуль?Возможно.
> Если нет, тогда ещё 1 вопрос, если
>есть 2 тачки, на обоих стоит скуль, который используется по назначению,
>возможно ли настроить взаимную репликацию для этих двух тачек, т. е.
>тачка 1 реплицирует тачку 2, тачка 2 реплицирует тачку 1?Возможно.
>
>Заранее спасибо.
1)А разве mysqldump блокает таблицы если ему этого спецально не сказать?
2)А вы уверены что при частых записях в таблицы репликации не усугубят проблему?
>1)А разве mysqldump блокает таблицы если ему этого спецально не сказать?Да.
man mysqldump
--opt
This option is shorthand; it is the same as specifying --add-drop-table --add-locks --create-options
--disable-keys --extended-insert --lock-tables --quick --set-charset. It should give you a fast dump
operation and produce a dump file that can be reloaded into a MySQL server quickly.The --opt option is enabled by default. Use --skip-opt to disable it. See the discussion at the
beginning of this section for information about selectively enabling or disabling certain of the
options affected by --opt.
>2)А вы уверены что при частых записях в таблицы репликации не усугубят
>проблему?Не понял вопроса.
Спасибо за столь быстрый и краткий ответ. Если не сложно можно ещё ссылку на нормальный гайд по поднятию репликации на той же машине, где и скуль, не хотелось бы читать чего-то лишнего и ненужного.
>Спасибо за столь быстрый и краткий ответ. Если не сложно можно ещё
>ссылку на нормальный гайд по поднятию репликации на той же машине,
>где и скуль, не хотелось бы читать чего-то лишнего и ненужного.
>http://dev.mysql.com/doc/refman/5.1/en/replication.html
+
http://dev.mysql.com/doc/refman/5.1/en/mysqld-multi.html
>[оверквотинг удален]
>server quickly.
>
> The --opt
>option is enabled by default. Use --skip-opt to disable it.
>See the discussion at the
> beginning of
>this section for information about selectively enabling or disabling certain of
>the
> options affected
>by --opt.ну дык тода отрубаем блочку, nice 20 и вперед с песней
>[оверквотинг удален]
>> The --opt
>>option is enabled by default. Use --skip-opt to disable it.
>>See the discussion at the
>> beginning of
>>this section for information about selectively enabling or disabling certain of
>>the
>> options affected
>>by --opt.
>
>ну дык тода отрубаем блочку, nice 20 и вперед с песнейИ получаем неконсистентный дамп, который нахрен никому не нужен.
>[оверквотинг удален]
>>>See the discussion at the
>>> beginning of
>>>this section for information about selectively enabling or disabling certain of
>>>the
>>> options affected
>>>by --opt.
>>
>>ну дык тода отрубаем блочку, nice 20 и вперед с песней
>
>И получаем неконсистентный дамп, который нахрен никому не нужен.Пачему?
>[оверквотинг удален]
>>>>this section for information about selectively enabling or disabling certain of
>>>>the
>>>> options affected
>>>>by --opt.
>>>
>>>ну дык тода отрубаем блочку, nice 20 и вперед с песней
>>
>>И получаем неконсистентный дамп, который нахрен никому не нужен.
>
>Пачему?В момент снятия дампа может случиться запись в две и более связанных между собой таблицы, часть из которых уже снята, а часть ещё нет => теряем связность. И зачем мне такой бекап?
>[оверквотинг удален]
>>>>> options affected
>>>>>by --opt.
>>>>
>>>>ну дык тода отрубаем блочку, nice 20 и вперед с песней
>>>
>>>И получаем неконсистентный дамп, который нахрен никому не нужен.
>>
>>Пачему?
>
>В момент снятия дампа может случиться запись в две и более связанных между собой таблицы, часть из которых уже снята, а часть ещё нет => теряем связность. И зачем мне такой бекап?ето мож если и актуально, то только для innodb
для myisam по моему эта тема както пофегу, учитываю что практически весь контроль связанности выполняется приложением. Темболее речь про игровой серв.
>[оверквотинг удален]
>>>>
>>>>И получаем неконсистентный дамп, который нахрен никому не нужен.
>>>
>>>Пачему?
>>
>>В момент снятия дампа может случиться запись в две и более связанных между собой таблицы, часть из которых уже снята, а часть ещё нет => теряем связность. И зачем мне такой бекап?
>
>ето мож если и актуально, то только для innodb
>для myisam по моему эта тема както пофегу, учитываю что практически весь
>контроль связанности выполняется приложением. Темболее речь про игровой серв.Какое имеет значение тип таблиц?
Наименования берутся из таблицы t1, описания из таблицы t2. Описания есть, наименований нету (или наоборот). Приложение, как минимум, сильно удивляется этому и может начать выражацца страшными словами.
В общем, я считаю, что лучше не рисковать, хоть и сервак игровой.
>[оверквотинг удален]
>>
>>ето мож если и актуально, то только для innodb
>>для myisam по моему эта тема както пофегу, учитываю что практически весь
>>контроль связанности выполняется приложением. Темболее речь про игровой серв.
>
>Какое имеет значение тип таблиц?
>Наименования берутся из таблицы t1, описания из таблицы t2. Описания есть, наименований
>нету (или наоборот). Приложение, как минимум, сильно удивляется этому и может
>начать выражацца страшными словами.
>В общем, я считаю, что лучше не рисковать, хоть и сервак игровой.innodb поддерживает транзакции.
myisam - нет. В myisam итак не проблема порушить целостность любым глюком - допустим идет запись в 3 таблице последовательно, в момент записи во вторую сервак упал - все - целостность нарушена.
И вопрос скорее всего не в целостности, а в инструментах ее восстановления.
>[оверквотинг удален]
>>>контроль связанности выполняется приложением. Темболее речь про игровой серв.
>>
>>Какое имеет значение тип таблиц?
>>Наименования берутся из таблицы t1, описания из таблицы t2. Описания есть, наименований
>>нету (или наоборот). Приложение, как минимум, сильно удивляется этому и может
>>начать выражацца страшными словами.
>>В общем, я считаю, что лучше не рисковать, хоть и сервак игровой.
>
>innodb поддерживает транзакции.
>myisam - нет. В myisam итак не проблема порушить целостность любым глюкомИ что, что поддерживает? mysqldump тупо делает селекты, проходя последовательно каждую таблицу, и в случае, если база не залочена, и в момент снятия бекапа
>- допустим идет запись в 3 таблице последовательно, в момент записи
>во вторую сервак упал - все - целостность нарушена....и тип таблиц не имеет никакого значения -- мы имеем проблемы.
>И вопрос скорее всего не в целостности, а в инструментах ее восстановления.
>...и правильного снятия дампа.
Транзакция не может быть выполнена частично, так что если приложение использует транзакции, то описанной вами проблемы не будет. Если транзакции не используются, то единственный вариант получения логически верного дампа это корректная остановка всех приложений. Имеет смысл при переносе базы, но абсолютно не актуально для бекапа, так как восстановление с бекапа подразумевает наличие намного более серьезных потерь.
>При администрации игрового сервера, когда mysql база разрослась до больших размеров(2gb в
>дампе) возникла некая проблема. Дело в том, что во время выполнения
>бэкапа(mysqldump) игровой сервер, как и все его игроки повисает на пару
>минут, пока mysqldump не отработает до конца.
>
>Не знает ли кто-нибудь более безболезненную процедуру архивации, которая не будет вызывать
>продолжительных подвисаний?Честно говоря, не знаю поможет или нет (мне очень помогло,все зависит от того какие данные хранятся в таблице и как часто они меняются) - если происходит частая вставка и удаление, то может помочь такая утилитка как mysqltuner - покажет что нужно подкрутить - очень хорошая статья - http://web-scalability.com/category/database/mysql/ . Кроме того хотя бы раз в неделю делать - optimize table для таблиц.
конечно могу быть не оригинальным , но у меня была похожая тема (толкьо база не 2 гига , а 22) всё работает на иннодб у меня была идея через селекторы LOCK TABLE WRITE пульнуть на таблицы под именем от которого идёт дамп (ну через пхп скрипт) и спокойно снять дамп , после чего другим скриптом пульнуть UNLOCK TABLE .
До реализации пока не довёл :) но идея осталась
(сразу говорю что после входа по юзером user1 и послать LOCK TABLE t_1 WRITE; , то сам этот юзар будет иметь полную власть над таблицами , а вот ругие будет вставать в очередь (на запись) пока не будет под тем же юзеров UNLOCK TABLE t_1;
(попробую вдруг пможет) при бузе в 2 гига (смешной размер) дамп снимается минут за 5 - 10 .
так же советую снимать дамт не в формате *.sql , а *.sql + *.txt (это делается так :
mysqldump NAME_DB -q -T /pach/(тут у папки должно быть права 777) -udump -ppass
после чего в папке будет по каждой таблице 2 файла (*.sql фаил с командой дропа/создания таблицы и *.txt фаил где через табуляцию забиты все данные из таблицы).
Приимущество данного дампа в скорости снятия и заливания (правда придётся ручками заливать дам обратно через mysqlimport (сперва *.sql фаил через mysql BASE < *.sql , потом mysqlimport --delete -u -p -L /path/*.txt (имена тхт должны совпадать с именами таблиц) , всё происходит очень быстро и удобно .