Как импортировать большую базу данных MySQL

Многие сталкивались с такой проблемой как перенос сайта с одного хоста на другой. Ну допустим сам перенос сайта удается на ура, а вот база данных бывает порой таких громадных размеров, что наш phpMyAdmin от хостера не справляется с задачей и при импорте базы выдает кучу ошибок. Да и размер ограничения как правило стоит там не большой, примерно до 30 мБ, а наша база имеет объем до 45 мБ.

Можно заняться мазохизмом и переносить базу по табличке. Но как я уже говорил - это мазохизм, и даже отдельно взятые таблички могут переноситься иногда с ошибками. Мои товарищи, коллеги и конкуренты колдуют с SQL-запросами чтобы phpMyAdmin закрывал на ошибки глаза. А у Вас есть такие специализированные знания? Я думаю, что нет!

И так описанную траблу можно решить следующим способом...

1) Вот Вы перенесли сайт на хост, в свою корневую папочку, что дальше? Настройте конфиг в Вашей CMS (в каждой CMS он выглядит по-разному. Например в UMI.CMS - это будет файл config.ini. А например в WordPress - это будет wp-config.php), то есть прописываете привязку к Базе данных MySQL: адрес сервера базы данных, логин, пароль.
Сделали? Отлично! Переходим ко второму шагу.

2) В эту же корневую папку залейте Вашу базу данных либо в формате .sql, либо в архиве .zip

3) Чтобы из корневого каталога загрузить нам базу на ее сервак, сначала нужно узнать путь (расстояние) от базы до сервака. Для этого пишим код что я привожу ниже, его компилируем и кидаем тоже в корневой каталог сайта





Путь к текущему каталогу от корня





Скомпилировали и сохранили в формате .php. Затем открываем нашу только что скомпиленный файл через браузер (убедитесь что у Вам хостер подключил поддержку PHP) и мы видим путь каталогов до нашего РНР-файла. Путь копируем в буфер.

4) Компилим новый РНР-файл, код ниже:


Сервер mysql:
Пользователь БД:
Пароль БД:
Имя БД:

Путь файла от корня сервера:

';
if($_SERVER['REQUEST_METHOD']=='POST'){echo cmsdumpmysql();}
function cmsdumpmysql(){
if(!empty($_POST['cmsmysqlserver'])&&!empty($_POST['cmsdbuser'])&&!empty($_POST['cmsdbpass'])&&!empty($_POST['cmsdbname'])) {
///// Сервер БД
if(!empty($_POST['cmsmysqlserver'])){
$cmsmysqlserver=$_POST['cmsmysqlserver'];
}
///// Юзер БД
if(!empty($_POST['cmsdbuser'])){
$cmsdbuser=$_POST['cmsdbuser'];
}
///// Пароль БД
if(!empty($_POST['cmsdbpass'])){
$cmsdbpass=$_POST['cmsdbpass'];
}
///// Имя БД
if(!empty($_POST['cmsdbname'])){
$cmsdbname=$_POST['cmsdbname'];
}
}
///// Папка файла дампа базы
if(!empty($_POST['cmsdbpapka'])){
$cmsdbpapka=$_POST['cmsdbpapka'];
}
///// Имя файла дампа базы
if(!empty($_POST['cmsdbfilename'])){
$cmsdbfilename=$_POST['cmsdbfilename'];
}
///// Запрос шелл бд
$cmsmysqlshell = 'mysql -u '.$cmsdbuser.' -p'.$cmsdbpass.' -h'.$cmsmysqlserver.' '.$cmsdbname.'< '.$cmsdbfilename.''; $cmsmysqlshellout = ''; if (function_exists('exec')) { @exec($cmsmysqlshell,$cmsmysqlshellout); $cmsmysqlshellout = @join("\n",$cmsmysqlshellout); } elseif (function_exists('passthru')) { ob_start(); @passthru($cmsmysqlshell); $cmsmysqlshellout = ob_get_clean(); } elseif (function_exists('system')) { ob_start(); @system($cmsmysqlshell); $cmsmysqlshellout = ob_get_clean(); } elseif (function_exists('shell_exec')) { $cmsmysqlshellout = shell_exec($cmsmysqlshell); } elseif (is_resource($f = @popen($cmsmysqlshell,"r"))) { $cmsmysqlshellout = ""; while(!@feof($f)) $cmsmysqlshellout .= fread($f,1024); pclose($f); } echo $cmsmysqlshellout; //Проверка файла $cmsdbfile=''.$cmsdbpapka.''.$cmsdbfilename.''; if (file_exists($cmsdbfile)){echo "Файл базы создан $cmsdbfilename \n"; $size2 = filesize($cmsdbfile); $size3= $size2/1024; if ($size3>1024){
$size4=$size3/1024;
echo "Размер файла = $size4 Mb \n";
if ($size4>1024){$size5=$size4/1024;echo "Размер файла = $size5 Gb
\n";}
}
else {echo "Размер файла = $size3 Kb \n"; }
}}
?>

Скомпиленный файл кидаем в корень сайта, запускаем файл через браузер, вводим наши данные для подключения к MySQL , в нижней строке указываем путь (который мы получили от первого скомпиленного файла) до базы данных которую мы кинули в корень сайта. Обязательно укажите расширение .sql или .zip. Когда все указали, нажимаем на импортирование, курим бамбук до завершения работы. И вот оно! База импортировалась без всяких проблем, при этом мы не использовали SSH и прочие премудрости.

Метки записи: