Резервное копирование баз MySQL

Запасное копирование баз MySQL. Еще более сложной
представляется задачка сотворения копии таковой оживленной структуры, как
база данных MySQL.

Вообщем, практически все хостинг-провайдеры создают запасное
копирование всех файлов юзеров. Но, не следует забывать о
том, что провайдеры делают backup, в главном, себе, на случай
аварии у себя. Конкретно по этой причине юзеры в критериях
хостинга могут, естественно, рассчитывать на восстановление в случае
удаления каких-либо данных по вине самого юзера, но совсем не
факт, что провайдер сделает восстановление MySQL-базы сходу по
получению запроса. Лучше делать себе копию и в случае чего ее
использовать. Можно даже временами копировать этот собственный backup на
другую, не провайдерскую машину – так надежнее, на всякий случай.

Сделать копию всех статических HTML- и иных документов просто.
Так же нетрудно временами «откладывать в сторонку» и копии
скриптов. Еще более сложной представляется задачка сотворения копии
(дальше backup) таковой оживленной структуры, как база данных MySQL.
Главные трудности, которые появляются перед админом
расположенного на хостинге веб-сайта, обычно бывают такие:
Отсутствие физического доступа к файлам базы данных. Как
правило, провайдеры хостинга предоставляют возможность работы с
базой данных только через скрипты либо особый mysql-клиент, но
не дают прав на доступ конкретно к файлам, в каких
содержатся данные из MySQL-базы.
Отсутствие у админа познаний о том, как вообщем нужно
делать backup. Обычно такая задачка появляется только, когда «клюнул
жареный петушок». Другими словами, в случае аварии, вторжения взломщиков либо в
других внештатных ситуациях. Вебмастеры просто не готовы к
незамедлительному backup и начинают конвульсивно учить документацию по
MySQL, а время течет…
В случае, если вебмастер не обладает в достаточной мере
способностями работы со спец утилитами из пакета MySQL,
могут появляться трудности, связанные с ограничениями, налагаемыми
хостинг-провайдером на пользовательские аккаунты. К примеру, если
база очень большая и ее размер превосходит предел на доступную
юзеру память (RAM), backup сделать будет трудно. Необходимо
воспользоваться тонкими опциями утилит запасного копирования,
что время от времени тоже вызывает трудности на практике.

Итак, данная статья создана для того, чтоб облегчить
работу по созданию запасных копий MySQL-баз. Если Вы – вебмастер,
и работаете с MySQL, наверное, информация, содержащаяся в данной
статье, будет Вам полезна.

Как сделать копию базы MySQL

Существует программка mysqldump, позволяющая стремительно и просто
создавать операции по созданию запасных копий баз MySQL. Также
mysqldump дает возможность делать очень тонкие опции для
управления процессом сотворения запасных копий баз данных либо
отдельных таблиц. Можно сказать, что mysqldump – это основной
инструмент, которым Вам придется воспользоваться в этом случае, если Вы
будете делать backup MySQL.

Сходу возьмем ординарную задачку, которую будем решать при помощи
mysqldump, и разберемся, что к чему. Есть хостинг, есть база данных
DBNAME, которую выделил Вам хостинг-провайдер. Есть хост HOST, на
котором расположен сервер MySQL, логин LOGIN к нему, порт PORT, на
котором работает сервер, также пароль PASS. Имея все эти данные,
можно сделать dump (дамп, копию) базы DBNAME так (исполняем в unix
shell): > mysqldump -uLOGIN -PPORT -hHOST -pPASS DBNAME > dump.txt

После выполнения данной команды в файле dump.txt у нас будет
копия MySQL-базы DBNAME. Это произойдет исключительно в том случае,
естественно, если все характеристики Вы зададите правильно, в согласовании с
опциями собственного хостинга. Сходу необходимо сказать, что программка
mysqldump производит вывод результатов прямо Вам на STDIN, другими словами,
на экран. Необходимо перенаправлять вывод в какой-нибудь файл. К примеру,
как в этом случае – » > dump.txt «. Если этого не сделать, а
база большая, Вы получите на экран все те мегабайты инфы,
которые в ней содержатся.

Малость поведаем о том, что все-таки делает mysqldump. Эта программка
делает сценарий восстановления Ваших данных. Другими словами, вывод
mysqldump – это не какие-то абстрактные и нечитаемые двоичные
данные, а осмысленный текст сценария. К примеру, если в Вашей базе
была таблица test, в какой было поле test2 с типом данных integer
и одна-единственная запись «1111″, то mysqldump создаст приблизительно
таковой сценарий: # MySQL dump 8.14
#
# Host: HOST Database: DBNAME
#——————————————————–
# Server version 3.23.39-log
#
# Table structure for table ‘test’
#
CREATE TABLE test (
test2 int(11) default NULL
) TYPE=MyISAM;
#
# Dumping data for table ‘test2′
#
INSERT INTO test2 VALUES (’1111′);

Таким макаром, mysqldump «обрисует» все Ваши таблицы и создаст
INSERT-команды для восстановления данных в таблицах. Итак, мы
перенаправляем вывод mysqldump в текстовый файл, который позже будем
использовать для восстановления. Разглядим и этот процесс -
воссоздание базы из запасной копии.

Для восстановления будем воспользоваться стандартной программкой
mysql, которая заходит в набор поставки MySQL вместе с mysqldump.
Допустим, у нас имеется backup в файле dump.txt. Нам необходимо
вернуть его в рабочую базу. К примеру, мы случаем удалили нашу
базу данных, а сейчас пытаемся поправить эту незадачу. Делаем так : > mysql -uLOGIN -PPORT -hHOST -pPASS DBNAME < dump.txt

Другими словами, заставляем mysql-клиент объединиться с сервером и
выполнить сценарий, который у нас имеется. После выполнения этой
команды в Вашей базе появятся таблицы и данные из запасной копии.
Учитывайте то, что данные будут просто восстанавливаться по сценарию
из dump.txt. Другими словами, если таблицы, которые упоминаются в дампе
базы, уже есть и имеют другую структуру, здесь очевидно возникнет
ошибка. Просто поглядите на сценарий и на рабочую базу и
представьте, что Вы вручную выполняете команды из сценария. Если
убеждены, что все будет отлично – смело восстанавливайте.

Разглядим более тонкие опции mysqldump:

–databases позволяет сделать так, что mysqldump включит в
сценарий восстановления команды CREATE DATABASE /*!33333 IF NOT
EXISTS*/ DBNAME и USE DBNAME. Это позволит создавать рабочие базы «с
нуля». Другими словами, без использования –databases предполагается, что
юзер восстанавливает одну базу данных и очевидно показывает, куда
необходимо помещать восстанавливаемые данные. Если же backup создается с
целью сделать на сто процентов рабочую копию данных, к примеру, на другом
MySQL-сервере, то необходимо использовать этот ключ;

–all-databases позволяет сделать копии всех баз данных,
которые есть на данном MySQL-сервере. Если же необходимо сделать
копии только неких баз, необходимо просто указать их через пробел при
вызове mysqldump из командной строчки (см. выше);

Ключ –help. Программка mysqldump имеет огромное количество версий.
Поглядеть, какие способности поддерживаются непосредственно Вашей
версией, можно при помощи этого ключа;

–add-drop-table – ключ, который принудит mysqldump
добавлять в итоговый сценарий команду drop table перед созданием
таблиц. Это позволит избежать неких ошибок при восстановлении
базы из запасной копии. Естественно, необходимо учесть то, что таблицы,
находящиеся в рабочей копии (если таблицы с таким же именованием
есть в backup), перед восстановлением из запасной копии будут
удалены из основной базы и пересозданы из backup;

–no-data. При помощи этого ключа можно стремительно сделать
копию структуры таблицы/баз без самих данных. К примеру, Вы сделали
сложную таблицу и желали бы сохранить на будущее ее структуру, а
сами данные, которые находятся в этой таблице, Вам в запасной копии
не необходимы;

–result-file=… – этот ключ можно использовать для
перенаправления вывода в файл. Можно использовать обыденное
unix-перенаправление командой «>», а можно – вот этот ключ. Кому
что нравится;

Не считая перечисленных ключей mysqldump имеет и еще некое
количество очень нужных способностей, которые Вы сможете использовать
по происшествиям. Полная документация по mysqldump доступна на
страничке http://www.mysql.com/doc/m/y/mysqldump.html.

Очередной очень нужный совет по использованию mysqldump в
хостинговой среде. Обычно, при использовании хостинга на
юзера налагаются некие ограничения. К примеру, нельзя
занять больше некого количества физической памяти (RAM, ОЗУ).
mysqldump по дефлоту помещает все приобретенные от MySQL-сервера
данные в память, а позже записывает все это на диск. Соответственно,
если провайдер дает Вам занять, к примеру, 30Мб памяти, а база, копию
которой Вы делаете при помощи mysqldump, занимает 50Мб, естественно, здесь
возникнет ошибка – mysqldump не сумеет отработать корректно и
закончится аварийно, о чем Вам скажет. Чтоб «вынудить» mysqldump
писать данные сходу на диск, а не хранить их, пусть даже и временно,
в памяти, используйте ключ –quick. Это решит делему.

Автоматизация запасного копирования

Сейчас подумаем, вроде бы нам заавтоматизировать процесс сотворения
запасных копий базы данных. Итак, существует программка – cron. Она
позволяет запускать процессы в обозначенное юзером время либо с
определенной периодичностью. Сходу оговоримся – cron в общем случае
существует только под Unix, так что, если Вы используете для
хостинга ОС Windows, проконсультируйтесь со своим
хостинг-провайдером о том, как лучше запускать процессы в необходимое
время. Ну и вообщем, пожалуй, этот пункт будет увлекателен только
unix-пользователям.

В unix shell запускаем crontab -e и создаем такое правило пуска
процесса сотворения копий базы: 0 0 * * * mysqldump -uLOGIN -PPORT -hHOST -pPASS DBNAME
| gzip -c > `date «+%Y-%m-%d»`.gz

Эта команда, запускаясь из cron в полночь (00:00) каждых суток,
делает дамп Вашей базы DBNAME и архивирует его архиватором gzip в
файл-архив с именованием, подходящим текущей дате. К примеру, если мы
делаем dump 3 января 2002 года, название файла с архивом будет
2002-01-03.gz. Для того, чтоб получить файлы, по именам которых
можно комфортно выяснить дату их сотворения, мы используем команду date,
которая является стандартной для всех unix-систем. Эта команда
позволяет задавать случайный формат вывода даты, что мы и
использовали – date «+%Y-%m-%d». Мы расположили эту команду в оборотные
одинарные кавычки (backticks), что в unix shell принуждает воткнуть
в команду (утрируя) итог выполнения другой команды.

Сохраняем правило для cron и ждем результатов. Итак, каждый денек
мы будем иметь на диске заархивированную копию нашей базы данных.
Можно стремительно отыскать подходящий архив по его наименованию и вернуть то,
что испортилось, к примеру. Кстати, если Вы желаете заавтоматизировать
удаление старенькых архивов, попытайтесь пользоваться cron и командой
find, которая обычно есть в unix. Запуская временами find
~/каталог-с-архивами -name «*.gz» -mtime +7, Вы будете удалять
архивы, которые «старше» 7 дней. Прочитайте документацию по find
- она доступна по команде man find в unix shell.

Если у Вас есть машина, повсевременно присоединенная к веб, можно
так же по cron копировать сделанный Вами backup на нее. Естественно,
провайдерская хостинг-машина – это очень надежная штука. Но, как
говорится, «береженого Бог сберегает». Древняя как мир правда в
определенных критериях может и Вам посодействовать. Используйте для
копирования на другую машину команды ftp и scp. Добавьте их пуск в
cron. Если Ваша машина поддерживает соединение по протоколу ssh,
используйте secure copy клиент для копирования файлов – scp. Читайте
документацию по этой команде в man-странице man scp. Примерный
пуск: scp 2002-01-03.gz : – закачиваем файл 2002-01-03.gz на
машину your.host.ru авторизовавшись там под логином login.

Дополнительные способности

Скрипт mysqlhotcopy, написанный на языке Perl, поможет Вам
упростить создание копий баз данных и отдельных таблиц.
Внедрение этого скрипта позволяет создавать запасное
копирование еще больше гибко. Описание mysqlhotcopy читайте здесь.

Аналогичный товар: Комментирование на данный момент запрещено, но Вы можете оставить ссылку на Ваш сайт.

Комментарии закрыты.

Уличная мода http://new-vogue.ru/foto-modnyx-obrazov-ulichnoj-mody-2018-goda/ . Новинки, тренды, тенденции 2018 года