Rsync MariaDB Папка с данными Docker Безопасно? - PullRequest
1 голос
/ 01 октября 2019

Я ищу некоторое понимание того, будет ли rsyncing копия папки с данными из MariaDB, хорошо работающей в докере, обеспечить полезную резервную копию. Я развертываю несколько контейнеров с сопоставленными папками в производственной среде, используя docker.

Я думаю об использовании rsnapshot для ночных резервных копий, так как он использует жесткие ссылки постепенно, и я могу указать количество еженедельных / ежедневных / ежемесячных копийсохранить. Для кода и фактических файлов я подозреваю, что это будет работать чудесно.

Для MariaDB я мог запускать mysqldump каждую ночь, но при этом каждый раз по существу использовалась бы новая копия базы данных вместо инкрементной. Если бы я мог rsync папку с данными и был бы на 100% уверен, что резервная копия была бы полностью неповрежденной, я бы предпочел, чтобы это было выгодно. Есть ли вероятность, что этот метод резервного копирования потерпит неудачу, если данные были записаны во время rsync? Будут ли все файлы в MariaDB меняться при ежедневном использовании (если это не выгодно)?

1 Ответ

1 голос
/ 01 октября 2019

Это, вероятно, частый вопрос, но я сейчас не могу найти действительно точное совпадение.

Ответ: НЕТ - вы не можете использовать инструменты копирования на уровне файловой системысоздать резервную копию базы данных MySQL, если процесс mysqld не остановлен. В среде Docker можно ожидать, что контейнер остановится, если остановится процесс mysqld.

Даже если не выполняется никаких запросов, механизм InnoDB, вероятно, выполняет записи в фоновом режиме, чтобы сбросить страницы из памяти в табличное пространство. , очистить откат транзакций или завершить некоторые отложенные слияния индексов.

Если вы попытаетесь использовать rsync или cp или любые другие инструменты уровня файловой системы для копирования файлов InnoDB, вы будете только поврежденыфайлы, которые не могут быть восстановлены.

Некоторые люди используют моментальные снимки LVM, чтобы получить атомарный снимок всей файловой системы за одно мгновение, и это можно использовать для быстрого резервного копирования.

Другим полезным инструментом является Percona XtraBackup, который копирует файлы табличного пространства InnoDB, а также постоянно копирует журнал транзакций InnoDB. Только с обоими из них в синхронизации может быть восстановлена ​​резервная копия. Прочитайте документацию здесь: https://www.percona.com/doc/percona-xtrabackup/LATEST/index.html

На моей текущей работе мы используем Percona XtraBackup для создания ночных резервных копий для тысяч экземпляров MySQL. Мы запускаем Percona Server (не MariaDB) в модулях Docker, а Percona XtraBackup запускается как другой контейнер в модуле. Он работает очень хорошо, и это бесплатное программное обеспечение с открытым исходным кодом.

...