Все ленты — последние статьи

Скрипт для резервного копирования БД MySQL

Скрипт для резервного копирования БД MySQL

Как-то гуляя по просторам Интернета, на Ответы@Mail.Ru наткнулся на такой вопрос:
“У меня проблема. Мне нужно перенести базы с одного сервака на другой. А на первом недоступна phpMyAdmin. Что делать?”

Когда-то я уже встречал такой вопрос на форуме, и видел ответ. Вот его-то я и привожу здесь в неизменном виде:


<?php

$host = "localhost"; // имя сервера
$user = "root"; // имя пользователя
$password = ""; // пароль
$db_name = "sql"; // имя базы данных
$dump_dir = "./dump"; // директория, куда будем сохранять резервную копию БД

$link = mysql_connect($host, $user, $password) or die( "Сервер базы данных не доступен" );
$db = mysql_select_db($db_name) or die( "База данных не доступна" );
$tables = "SHOW TABLES";
$res = mysql_query($tables) or die( "Ошибка при выполнении запроса: ".mysql_error() );
while( $table = mysql_fetch_row($res) )
{
$fp = fopen( $dump_dir."/".$table[0].".sql", "a" );
if ( $fp )
{
$query = "TRUNCATE TABLE `".$table[0]."`;n";
fwrite ($fp, $query);
$rows = 'SELECT * FROM `'.$table[0].'`';
$r = mysql_query($rows) or die("Ошибка при выполнении запроса: ".mysql_error());
while( $row = mysql_fetch_row($r) )
{
$query = "";
foreach ( $row as $field )
{
if ( is_null($field) )
$field = "NULL";
else
$field = "'".mysql_escape_string( $field )."'";
if ( $query == "" )
$query = $field;
else
$query = $query.', '.$field;
}
$query = "INSERT INTO `".$table[0]."` VALUES (".$query.");n";
fwrite ($fp, $query);
}
fclose ($fp);
}
}

?>