Показать сообщение отдельно
Непрочитано 23.06.2010, 10:43   #5
Аватар для Дух системы
Пользователь

По умолчанию Re: Автосохранение базы mysql каждые 6 часов

Travesil, а не проще фиксить items таблицу, вместо того, чтобы делать откаты?
как правило такие ошибки возникают уже после рестарта, когда например пытается загрузиться итемы с одинаковыми id (банить обладателя, тк дюп налицо).
а вообще идеальный вариант, на случай утери бд или краха харда сервера, это дампить все таблицы базы на отдельный сервер.

на пхп реализовать несложно, + всегда есть возможность следить за сбоем таблиц.
к примеру записываем mysql_error() в переменную и выясняем почему не происходит дамп, тут же на лету фиксим таблицу и дампим снова.

пример кода:
Код:
<?
$db_original = mysql_connect ( $host_original, $dblogin_original, $dbpass_original ) or die ("Coudn't connect to [$db_original]");
mysql_select_db ( $db_original );
$db_copy = mysql_connect ( $host_copy, $dblogin_copy, $dbpass_copy ) or die ("Coudn't connect to [$db_copy]");
mysql_select_db ( $db_copy );
$curdate=date("ymdhis");
$n=0;
$query_tables = mysql_query("SELECT * FROM `$db_original`.`tables` ORDER BY `table_name`");
while ($tables_temp = mysql_fetch_array($query_tables))
{
	$table_name = $tables_temp['table_name'];
	$mysql_query = "CRATE TABLE `$db_copy`.`$table_name` SELECT * FROM `$db_original`.`$table_name`";	
	mysql_query($mysql_query);
	if (!mysql_error())
	{
		$mysql_error = mysql_error();
		echo "<li>Ошибка при копировании таблицы $table_name<br>$mysql_error.";
		echo "<li>И тут уже исходя из условий обрабатываем mysql_error(), фиксим таблицу db_original.table_name и запускаем повторный mysql_query.";
	}
	else
	{
		mysql_query("INSERT INTO `$db_copy`.`backup_story` (`backupdate`, `table`, `status`) VALUES ('$curdate', '$table_name', '1');";
		$n=$n+1;
	}
}
echo "<li>Скопировано $n таблиц из $host_original:$db_original в $host_copy:$db_copy.";
mysql_close();
?>
__________________
Дух системы вне форума Отправить сообщение для Дух системы с помощью ICQ Ответить с цитированием