Решение здесь двоякое, как описано выше:
- Настройте репликацию вашего сервера на подчиненное устройство, которое вы можете отключить. Лучший способ сделать это - получить дамп базы данных, используя mysqldump и параметр --master-data.
- Настроить ночные резервные копии на раб. Вы можете либо использовать mysqldump с флагами --master-data --flush-logs и --single-транзакции, либо остановить сервер mysql, скопировать файлы данных на диск и перезапустить его (репликация будет это прекратилось).
- Запускайте скрипт на ведомом устройстве каждые (например, 5, 10, 20 минут), чтобы проверить и убедиться, что mysql все еще реплицируется. Я написал для этого простой скрипт на python , который вы можете использовать.
Обратите внимание, что если вы используете InnoDB для своих таблиц, вы можете использовать флаг --single -action, чтобы избежать необходимости делать какие-либо блокировки таблиц и при этом получать согласованный дамп базы данных, даже на главном сервере, и, следовательно, выполнять резервное копирование без снятия сервера. Вышеупомянутое решение, однако, является лучшим.
Кроме того, если вы используете LVM в Linux, вы можете сделать снимок LVM раздела, а затем создать резервную копию. Снимки LVM являются атомарными, поэтому, если вы выполните «очистку таблиц с помощью блокировки чтения», а затем сделаете снимок и разблокируете его, вы получите согласованный снимок.
Если вас беспокоит конфликт ввода-вывода, из-за которого дамп занимает слишком много времени, вы можете добавить третью машину и запустить на ней mysqldump по сети, чтобы избежать перегрузки дисков.