Восстановление данных DLE |
Самое важное для владельца сайта — это то, что есть на сайте, то есть его содержимое. Чтобы не было беды, например в случае «падения» сервера, нужно сохранять содержимое сайта, а потом, в случае необходимости восстанавливать данные.
Есть два способа сохранения данных: 1. Сделать дамп через shell (ssh (для Windows — клиент Putty)); 2. Сгененировать CSV-файл с помощью PHP; 3. Сделать дамп *.sql через phpMyAdmin или Sypex Dumper. Не будем заострять внимание на всех способах сохранения данных, а остановимся лишь на восстановлении данных из CSV-файлов. Итак, чтобы что-то восстанавливать, нужно чтобы было что восстанавливать. Для этого необходимо сделать дамп и купить смеситель для умывальника: <?
mysql_query("SELECT поля INTO OUTFILE файл FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\' LINES TERMINATED BY '\n' FROM таблица"); ?> Для использования такого запроса необходимы привилегии FILE. Файл, в который вы делаете дамп создается на сервере и до этого не должен существовать. Это важный момент! Данная особенность записи в файл предотвращает изменение уже существующих файлов, в том числе таких важных как “/etc/passwd”. В описаном примере поля из таблицы выгружаются в файл, поля разделяются запятыми.Если поля имеют текстовый формат, их значения заключаются в апострофы, а каждая строка с завершается символом \n, тобишь символом перевода каретки на ковую строку. Итак, дамп у нас есть. Допустим, что-то произошло с базой и теперь необходимо восстановить утеряные данные. Приступим: <?
mysql_query("LOAD DATA INFILE файл INTO TABLE таблица ',' OPTIONALLY ENCLOSED BY '\' LINES TERMINATED BY '\n'"); ?> Ну вот и всё. Таблица снова заполнена данными. Разумеется это лишь ядро скрипта для дампа. Как его использовать — ваше личное дело и ваша фантазия. Можно, например, получить список таблиц, в цикле обойти их сделав дамп. Затем, опять же в цикле, пройтись по уже созданным файлам, создавая единый файл с дампом, и удаляя индивидуальные. Неплохо было бы дописать в единый файл также структуру самих таблиц. Возможно, вы найдёте и более разумный способ. Может быть вы даже найдёте другой способ сделать дамп. На данный момент мне кажется это достойный способ получить дамп с помощью PHP, если нет доступа к shell. |