Должен ли я использовать mysqldump или mysqlhotcopy для резервного копирования базы данных MySQL?

14

У меня есть блог WordPress, работающий с базой данных MySQL, который я хочу регулярно резервировать. Было бы лучше использовать программу mysqldump или скрипт mysqlhotcopy для создания резервных копий? Каковы плюсы и минусы каждого? Есть ли другие варианты, которые я должен рассмотреть?

Мэтью Шенли
источник

Ответы:

5

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

Хорошо, что это простой текстовый файл, поэтому я могу импортировать его на любой компьютер с MySQL, загружать его и искать недостающие данные. Примечание: для того, чтобы получить то, что я хотел, команда, которую я использую в своем скрипте, выглядит так:

mysqldump --databases databaseName > /file/path

Это --databasesто, что заставляет mysqldump сбрасывать CREATE DATABASE IF NOT EXISTзаголовки, чтобы я мог импортировать их в любое место.

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

Майк
источник
5

Я хотел бы рассмотреть возможность использования плагина WordPress под названием «Резервное копирование базы данных WordPress (WP-DB-Backup)», который также указан в руководстве по резервному копированию базы данных Wordpress . Этот плагин может создавать резервные копии базы данных по расписанию и отправлять ее вам по электронной почте (при условии, что это небольшая база данных). Вы также можете просто сделать резервную копию на месте. Вы можете исключить спам в комментариях и изменения, чтобы уменьшить размер БД

Меньше контроля, но проще в реализации.

Дампы MySQL дают вам максимальный контроль . Ваш хостинг также может быть ограничивающим фактором. Некоторые хосты не дают вам доступа для запуска заданий cron или команды mysqldump.

citadelgrad
источник
4

ПРЕДЛОЖЕНИЕ № 1

Если вы делаете какие-либо резервные копии MySQL Instance, лучше всего настроить MySQL Replicaton так, чтобы любая нагрузка на сервер или увеличение дискового ввода-вывода никак не влияло на вашу производственную базу данных.

После настройки MySQL Replication вы можете создавать сценарии mysqldump различными способами ( см. Мой пост на DBA StackExchange для получения информации о различных методах ), если вы запускаете эти mysqldumps на подчиненном устройстве.

ПРЕДЛОЖЕНИЕ № 2

Если вы не можете настроить другой сервер для MySQL Replication и все ваши данные - InnoDB, вам придется выполнить mysqldump на определенный момент времени. Это делается с помощью --single-transactionопции с mysqldump. Таким образом, если вы запустили mysqldump, начиная с полуночи, а резервное копирование закончилось в 12:15, выходные данные mysqldump при восстановлении отражают данные по состоянию на 12:00.

ПРЕДЛОЖЕНИЕ № 3

Еще одна программа для резервного копирования MySQL - это XtraBackup от Percona.

XtraBackup - это всеобъемлющий инструмент, который ведет себя как rsync, но имеет целенаправленную цель в жизни. Он может начать с копирования всех данных InnoDB и табличных пространств. Он имеет возможность создавать контрольные точки внутри и выполнять аварийное восстановление InnoDB на месте, чтобы обеспечить идеальное резервное копирование на определенный момент времени. XtraBackup также имеет дополнительную функцию, которая позволяет создавать инкрементные резервные копии. Еще одной дополнительной функцией является создание файлов журналов InnoDB, также созданных с помощью восстановления после сбоя на месте. Существует также некоторое программное обеспечение-обертка, обеспечивающее замороженное копирование таблиц MyISAM.

Он выполняет заднюю часть экземпляра MySQL, но с явным отличием. Момент времени резервного копирования зависит от того, когда резервное копирование завершено, а не когда оно началось. Таким образом, если вы запустили XtraBackup, начиная с полуночи, а резервное копирование закончилось в 12:15, выходные данные mysqldump при восстановлении отражают данные по состоянию на 12:15.

RolandoMySQLDBA
источник
2

Зависит от вашего механизма хранения для ваших таблиц. Он работает только для таблиц ARCHIVE и MyISAM в соответствии с этой страницей руководства MySQL и должен запускаться на той же машине (т.е. без использования локального сокета или TCP / IP)

MySQL также говорит

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

Эйден Белл
источник
1

Я рекомендую использовать один из многих ранее существующих сценариев резервного копирования mySQL, чтобы избавиться от проблем с его настройкой.

Я использую «automysqlbackup», который является сценарием оболочки с открытым исходным кодом, который можно установить как задание cron на сервере. Он охватывает практически все мыслимые ситуации с резервным копированием: http://sourceforge.net/projects/automysqlbackup/ . Это работало безупречно для меня в течение нескольких лет - полностью рекомендуется.

Марк Хаттон
источник
1

mysqlhotcopy - это сценарий Perl, выпущенный в 2005 году. Таким образом, он добавляет зависимости для Perl и различных Perl. Я передам это.

mysqldump - это программа на C, которая распространяется с MySQL и активно поддерживается. Если вы добавите опцию -x, она заблокирует таблицы, так что вы получите золотой.

У меня лично есть этот скрипт в cron (вы захотите удалить эти `escape-коды ', если вы хотите запустить его вручную), и он работает для меня как прелесть, резервируя каждую из моих баз данных в локальный файл, а также полный дамп всех баз данных.

И если у вас там более одной базы данных, вы также захотите сбросить гранты для них. Maatkit поможет вам в этом, и вы просто создадитеmk-show-grants -uroot -pPASSWORD > mygrantsdatabase.sql резервные копии таблиц грантов и снова сможете их импортировать.

intlect
источник
0

Я также знаю, что ряд инструментов управления сервером, таких как Interworx и Ensim, используют mysqldump для резервного копирования баз данных и затем простую команду mysql для восстановления. Исходя из этого, я думаю, что это один из лучших способов.

Дэррил Хейн
источник