Как я могу сделать резервную копию нескольких гигабайтных баз данных в MySQL? Бонусные баллы за быстрое восстановление

11

У меня есть база данных 4 ГБ в MySQL. Как я могу поддержать это? Кроме того, есть ли способ ускорить процесс восстановления в случае необходимости восстановления?

В настоящее время я использую работу cron каждую ночь, которая вызывает mysqldumpвсе, и я сохраняю 3 дня резервных копий.

nicudotro
источник

Ответы:

14

У нас в MySQL около 90 ГБ, поэтому вот несколько советов:

  • Вы можете попробовать следующий вызов: mysqldump -u USER -pPASS --single-transaction -Q --databases foo bar(Используйте документы, чтобы проверить, работают ли эти переключатели для вас.)
  • Если вы используете только таблицы MYISAM, то альтернативой может быть копирование базы данных на другой диск и ее сохранение. Это не будет работать с INNODB, так как он содержит дополнительный файл. Кроме того, вы должны тщательно проверить это.
  • Включите двоичные журналы и создайте их резервные копии. (Это, наверное, мой любимый!)
  • Настройте репликацию и сделайте резервную копию на одном из ваших ведомых устройств, а затем дайте ему догнать остальных. Это довольно приятно, когда он работает, но проблема в том, чтобы запустить его. Репликация - это не весело с MySQL. :(
  • Ваша файловая система поддерживает снимки? Если это так, то это прекрасная возможность использовать их.
  • Используйте коммерческое решение, такое как Аманда .
Пока
источник
10

Лучший способ - не прерывать нормальную работу. Для высоконадежных, отказоустойчивых систем у вас есть 2 DB, которые синхронизируются, и вы создаете резервную копию вторичного устройства. (например, эта статья о howtoforge )

В противном случае прочтите руководство : используйте myseldump, как вы это делаете в настоящее время, или используйте скрипт mysqlhotcopy (используйте точно так же, как mysqldump), или остановите БД и просто скопируйте файлы frm, MID, MYI (используя rsync).

Я думаю, что механизм стоп + копирование файлов - самый быстрый, который вы собираетесь получить.

gbjbaanb
источник
3

Если некоторые из ваших баз данных предназначены только для чтения или изменены, редко выделяйте их как менее частый cron.

JJ
источник
2

Чтобы ответить на ваш вопрос - опция extended_insert мне подходит. Если у вас достаточно ресурсов для восстановления, extended_insert вставит огромные куски данных в один запрос, что ускорит восстановление.


источник
1

Вы должны действительно рассмотреть Xtrabackup Percona

Сценарий оболочки "innobackupex" может обрабатывать MyISAM, но для неблокирующего / оперативного резервного копирования все ваши таблицы должны быть InnoDB.

ура

HTTP500
источник