BackUp & Restore таблицы выбранной БД MySQL

Rider

Новичок
BackUp & Restore таблицы выбранной БД MySQL

Возникла такая необходимость написания скрипта для бэкапа и рестора таблицы выбранной БД... Знаю, что есть утилиты администрирования MySQL, однако я в php новичок, и скрипт мне необходимо написать свой... Помогите, пожалуйста....
 

Rider

Новичок
Спасибо, с резервным копированием разобрался...

Может кто поможет готовым скриптом для восстановления данных из файла sql. Файл содержит строку запроса INSERT...
Надо чтобы при выборе файла из формы, данные восстанавливались в выбранную таблицу...

Пожалуйста, очень надо...
 

Rider

Новичок
Фанат, я это читал и знаю что можно пользоваться mysqldump, но мне нужен свой скрипт, который пока я не в силах написать, а он мне очень срочно нужен...
 

Rider

Новичок
Нет конечно...

-~{}~ 13.05.07 16:10:

Ну ежели помощи никакой не будет, можете удалять эту тему... Спасибо
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Ну ежели помощи никакой не будет, можете удалять эту тему... Спасибо
ВАМ уже помогли!
Потрудитесь пойти по ссылке. Там всё сказано
 

vovanium

Новичок
Тема типа, мне срочно нужно самому сделать операцию на сердце, обьясните в общих чертах, где оно находится...

Rider
Если ты не знаешь даже как выполнить INSERT, то твое занятие бессмысленно, так как ничего путнего ты не напишешь, не зная даже азов MySQL, не говоря уже о различных деталях и подводных камнях. Тем более, что в такой серьезной теме как backup/restore, из-за твоей неграмотности в этих вопросах могут быть утеряны данные, хорошо еще если только твои... Так что тренируйтесь на гостевушках ;)

Может пояснишь зачем тебе так срочно понадобился, причем непременно свой скрипт?
 

Rider

Новичок
Автор оригинала: vovanium
Тема типа, мне срочно нужно самому сделать операцию на сердце, обьясните в общих чертах, где оно находится...

Rider
Если ты не знаешь даже как выполнить INSERT, то твое занятие бессмысленно, так как ничего путнего ты не напишешь, не зная даже азов MySQL, не говоря уже о различных деталях и подводных камнях. Тем более, что в такой серьезной теме как backup/restore, из-за твоей неграмотности в этих вопросах могут быть утеряны данные, хорошо еще если только твои... Так что тренируйтесь на гостевушках ;)

Может пояснишь зачем тебе так срочно понадобился, причем непременно свой скрипт?
Как раз с SQL языком я дружу, мне сложнее все реализовать было средствами php... Тока вот уже все сам сделал...
 

Drimmer

Новичок
ну если тупо ( если нет коментов в .sql, а если есть то выкинем ... проверкой предварительно...они там вроде с # или с -- начинаються)
то делаем explode по ";" и дальше foreach-ем mysql_query...предварительно сделав mysql_select_db

хотя наверное проще просто построчно читать и смотреть если нет комента то всю строку в запрос...
 

vovanium

Новичок
то делаем explode по ";" и дальше foreach-ем mysql_query
Вот теперь подумай, что будет с твоим скриптом если точка с запятой будет встречаться в данных или объем дампа несколько десятков мегабайт ;)
 

Rider

Новичок
Я просто напросто читал построчно файл, и всю строку загонял в запрос, на данный момент мне этого хватает...
 

Drimmer

Новичок
Автор оригинала: vovanium
Вот теперь подумай, что будет с твоим скриптом если точка с запятой будет встречаться в данных или объем дампа несколько десятков мегабайт ;)
да подумал чустно говоря :D жопа получится :), но я второй вариант ведь предложил же еще :)
 

antson

Новичок
Партнер клуба
не все так просто.
даже в phpmyadmin рестор бекапа далек от совершенства.

Идеальное или близкое к нему решение должно
поднять бекап более 40 метров с >100 тысяч (где записи
как очень маленькие, так и полями содержащими html куски контента по 30 кил в которых куча переводов строк и точек с запятой) из файла на сервере при ограничении оперативки в 2М(т.е. требовать памяти столько - сколько нужно на самый большой единичный инсерт в базе)
а приемлеемое время в районе 2 минут (идеально <30 сек)
 

phprus

Moderator
Команда форума
antson
Посмотри на Sypex Dumper ( http://sypex.net/ )

-~{}~ 17.05.07 14:06:

т.е. требовать памяти столько - сколько нужно на самый большой единичный инсерт в базе
Это невозможно, так как по мимо самого запроса в памяти должен храниться сам скрипт и вспомогательные переменные.
 

vovanium

Новичок
Посмотри на Sypex Dumper
Кстати могу порадовать благодаря оптимизации новый движок Sypex Dumper'а (который и так был самым быстрым скриптом бэкапа) для версии 2, значительно ускорился, на больших базах работает почти в 10 раз быстрее старого (тестил на базе ibf-форума весом около 1,5 гига), ну а восстановление вообще супер, он уже может тягаться по скорости с консольным mysql-клиентом ;)
Drimmer
я второй вариант ведь предложил же еще
да можно, но это довольно медленно, и все равно нужно следить за ";", т.к. к примеру CREATE TABLE запросы обычно многострочные.
 

antson

Новичок
Партнер клуба
phprus
угу . это подразумевалось.
у меня два буфера
1) запрос который должен выполниться
2) скользящее окно по входному файлу на 512байт

в phpmyadmin 2.6.1. брался в память весь файл
плюс при выполнение операций вида
$sql=substring($sql,,) в начале парсинга почти столько же отъедалось памяти.
 

vovanium

Новичок
antson
скользящее окно по входному файлу на 512байт
А какой смысл в 512 байтах, если минимальный кластер на диске 4 КБ, ты так только увеличиваешь число вызовов fread ;) Прикинь сколько тебе нужно вызовов fread чтобы прочитать дамп размером с гиг.

Ну phpmyadmin тоже на месте не стоит, и там тоже взялись за голову :)
 
Сверху