Какую программу использовать для резервного копирования MySQL большого объема без лока базы?

Есть mysql+nginx веб-сервер под статистику. Раз в сутки Mysqldump при объеме базы >1 Гб намертво лочит сервер минут на 5-10, что достаточно неприятно. Вариант с простым dump&restore не подойдет из-за наличия innodb таблиц, какие есть еще альтернативы?

Отдельно копировать по таблицам неинтересно, т.к. главная таблица статистики >50% объема базы. Выделенный/дублирующий сервер под базу не предлагать, машина всего одна.
  • Вопрос задан
  • 4379 просмотров
Пригласить эксперта
Ответы на вопрос 8
Wott
@Wott
вообще стандартное средство в таких случаях — поднять slave и с ним делать все что надо
Ответ написан
Комментировать
pr0tect0r
@pr0tect0r
mysqlhotcopy
набор Maatkit (Percona toolkit)
Утилита mk-parallel-dump делает снимок (дамп) таблиц и баз данных в параллельном режиме. Применяемая в паре с ней mk-parallel-restore, — загружает ранее сделанные резервные дампы. Главное отличительное свойство этих утилит от штатных средств и методов MySQL — использование параллельных методов доступа к базе данных, что заметно повышает скорость выполнения операции.

И, наконец, более сложный и избирательный вариант бэкапа представляет mk-archiver — эта утилита выгружает записи, отобранные по заданному критерию, с одной таблицы MySQL в другую, этого же (или любого другого) MySQL-сервера, либо — в указанный файл. Утилита спроектирована с учетом очень простой возможности его расширения (подключение своих постпроцессов и предварительных фильтров) и добавления собственной логики сохранения данных.
Ответ написан
@zuborg
посмотрите ещё на Percona XtraBackup, может пригодится
Ответ написан
Комментировать
Можно решать вопрос на уровне файловой системы с помощью snapshot'ов
en.wikipedia.org/wiki/Snapshot_%28computer_storage%29#File_systems
en.wikipedia.org/wiki/Shadow_Copy
Принцип copy-on-write: когда вы делаете копию файла, он ссылается на те же блоки, что и исходный, но если какой-то блок файла начинает модифицироваться, этот блок реально копируется.
Ответ написан
serjs
@serjs
Если на сервере используется lvm то лок транзакций на сервере бд, проверка что текущие транзакции завершились, сделать lv снапшот, убрать лок, перенести данные куда нужно паралельно сжимая их и не забывать подчищать снапшоты чтобы ио не проседал в итоге.

xtrabackup если начинать использовать то сразу на перконовский стек переходить, но нужно учитывать все особенности работы форка в виде плюшек — инкременты, более быстрый бекап/откат
Ответ написан
Nastradamus
@Nastradamus
Странно… у меня база 1.5 гига, тоже статистика — основное что там есть (bitrix). НО после перехода на innodb mysqldump перестал вешать сайт.
Ответ написан
@Push_Ok
самый простой способ, это репликачия мастер мастер, можно и мастер слейв, и со второго мастера\слейва только снимать дапм =)
Ответ написан
Комментировать
linjan
@linjan
Percona Toolkit предоставляет утилиты xtrabackup, которая работает с InnoDB таблицами без блокирования таблиц. Крайне рекомендую.
Percona XtraBackup is an open source, free MySQL® hot backup software that performs non-blocking backups for InnoDB and XtraDB databases. With Percona XtraBackup, you can achieve the following benefits:

Backups that complete quickly and reliably
Uninterrupted transaction processing during backups
Savings on disk space and network bandwidth
Automatic backup verification
Higher uptime due to faster restore time
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы