Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > дамп большой базы


Автор: PROme2 28.8.2006, 07:53
нужно сделать дамп базы форума, весит 400мб, доступ к серверу с бд разрешен только с серверов хостера, а там стоит ограничение работы скрипта в 30 секунд... что можно сделать? может у кого есть какой скрипт, который по частям за несколько раз ее обработает и уложит в архивчик(и)? или может предложите иные пути решения проблемы?

Автор: rMaveric 28.8.2006, 08:03
Лучее из того что видел dumper.php
Не совсем кусками, но таблицами покрайнем мере грабить умеет.

А так в общем можешь сам написать. не такая уж и сложная задача.

Автор: Vaulter 28.8.2006, 08:30
PROme2, SELECT INTO OUTFILE ? 

Автор: Mal Hack 28.8.2006, 08:33
Дамп делаь надо средствами MySQL.

Автор: Bikutoru 28.8.2006, 16:40
А есть ли доступ к серверу, с которого доступна база, через SSH? Если да, то задача сводится к 
Код

mysqldump -uuser -ppassword Database

Если доступа нет, то становится ненамного сложнее
Код

<?php

system('mysqldump -uuser -ppassword Database > dumpfile.sql');

?>

Если это не укладывается в 30 секунд, то можноразбить дамп на несколько скриптов вида:
Код

<?php

system('mysqldump -uuser -ppassword Database Table1 Table2 Table3 > dumpfile-1.sql');

?>

Если таблиц много и не охота возиться с кучей скриптов, то вместо "тупого" "Table1 Table2 Table3" можно использовать
Код

SHOW TABLES FROM Database;

с обработкой его результатов...

Автор: PROme2 28.8.2006, 22:17
Цитата(Bikutoru @ 28.8.2006,  16:40)
А есть ли доступ к серверу, с которого доступна база, через SSH? Если да, то задача сводится к 
Код

mysqldump -uuser -ppassword Database

SSH есть
можно подробней, плиз
Код

mysqldump -uuser -ppassword Database

куда будет помещен после этого дамп и как его можно будет скачать?
эта команда не удалит БД, просто сделает дамп?

Автор: -=Ustas=- 29.8.2006, 10:25
PROme2, дамп будет помещен в твою домашнюю директорию.
Правильнее будет такой синтаксис:
Код

mysqldump -u user -p your_database -r your_file.sql -Q --add-drop-table


И всё smile

Автор: Acraft 7.9.2006, 12:10
mysqldump -u root1 –pPaSsWoRd1 db_name1 | mysql -u root2 -pPaSsWorD2 --host=10.10.111.111 -C db_name2

Копирует без всяких дампов на диске с сервера 1 на сервер 2 (если есть доступ к консоли).
На сервере 2 должна быть создана пустая (имена таблиц не должны пересекаться с копируемыми) база db_name2.

Добавлено @ 12:15 
а еще посмотри вот эту темку, может поможет:
http://phpclub.ru/talk/showthread.php?s=&threadid=84654&highlight=Acraft

У меня написан этот скрипт, но без set_time_limit(0); он врядли сделает то что тебе нужно.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)