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


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

Author: Matthew Shanley, 2010-07-08

7 answers

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

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

mysqldump --databases databaseName > /file/path

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

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

 5
Author: Mike, 2010-07-08 20:03:56

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

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

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

 5
Author: citadelgrad, 2010-07-08 21:15:56

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

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

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

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

Если вы не можете настроить другой сервер для репликации MySQL, и все ваши данные являются 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 утра.

 5
Author: RolandoMySQLDBA, 2020-06-16 10:32:57

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

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

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

 2
Author: Aiden Bell, 2010-07-08 21:11:21

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

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

 1
Author: Mark Hatton, 2010-07-13 20:20:41

Mysqlhotcopy - это скрипт на Perl примерно 05 года. Таким образом, он добавляет зависимости для Perl и различных Perl. Я бы отказался от этого.

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

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

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

 1
Author: intlect, 2010-07-16 01:29:27

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

 0
Author: Darryl Hein, 2010-07-13 21:27:56