Резервное копирование MYSQL

Резервное копирование баз MySQL Вы работаете над веб-проектом, в котором используется СУБД MySQL. Конечно, каждый серьезный проект предполагает, что периодически будет создаваться резервная копия всех данных, используемых в работе. Это де-факто стандартный подход. Более того, без этого невозможно гарантировать посетителям сайта бесперебойность работы Вашего ресурса. В случае, если сайт предоставляет коммерческие услуги, наличие резервного копирования является просто-таки жизненной необходимостью. Вообще, почти все хостинг-провайдеры производят резервное копирование всех файлов пользователей. Однако, не стоит забывать о том, что провайдеры делают backup, в основном, для себя, на случай аварии у себя. Именно по этой причине пользователи в условиях хостинга могут, конечно, рассчитывать на восстановление в случае удаления каких-то данных по вине самого пользователя, но вовсе не факт, что провайдер сделает восстановление MySQL-базы сразу по получению запроса. Лучше делать для себя копию и в случае чего ее использовать. Можно даже периодически копировать этот свой backup на другую, не провайдерскую машину - так надежнее, на всякий случай. Сделать копию всех статических HTML- и прочих документов просто. Так же несложно периодически "откладывать в сторонку" и копии скриптов. Гораздо более сложной представляется задача создания копии (backup) такой динамичной структуры, как база данных MySQL. Основные трудности, которые возникают перед администратором размещенного на хостинге сайта, обычно бывают такие: Отсутствие физического доступа к файлам базы данных. Как правило, провайдеры хостинга предоставляют возможность работы с базой данных только через скрипты или специальный mysql-клиент, но не дают прав на доступ непосредственно к файлам, в которых содержатся данные из MySQL-базы. Отсутствие у администратора знаний о том, как вообще надо делать backup. Обычно такая задача возникает только, когда "клюнул жареный петух". То есть, в случае аварии, вторжения хакеров или в других внештатных ситуациях. Веб-мастеры просто не готовы к немедленному backup и начинают судорожно изучать документацию по MySQL, а время идет... В случае, если веб-мастер не владеет в достаточной мере навыками работы со специализированными утилитами из пакета MySQL, могут возникать трудности, связанные с ограничениями, налагаемыми хостинг-провайдером на пользовательские аккаунты. Например, если база очень большая и ее размер превышает лимит на доступную пользователю память (RAM), backup сделать будет сложно. Нужно пользоваться тонкими настройками утилит резервного копирования, что иногда тоже вызывает трудности на практике. Как сделать копию базы 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 можно почитать на странице http://host.ru/documentation/v-www/0014.html Итак, каждый день мы будем иметь на диске заархивированную копию нашей базы данных. Можно быстро найти нужный архив по его названию и восстановить то, что испортилось, например. Кстати, если Вы хотите автоматизировать удаление старых архивов, попробуйте воспользоваться cron и командой find, которая обычно есть в unix. Запуская периодически find ~/каталог-с-архивами -name "*.gz" -mtime +7, Вы будете удалять архивы, которые "старше" семи дней. Прочитайте документацию по find - она доступна по команде man find в unix shell. Если у Вас есть компьютер, постоянно подключенный к интернет, можно так же по cron копировать созданный Вами backup на него. Конечно, провайдерская хостинг-машина - это очень надежная штука. Однако, как говорится, "береженого Бог бережет". Старая как мир истина в определенных условиях может и Вам помочь. Используйте для копирования на другую машину команды ftp и scp. Добавьте их запуск в cron. Если Ваша машина поддерживает соединение по протоколу ssh, используйте secure copy клиент для копирования файлов - scp. Читайте документацию по этой команде в man-странице man scp.

Материал подготовлен: cтудия D-ART - создание и раскрутка сайтов в интернет.

Какие данные нужно хранить в MySQL

Не старайтесь поместить в базы данных всю информацию, которая у Вас есть. Например, не нужно хранить там картинки, хоть MySQL это и позволяет. Помещая в базу данных двоичные образы графических файлов, Вы только замедлите работу своего сервера. Прочитать файл с картинкой с диска гораздо проще и, с точки зрения потребляемых ресурсов, экономичнее, нежели соединиться из скрипта к SQL, сделать запрос, получить образ, обработать его и, выдав нужные http-заголовки, показать посетителю веб-сервера. Во втором случае операция выдачи картинки потребует в несколько раз больше ресурсов процессора, памяти и диска. Также стоит помнить о том, что существуют механизмы кэширования веб-документов, которые позволяют пользователю экономить на трафике, а при динамической генерации контента Вы фактически лишаете своих посетителей этой удобной возможности.

Вместо картинок лучше хранить в MySQL информацию, на основе которой можно генерировать ссылки на статические картинки в динамически создаваемых скриптами документах.

Материал подготовлен: cтудия D-ART - создание сайтов.

Как добавить материал на сайт с системой управления Joomla 1.5

  • 05.03.10, 11:58

Для добавления материала необходимо зайти в административную панель вашего сайта по адресу http://адрес сайта/administrator.

Далее необходимо ввести login:ваше имя, и пароль, и нажать enter.

Затем, заходим в менеджер добавления материала, нажав на кнопку "Добавить материал". В появившемся окне выбираем строку "Заголовок статьи" - Вписываем в нее заголовок., далее выбираем строку "Псевдоним" - вводим псевдоним статьи на английском языке без пробелов. В пункте "Раздел" выбираем в каком разделе будет опубликована статья, далее выбираем категорию в к которой относиться статья, ставим метки о публикации: "Опубликовано" - "да" - статья опубликована на сайте, метка "На главной" если: "да" - то статья публикуется на главной странице, если "нет" то статья не публикуется на главной странице вашего ресурса. Далее вписываем саму статью в окно редактирование материала. После добавления материала выбираем в пунктах правого меню: "Параметры статьи"  - Имя автора(имя того кто опубликовал статью), при необходимости можно вписать псевдоним, тогда вместо имени автора будет выводиться "Псевдоним", Далее выбираем дату создания(по умолчанию стоит дата того дня в который статья была написана). Далее выбираем параметр, дня когда статья будет перемещена в архив - "Истекает", выбираем: "никогда" - статья не перемещается в архив, либо выбираем дату перемещения материала в архив.

Далее выбираем вкладку "Параметры - Расширенные", из выпавшем меню выбираем параметр:

 "Заголовок" - в этом параметре выбираются варианты показа заголовка статьи, выбираем "Да" - показывать заголовок стать, "Нет" - не показывать заголовок статьи.,

"Заголовок как ссылка" - "Да" - показывает заголовок статьи как ссылку на материал. "Нет" - создавать ссылку из заголовка.,

"Вступительный текст" - Показывать вступительный или нет текст вступления(текст который находиться выше кнопки подробнее".,

"Название раздела" - "Показать" - отображается название раздела, "Скрыть" - Название раздела в котором находиться материал отображаться не будет.

"Название раздела как ссылка" - Будет ли отображать название раздела как ссылка, если "Да", то название раздела будет отображаться в адресной строке, если значение "Нет" то название раздела не будет отображаться в адресной строке.

"Название категории" - Значение "Да" - Название категории в которой находиться статья отображается., Значение "Нет" - Название категории в которой находиться статья не отображается.

"Название категории как ссылка" -"Да" - название категории будет отображаться в адресной строке, если значение "Нет" то название категории не будет отображаться в адресной строке.

"Рейтинг" - "Да" На странице с материалом будет выводиться рейтинг данной статьи, "Нет" - рейтинг не отображается.

"Имя автора" - "Показать/Скрыть" - Будет ли отображаться имя автора добавившего данный материал.

"Дата и время создания" - "Показать/Скрыть" - Будет ли отображаться отображается дата создания данного материала.

"Дата и время последнего изменения" - "Показать/Скрыть" - Будет ли отображаться дата последнего изменения данного материала.

"Иконка PDF" - "Показать/Скрыть" - Отображать или нет, иконку для скачивания документа в формате PDF.

"Иконка печати" - "Показать/Скрыть" - Отображать или нет, иконку печати документа.

"Иконка E-mail" - "Показать/Скрыть" - Отображать или нет, иконку формы отправки данного документа на почту.

"Язык материала" - Из выпадающего списка выбирается язык на котором написан материал.

"Ключевая сноска" - Текстовый ключ, по которому можно сослаться на данную статью.

"Альтернативный текст Подробнее..." - Можно ввести текст который будет отображаться на кнопке вместо "подробнее"

Материал подготовлен: d-art.pp.ua - создание сайтов Киев