2010-02-08 2 views
1

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

  • 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 дней, кажется мне вполне подходит. Но интересно, если это повлияет на производительность моего сайта при выполнении командного файла.

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

ответ

1

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

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

+0

Похоже, мне нужно установить опцию «-lock-tables = false» на данный момент. У меня еще нет подчиненного сервера. Ну, иногда файл уменьшается, например, вчера размер составляет 35 мб, а сегодня размер составляет 28 мб. Я открыл файл sql, файл поврежден, я имею в виду не правильно резервное копирование, это потому, что я не заблокировал таблицы? – mysqllearner

+0

Именно поэтому. На данный момент вы должны действительно разрешить блокировку таблиц и иметь эти несколько секунд блокировки записи ради последовательной резервной копии –

0

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

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

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

Смежные вопросы