Как стать автором
Обновить

Комментарии 37

Центосы админите, а скрипты пишете в Винде? Поправьте символы конца строки.
НЛО прилетело и опубликовало эту надпись здесь
Скрипт копировался из консоли.
Ткните носом, пожалуйста, где символы конца строки нужно поправить, не вижу.
НЛО прилетело и опубликовало эту надпись здесь
Да, Вас я понял.
Правлю уже.
Админить центосы из под винды — преступление? )
Нет конечно. А передергивать нехорошо.
Не знаю кто минусанул автору. Думаю данный пост очень хороший пример организации резервного копирования.
из разряда — прочитал-повторил-профит.
Спасибо за статью. На базе этого «скелета» можно делать свои варианты автоматизации бэкапа.
mysqldump прошлый век, взгляните на www.percona.com/software/percona-xtrabackup
П.С. да, этим инструментом сразу не получишь .sql dump, но зато на больших объемах данных, нагрузки на IO в разы меньше. Да и по времени бекап делается быстрее.
Это решение мы тоже используем.
Описали пока именно старый и проверенный метод, используемый много лет.
Напишите мануал как восстановить такой бекап «с нуля». Я нагуглил много чего, но по факту так и не смог восстановить. Базу не видно после рестарта. Наверно упускаю что-то очевидное.
Что имеется в виду под восстановлением «с нуля»?
Расскажите подробнее, пожалуйста.
На новом сервере.
Напишем отдельный мануал по восстановлению бэкапа на новом сервере.
Бекапим:
/usr/bin/innobackupex-1.5.1 --use-memory=1G --user=USER --password=PASS /db_backup/mysql --no-timestamp
/usr/bin/innobackupex-1.5.1 --use-memory=1G --user=USER --password=PASS --apply-log /db_backup/mysql

Если Вам нужно вытащить sql то вот:
mysql_install_db --basedir=/usr/local/mysql --datadir=/tmp/data
mysqld --basedir=/usr --datadir=/tmp/data/ -P 3307 &
echo $! > mysql.pid
mysql -uroot -P 3307
mysqlcheck -P 3307 --user root --all-databases
mysqldump -uroot -P 3307 an_app > dump.sql
kill `cat mysql.pid`

Eсли нужно сразу восстановить все базы, без генерации sql, то после apply-log, перемещаете директорию в /var/lib/ (либо в директорию которая прописана в конфиге mysql — datadir)
Вот статья
Надеюсь, поможет.
Сообщите, пожалуйста, результат.
Посмотрите внимательно код — там есть поддержка xtrabackup.
Не проще ли было бы дать ссылку на GitHub-репозиторий с этими скриптами? Например, я хочу воспользоваться вашим решением. Мне копировать и собирать скрипты в ручную из поста? Не самое удобное решение, мягко говоря.
Извините, в репо этого скрипта нет.
Как только разместим — сообщу.
А воз и ныне там, почему не разместили на GitHub или хотябы в архив и на файлобменник?
Готовим скрипты. Сразу все накопленное разместим.
Сообщу отдельной новостью как только будет все готово.
Не разместили еще?
нашел )
Такие решения обычно простым копированием себе в проект не портировать. Это не готовый набор скриптов которые взял и поставил. Поэтому как ни крути, придется кусками копировать к себе с полным разбором, а что делают приведенные строки.
Зашёл сказать, что первая картинка замечательна.
Зашел только из-за первой картинки.

По теме: очень похожее решение использовали на моей предыдущей работе(в nixys.ru). Даже названия переменных иногда совпадают). Возможно, всем сисадминам-аутсорсерам стоит объединить усилия в одной компании? :)
Возможно, это будет полезно)
Только непонятно пока как правильно начать взаимодействие.
Придти с улицы: «Здрассте, давайте работать вместе», как-то неприятно выглядит, я считаю)
Интересно, почему все (ну хорошо, большинство) мучаются с бекапами MySQL на продакшене? Таблицы лочат и занимаются прочей противоестественной деятельностью, ведущей к деградации производительности на сервере.

Ведь есть вполне нормальный способ: поднимаем связку master-slave, и уже со slave делаем бекапы. Все довольны: и производительность не страдает, и в процессе бекапа с сервером можно делать что угодно и как угодно и на худой случай всегда имеем «горячую копию» в виде этого самого слейва…
К сожалению, не всегда есть возможность поднять репликацию.
Когда она есть — то, конечно, используется slave для бэкапа.
Вы не поверите, но иной раз попадаются клиенты, которые могут заказать екоммерс за пару млн, а когда дело доходит до архитектуры и серверах, они начинают выпучивать глаза и говорить — «а зачем нам 3 сервера?»
А это уже дело исполнителя — рассказать клиенту, что он в итоге получит и сколько ему встанет отсутствие 3го сервера. Обычно такие люди очень неплохо бабло считают. А вот ИТшники очень редко умеют говорить что-то кроме «надо больше серверов» :)
Для слэйва и слабенькой виртуалки достаточно. А на нормальном продакшене не реально дампами пользоваться.
Требования разные бывают. Причин, по которым нельзя задерживать сервер БД для бэкапа совсем мало, и у многих таких причин нет. Ночью, как правило, сервер простаивает и задержка в работе БД никого не побеспокоит. Тем более, лок делается только на запись, а чтение выполняется как обычно.

А держать слейв ради бэкапов — это хоть и мелкая, но деградация производительности мастера, дополнительные затраты на еще один сервер и его обслуживание, плюс обеспечение не только того, чтобы бэкапы делались правильно, но и того, чтобы мастер-слейв корректно реплицировался и не разваливался. Для всех (ну хорошо, большинства :) такая морока не оправдана.
Когда дело доходит до бэкапа своих баз, каждый изобретает свой велосипед.
Давно ищу комплексное решение для бэкапа БД на linux сервере. Хочется, чтобы все удобно настраивалось и работало из коробки.
Резервное копирование с помощью вороха самописных bash-скриптов не вызывает у меня доверия.
>tar -czvf "$1.tgz". 2>&1
>tar -cjvf "$1.tbz2". 2>&1

tar давно умеет понимать тип сжатия по расширению, с помощью -a
tar -cavf "$1.tgz". 2>&1
tar -cavf "$1.tbz2". 2>&1

итд
Зарегистрируйтесь на Хабре, чтобы оставить комментарий