Назад | Перейти на главную страницу

Резервное копирование MySQL - инкрементное

Я знаю, что вы можете использовать mysqldump. Я сейчас сбрасываю так:

${MYSQLDUMP} --single-transaction -u ${MUSER} -h ${MHOST} -p${MPASS} $db | ${GZIP} -9 > $FILE

Насколько я понимаю, это блокирует базу данных и предотвращает любое использование базы данных и даже может блокировать веб-сайты. Есть ли лучший способ делать ежедневные / ежечасные резервные копии базы данных MySQL, если размер базы данных составляет 100 Мбайт и даже 1 Гбайт?

Вероятно, вы захотите:

  • делать (в идеале) неблокирующие полные резервные копии время от времени [зависит от скорости изменения данных и требований к скорости процесса восстановления] - например, один раз в день или в неделю
  • довольно часто делают резервные копии двоичных журналов MySQL, которые можно использовать для восстановления на определенный момент времени. Вы можете рассматривать эти журналы как инкрементные - список операций, которые произошли после того, как вы сделали полную резервную копию.

Чтобы ваши резервные копии были неблокирующими, вам необходимо использовать движок InnoDB для всех таблиц.

Для альтернатив - решений, которые не поставляются вместе с MySQL - взгляните на:

  • xtrabackup - это альтернативный способ создания полной / инкрементной резервной копии mysql.
  • lvm [или другой уровень хранилища] снимки - например, этот сценарий

Это заблокирует только таблицы MyISAM. --single-transaction работает только для предотвращения блокировки таблицы, запустив это в транзакцию.

От 100 МБ до 1 ГБ на самом деле небольшой размер, поэтому, если вы можете жить с небольшой вероятностью несоответствия, вы можете добавить --skip-lock-tables а также избегайте блокировки таблиц MyISAM. Таким образом, ваши сайты не пострадают.

Несогласованность может возникнуть, если есть приложение, которое обновляет две таблицы. Если это происходит в промежутке между резервным копированием двух таблиц, резервная копия может содержать обновление для второй таблицы, а не для первой.

Это редкое состояние, особенно если у вас небольшая база данных. Если вы не можете смириться с этим, возможно, вам придется использовать более сложные решения, такие как снимки состояния lvm или репликацию.