Я использую большой экземпляр AWS RDS для производства. Я принимаю mysqldump каждый день в полночь. Но получение дампа mysql занимает слишком много времени, и веб-сайт не отвечает во время процесса дампа mysql. Вместо того, чтобы делать дамп mysql, теперь я делаю снимок БД каждый день.
Мой вопрос
Есть ли другой способ скопировать моментальный снимок дампа БД в локальный ящик, чтобы у меня была его резервная копия каждый день?
Я бы посоветовал проверить Percona XtraBackup (innobackupex
). Убедитесь, что все ваши таблицы данных относятся к типу движка InnoDB, потому что MyISAM не поможет вам приблизиться к решению без блокировки всех таблиц.
XtraBackup может делать онлайн-резервную копию работающей базы данных с минимальным влиянием на производительность и минимальным временем блокировки. Прочтите документацию перед тем, как начать.
Если вам нужна полная резервная копия / моментальный снимок без каких-либо последствий, вы можете рассмотреть вариант установки главный-подчиненный с этими резервными копиями, сделанными на подчиненной машине. Однако немного сложнее и болезненнее настроить.
Вы также можете положиться на восстановление после сбоя InnoDB и сделать снимок EBS. Затем вы можете смонтировать эту файловую систему и восстановить с ней журналы транзакций InnoDB. Однако я не могу рекомендовать такой подход.
Обычный способ гарантировать, что вы получаете хорошие резервные копии, не мешая работе базы данных MySQL, - это использовать конфигурацию главный / подчиненный и принимать резервные копии с подчиненного устройства. Это могут быть даже два экземпляра MySQL на одной машине. В такой ситуации удар по производительности получает ведомый, а не ведущий.