MySQL Backup - инкрементный
Я знаю, что вы можете использовать mysqldump. В настоящее время я дам дамп следующим образом:
${MYSQLDUMP} --single-transaction -u ${MUSER} -h ${MHOST} -p${MPASS} $db | ${GZIP} -9 > $FILE
Насколько я понимаю, это блокирует базу данных и предотвращает любой тип использования базы данных и может даже заблокировать веб-сайты. Есть ли лучший способ, возможно, делать ежедневное / почасовое резервное копирование базы данных MySQL, если база данных будет иметь размер 100 МБ и даже 1 ГБ?
2 ответа
Вы, вероятно, хотите:
- делать (в идеале) неблокирующие полные резервные копии время от времени [зависит от скорости изменения ваших данных и требований к скорости процесса восстановления] - например, один раз в день или в неделю
- довольно часто делать резервные копии двоичных журналов MySQL, которые можно использовать для восстановления на определенный момент времени. Вы можете думать о тех журналах как о приращениях - список операций, которые произошли после того, как вы сделали полную резервную копию
Чтобы ваши резервные копии были неблокирующими, вам нужно использовать движок InnoDB для всех таблиц.
Для альтернатив - решений, которые не поставляются в комплекте с MySQL - взгляните на:
- xtrabackup - это альтернативный способ создания полной / инкрементной резервной копии mysql.
- Снимки lvm [или другого уровня хранения] - например, этот скрипт
Это будет блокировать только таблицы MyISAM. --single-transaction
работает только на предотвращение блокировки таблицы путем запуска этого в транзакции.
Размер от 100 МБ до 1 ГБ на самом деле небольшой, поэтому, если вы можете жить с небольшим шансом несогласованности, вы можете добавить --skip-lock-tables
а также избегайте блокировки таблиц MyISAM. Таким образом, ваши сайты не будут затронуты.
Несоответствие может возникнуть в случае, если есть приложение, которое обновляет две таблицы. Если это происходит в период между резервным копированием двух таблиц, резервная копия может содержать обновление второй таблицы, а не первой.
Это редкое условие, особенно если у вас небольшая база данных. Если вы не можете с этим смириться, возможно, вам придется использовать более сложные решения, такие как снимки lvm или репликацию.