LINUX.ORG.RU
ФорумAdmin

MySQL, MyISAM, InnoDB, Репликация, где выход?


0

3

приветствую! Глубокоуважаемый Олл.

Изгуглил весь интернет но решения проблемы пока не отискал.

Есть сервер который нельзя остановить но надо облагородить. На сервере дамп баз с помощью mysqldump занимает 8Gb и идет около часа, однако файл ibdata содержащий базы занимает уже 120Gb. Место на сервере катастрофически заканчивается.

Хотел устроить репликацию сервера сделать мастером другую машинку и заняться с основным, однако как я понял такая штука как Position используемая в репликации это глобальная переменная на весь сервер и репликацию можно сделать только для всех баз разом. Вариантов добавлять базы в репликацию не увидел. Останавливать систему дважды на полную репликацию туда-сюда весьма напряжно, операция длительная.

Неужели выход только в том, чтобы создавать еще пару серверов в репликации и переносить базы по одной на новые сервера банальным mysqldump и ftp/scp?

Помнится во времена использования postgresql репликацию делал без остановки серверов... и было это лет 5 назад, неужели MySQL за это время не вырос из этой детской проблемы? Ведь innodb заявляется поддерживающей транзакционную модель, значит можно сделать снапшет который будет консистентный и уже относительно его Position и делать дальнейшую репликацию.

В общем я фффшоке.

Олег.

★★

На сервере дамп баз с помощью mysqldump занимает 8Gb и идет около часа, однако файл ibdata содержащий базы занимает уже 120Gb. Место на сервере катастрофически заканчивается.

Как я понимаю, вариантов сделать снапшот (напр., LVM) каталога с данными на ентом «сервере» - нету?

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

replicate-do-db= ?

myhand ()

На сервере дамп баз с помощью mysqldump занимает 8Gb и идет около часа, однако файл ibdata содержащий базы занимает уже 120Gb

по-моему, это ненормальная фигня. Точно все базы и таблицы дампятся? Файл ibdata растёт? Если нет то значит он один раз разросся, а шринкаться оно не умеет.

true_admin ★★★★★ ()

1. Сделать дамп полный 2. Включить innodb file per table 3. Удалить ibdata 4. Влить дамп обратно

blind_oracle ★★★★★ ()
Ответ на: комментарий от myhand

Как я понимаю, вариантов сделать снапшот (напр., LVM) каталога с данными на ентом «сервере» - нету?

При чем тут снапшот? Интересует репликация.

replicate-do-db= ?

Ключевое слово было «разом» но в другом контексте. Если список баз изменяется то ситуация не понятная. Вариантов много, но надо экспериментировать потому я сюда и обратился - возможно кто то знает тонкости и подскажет.

Вот скажем указал я в replicate-do-db новую базу, рестартанул сервер, создал базу. Она отреплицируетсясама? Или как то нужно создать эту базу на обоих серверах и принудительно сказать что она уже синхронизирована? Ведь пустая и значит одинаковая. А потом уже на мастер серввере залить в нее дамп и будет полная синхронизированная база?

n0mad ★★ ()
Ответ на: комментарий от true_admin

Отделался ночью дауна.

по-моему, это ненормальная фигня. Точно все базы и таблицы дампятся? Файл ibdata растёт? Если нет то значит он один раз разросся, а шринкаться оно не умеет.

Я согласен с ненормальной фигней. Что значт: «Точно все базы и таблицы дампятся?» Это про занимающий 8Gb дамп? Тупо скрипт создающий другой скрипт с использованием «show databases». ibdata почему то рос, и далеко не 1 раз а по 2Gb в день. Причем это не «активные данные» а мусор. Теоретически база должна была держаться в районе 10Gb, ну пусть 20Gb... но никак ни 130 Gb. Впрочем теперь innodb_file_per_table и каждая innodb база живет в отдельных файлах.

В результате катастрофического уменьшения места пришлось тупо задаунить сервер и импортировать базы, репликацию настраивать не стал. База с 130Gb уменьшилась до 10Gb тупым удалением всего MySQL и накатывание его снова, ибо после удаления ibdata он запускался, создавал его пустым/маленьким но при попытке сделать /etc/init.d/mysql restart не стартовал.

Сервер виртуальный, особой производительности не ожидал но xen совсем испоганился. Стоит citrix xen server 5.6.0. Залез в хост систему ssh и офигел: uname -a = Linux hbshot 2.6.27.42-0.1.1.xs5.6.0.44.111158xen #1 SMP Mon May 3 21:26:51 EDT 2010 i686 i686 i386 GNU/Linux Непонятно почему ядро 32 bit. В итоге машинки пускает и 32 и 64 bit в HVM режиме, но это тормозной режим. XEN aware 32битное ядро работает и летает. Скорость dd в HVM режиме 6 Mb/Sec в XEN 68 Mb/sec. Пытался поставить 64 bit XEN ядро , но с ним не взлетает, и родное для debian linux-image-xen ставил и из XenServer Tools - оба не пускаются, приходится жить в HVM но это ужас.... Уменя уже более суток импортируется 6Gb база. Остальные базы вместе занимающие 2Gb импортировались за приемлемое аремя, а эта за предыдущие 26 часов бинарный размер 3.6Gb и процесс все идет. Я грешу на то что я ее из MyISAM решил в InnoDB сделать. Впрочем «Раз пошла такая пьянка - режь последний огурец» сейчас запустил еще импорт файла сделав перед этим $sed «s/InnoDB/MyISAM/g» посмотрь как этот импорт в параллель отработает. Импортирую естественно в другое имя базы :) (Добавочка: пока пишу это сообщение, MyISAM вариант базы вырос до 2gb за 20 минут. С такой скоростью еще 40 минут и база зальется, это не 26 часов потраченные innodb).

Репликацию пока отложил, решил удариться в MySQL кластер, но к сожалению в репозитории debian нет кластерного MySQL, только с оракла бинарную сборку тащить и прикручивать сбоку. Решил не этот сервер мучать а сделать новый комплект и перенести базы на него. Благо по мануалам MySQL Cluster сервера есть такое понятие как «client» так вот его можно поставить локально на текущую машинку и все сервисы как и раньше будут общаться с localhost а реально это будет кластер из других машин.

Всех благ, Олег.

n0mad ★★ ()
Ответ на: комментарий от blind_oracle

1. Сделать дамп полный 2. Включить innodb file per table 3. Удалить ibdata 4. Влить дамп обратно

Хорошая пошаговая инструкция :) Однако о репликации задумался пытаясь сделать работу с нулевым даунтаймом потому не катит этот вариант, к тому же «влить дамп» штука забавная. Я при заливе самую большую базку решил залить не в виде MyISAM табличек а в виде InnoDB табличек и она загружается (6Gb) уже 30 часов, загрузилось 3.6Gb. я наивно полагал что в InnoDB формате операции с этой базой будут быстрее но практика показывает что все с точностью до наоборот. Не знаю как выборки но MySQL вариант залил уже 3Gb за 30 Минут работы.

Осталось поднять MySQL кластер с CDB сторейжем и посмотреть производительность.

n0mad ★★ ()
Ответ на: Отделался ночью дауна. от n0mad

Уменя уже более суток импортируется 6Gb база

индексы строит. смотри show processlist или как его.

в репозитории debian нет кластерного MySQL

да поставь руками через checkinstall или пересобери то что есть через deb-src.

От hvm избавляйся :).

А что за версия мускла?

true_admin ★★★★★ ()
Ответ на: комментарий от n0mad

У тебя либо очень много строк в таблицах, либо очень медленный сервер. У меня базу заббикса, в которой почти 100 миллионов строк и размером она гигов 10, закачивает ну максимум за пару часов. Сервер - старенький HP DL380G5, винты 8x146Gb RAID10 10k.

А чтобы без даунтайма расширять место, нужно пользоваться внешними СХД и файловыми системами, поддерживающими онлайн-расширение. Ну и изначально надо было знать, что ibdata не сжимается.

blind_oracle ★★★★★ ()
Ответ на: комментарий от true_admin

индексы строит. смотри show processlist или как его.

Как показывается что индексы строит? У меня там 3 Экрана записей.

Руками пересобрать попробую, но пока не в материале.

От hvm избавляйся :)

Легко сказать, сложнее сделать :) 32 битные ядра стартуют и работают,
64 битное нет. К тому же все кроме xen фактически тот же HVM, исключение лишь OpenVZ но там свопа нет в принципе. Есть планы потихоньку переползать в сторону KVM, впрочем там все тот-жк HVM :) Впрочем в ВМ запись на hdd=120Mb/s а чтение гигабайтового записанного файла = 10Gb/s. Вот на новых машинах хочется поставить MySQL сразу в кластерном режиме/репликации. Надеюсь в будущем избежать простоев баз при обслуживании узлов кластера.

n0mad ★★ ()
Ответ на: комментарий от n0mad

Еще, возможно, у тебя иннодб постоянно дёргает ibdata на расширение. Сделай innodb_file_per_table

blind_oracle ★★★★★ ()
Ответ на: комментарий от n0mad

5.0.5

это же ппц старье... Конечно там вагон граблей. Оно нормально начало работать, если не изменяет склероз, где-то после 5.0.27. А от такого мускля всего что угодно ожидать можно.

true_admin ★★★★★ ()
Ответ на: комментарий от n0mad

К тому же все кроме xen фактически тот же HVM

kvm нормально работает, пара-драйвера есть. Если верить форониксу перформанс там в среднем такой же.

true_admin ★★★★★ ()
Ответ на: комментарий от n0mad

Как показывается что индексы строит?

будет слово index. repairing index, rebilding index, я хз, уже не помню.

true_admin ★★★★★ ()
Ответ на: комментарий от blind_oracle

закачивает ну максимум за пару часов

от индексов всё зависит. Залить в базу данные не проблема, проблема текстовые индексы.

true_admin ★★★★★ ()
Ответ на: Отделался ночью дауна. от n0mad

короче, если есть возможность, делай реинстал со свежим софтом (предварительно где-нить потестив).

true_admin ★★★★★ ()
Ответ на: комментарий от blind_oracle

У тебя либо очень много строк в таблицах, либо очень медленный сервер

И то и другое вместе взятое. Сама железка хорошая но сервер крутится в Citrix XEN. Крутятся и другие машинки, но загрузка сервера %25. Я писал, но еще раз отмечу что имела место заливка в InnoDB таблицы. Самая большая табличка 33 миллиона записей. В InnoDB закачивалась 33 часа а потом сказала «ERROR 2013 (HY000) at line 1129: Lost connection to MySQL server during query». При этом параллельно на 30 часу запустил дамп в котором InnoDB заменил на MyISAM - он залился за 3ч 15 мин, однако заливал в базу с другим именем а теперь уже нельзя перименовывать базу в MySQL. Запустил заливку в старое имя.

А чтобы без даунтайма расширять место, нужно пользоваться внешними СХД и файловыми системами, поддерживающими онлайн-расширение.

Нафига козе баян? Там данных на 10Gb. То что формат растет неконтролируемо вот это косяк.... Внешних СХД пока не достиг. В минимальном максимуме это удаленная система. Вон у того же hetzner замечательная машинка EX6 за 69Е, но приделать туда внешние СХД это думаю будет стоить и денег и нервов.

Ну и изначально надо было знать, что ibdata не сжимается.

Я не программер, а код пишут программеры. Именно они определяют формат хранения. Даже кластерный вариант MySQL не будет кластерить базы в InnoDB и MyISAM фыорматах. только в NDB формате и если кто то из программеров сделает табличку MyISAM или InnoDB - они будут локальными.

n0mad ★★ ()
Ответ на: комментарий от blind_oracle

Еще, возможно, у тебя иннодб постоянно дёргает ibdata на расширение. Сделай innodb_file_per_table

Сделал. Изначально это и хотел но подняв зеркальный сервер чтобы даунтайм сократить. В итоге На всю ночь база встала. На время проведения этих манипуляция, да и по 100 мегабитной сети надо было эти 130Gb забэкапить на всякий случай.
В итоге пока еще одну базу так и не поднял. Но часа через 3 думаю встанет.

n0mad ★★ ()
Ответ на: комментарий от true_admin

это же ппц старье... Конечно там вагон граблей. Оно нормально начало работать, если не изменяет склероз, где-то после 5.0.27. А от такого мускля всего что угодно ожидать можно.

Не я систему ставил, это наследство. Меня перед фактом поставили и как всегда «делай как хочешь, но чтобы работа не прерыввалась».

Пока основная головная боль поставить кластерный MySQL, жаль не нашел пока пакетов для Debian squeeze, а оракловы бинари не в дерево системное ставятся а в отдельный катлог куда потом надо много завернуть.

Спасибо за советы.
Олег.

n0mad ★★ ()
Ответ на: комментарий от true_admin

kvm нормально работает, пара-драйвера есть. Если верить форониксу перформанс там в среднем такой же.

Я это понимаю. Взяли уже машинку у hetzner, у них там даже образ Proxmox есть, его и вкрячил. Осталось сделать неправильный кластер (3 машинки на одной) и в случае нормальной работы брать в аренду еще машинок для резервирования по железу.
Затык пока в установке кластерного MySQL а потом поверх этого еще в прикручивании какой то бесплатной панели управления (руководство любит поадминить, но чтобы удобно было и небыло привязки ко мне). Там еще свои сайты хоститься буду и почтой на их домены тоже надо рулить и чтобы удобно :) - парой кнопочек.

n0mad ★★ ()
Ответ на: комментарий от true_admin

короче, если есть возможность, делай реинстал со свежим софтом (предварительно где-нить потестив)

Уже, на hetzner поставил Сервер ВМ и 4 виртуальных машинки. Залил 3 Debian Squeeze и 1 Elastix Теперь озадачиваюсь облагороживанием этого. Затем плавно сервисы переносить. Посмотрим что с производительностью будет

n0mad ★★ ()
Ответ на: комментарий от n0mad

это наследство

руководство любит поадминить

писец... это наихудший вариант - старье которое админило куча людей + любопытное руководство.

Там еще свои сайты хоститься буду и почтой на их домены тоже надо рулить и чтобы удобно :) - парой кнопочек.

поставь ispmanager, самая адекватная панель из всех.

true_admin ★★★★★ ()
Ответ на: комментарий от true_admin

поставь ispmanager, самая адекватная панель из всех.

Спасибо за наводку, учту если будет решение брать платную панель.

Из бесплатных что то можно сказать по поводу нижеуказанных ?

1.ISPcp Omega (VHCS Fork)
2. Domain Technologie Control (GPLHost)
3. ISPConfig
4.Openpanel
Интересно еще оценить Webmin/Usermin/Cloudmin в основном по причине заинтересованности в Cloudmin - хочется какой то панели для kvm.

Из альтернатив пока все делать ручками :)

n0mad ★★ ()
Ответ на: комментарий от n0mad

не, по бесплатным не подскажу. Скажу только что webmin внутрях был ужасен и security history у него не очень хорошее и ispconfig мне не понравился. И интерфейс у него пять лет назад был ужасный, а функционал местами слабоват (не смотря на обилие кнопочек).

Но «объективного» сравнения я не проводил.

true_admin ★★★★★ ()
Ответ на: комментарий от n0mad

1.ISPcp Omega (VHCS Fork)

Недавно новость пробегала про очередной форк, уже для «Омеги» - EasySCP.

В целом «Омега» вполне юзабельна, если потратить немного времени на приведение ее в порядок (права доступа и т.п.)

YAR ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.