Резервное копирование нескольких баз данных [MySQL] за один раз? - PullRequest
1 голос
/ 08 февраля 2010

Привет У меня есть несколько баз данных, которые нужно ежедневно резервировать. В настоящее время я использую cronjob для установки командного файла для его резервного копирования. Вот моя ситуация: у меня есть около 10 баз данных, для которых требуется резервное копирование, 3 из них растут довольно быстро, позвольте мне показать вам текущий размер БД:

  • DB1 = 35 МБ
  • DB2 = 10 МБ
  • DB3 = 9 МБ
  • остальное: DBx = 5 МБ

Код моего командного файла:

mysqldump -u root -pxxxx DB1 > d:/backup/DB1_datetime.sql
mysqldump -u root -pxxxx DB2 > d:/backup/DB2_datetime.sql
... and so for the rest

Я пробовал это в течение 2 дней, мне кажется, все в порядке. Но мне интересно, повлияет ли это на производительность моего веб-сайта при выполнении командного файла.

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

Ответы [ 2 ]

1 голос
/ 08 февраля 2010

Зависит от типа таблицы. Если таблицы innoDB, то вы должны использовать флаг --single-transaction, чтобы дампы были согласованными. Если ваши таблицы MyISAM, у вас есть небольшая проблема. Если вы запустите mysqldump как есть, дамп приведет к блокировке таблиц (без записи) во время выполнения дампа. Это, очевидно, огромное узкое место, поскольку базы данных становятся больше. Вы можете переопределить это с параметром --lock-tables=false, но вы можете быть уверены, что в резервных копиях не будет противоречивых данных.

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

0 голосов
/ 09 апреля 2012

Если вы все еще ищете способ сделать это, вам, вероятно, будет интересно: this .

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

Надеюсь, это поможет, привет.

...