← All posts tagged mariadb

Balancer

Похоже, нужно возвращаться к идее индивидуальных серверов БД в LXC-контейнерах. С одной стороны, это заметный оверхед по памяти/кешам, из-за которых я и пришёл к идее использования общей БД на хосте для всех контейнеров, с другой стороны, начинается каша при попытке многосторонней репликации баз данных и лишний геморрой при переносе контейнера на другой сервер. Когда всё в локальной БД контейнера, то этот контейнер можно тупо запаковать и перебросить куда надо целиком.

Единственное, над чем надо ещё подумать, делать ли LXC-контейнер полностью автономным или держать два отдельных контейнера для БД и для сайта. Во втором случае получаются лишние сущности, но процесс переноса можно разделить на этапы.

Balancer

Своеобразное первое крещение огнём. 6 дней назад отвалилась master-master MySQL репликация на вторичный сервер. Посколько он не используется, а я на выходных мотался на свадьбу к родственникам, то заметил это только вчера. Отставание от мастера превышало 400000+ секунд (5 суток), а время хранения бин-логов на сервере — 3 суток. Классическое решение в этом случае — mysqldump (или percona xtrabackup, что не сильно лучше и много сложнее) и возобновление репликации.

Поступил иначе. Возобновил репликацию с начала первого доступного файла бинлога, и провёл синхронизацию проблемных (по целостности внешних ключей) данных через pt-table-sync. Всё решилось онлайн, без простоев :)

Balancer

Пришёл к идее, что, если удастся нормально настроить под MariaDB произвольную мастер-мастер репликацию индивидуальных БД (т.е. разные БД — на разные сервера), то надо нафиг выносить MariaDB из контейнеров («в каждом своя») на хост. Достало оверхедить памятью :)

Balancer

И хотя я планирую активно перелезать в облака с контейнерами, на новый домашний сервер поставить не CoreOS, как планировал а Ubuntu Cloud Server. Те же уши, но решение проверенное уже многими и за долгий срок. Кстати, первая моя установка Ubuntu на свою серверную железку :D До этого на своих была всегда Gentoo, а Ubuntu была на чужих (Hetzner и DigitalOcean).

Ubuntu Server взывала странные чувства. Репозитории сетевые не подключила, только CD-ROM. После перезапуска даже nano не было установлено. Хотя полтора гига сожрало. Доустановил nano с диска (т.е. с USB-флешки), прописал репы, обновился, поставил mc — жить можно, дальше всё как привычно :D

Хотел было MariaDB воткнуть в Docker и организовать персистентное хранилище, а потом подумал — а нафига? Всё равно ресурсов будет жрать столько, что больше одного инстанса ставить смысла мало, проще на хосте и поставить (привет CoreOS, там так не сделать) и уже оттуда пользоваться всем, кому нужно. Тем более, что, как я понял, в MariaDB сделали возможность репликации разных баз на разные сервера (единственная для меня причина по которой тяжёлый MySQL имело смысл ставить в нескольких инстансах в контейнерах).

Да и обновляться так будет проще.

Вообще, вопрос обновления — самый больной для Docker. Не рассчитан он на обновления :-/ Каждый раз придётся взвешивать тщательно, что приоритетнее, лёгкое разворачивание и автономность или поддержка/обновления.

Balancer

Сегодня рискнул обновить свой последний MySQL на MariaDB на самой жирной БД (/var/lib/mysql на 37Гб). Кажется, больше MySQL нигде не осталось :) Пойду теперь разбираться с мастер-мастер репликацией, чтобы больше не городить мастер-мастер кольца.