PHP & MySQL Engineering

MySQL - Datenbanken kopieren, duplizieren

In einem meiner vorigen Artikel habe ich beschrieben, wie man mit mysqldump MySQL - Datenbanken von Server zu Server kopieren kann.

Es kommt jedoch auch oft vor, dass man eine MySQL - Datenbank duplizieren, sprich eine Kopie auf dem gleichen Server erstellen möchte.

Dies kann zum Beispiel der Fall sein, wenn man eine Änderung und/oder ein Script testen -dazu aber nicht die Hauptdatenbank verwenden möchte. Es gibt leider keinen direkten Befehl um eine Datenbank zu duplizieren, daher muss man leider den Umweg über, zum Beispiel, ein PHP-Script gehen.

Hier stelle ich ein PHP-Script vor, welches es ermöglicht, eine Kopie einer MySQL - Datenbank zu erstellen…

<?php
 
//Mit Datenbank-Server verbinden
if ( ($db_handle = mysql_connect('SERVER', 'BENUTZER_NAME', 'PASSWORD')) === false)
{
	die(mysql_error());
}
 
//Quell-Datenbank
$database_source = 'datenbank';
 
//Ziel-Datenbank
$database_target = 'datenbank_kopie';
 
//Ziel-Datenbank erstellen
$sql = "CREATE database ".$database_target;
$query = mysql_query($sql, $db_handle) or die(mysql_error($db_handle));
 
//Tabellen der Quell-Datenbank auslesen
$sql = "SHOW TABLES FROM ".$database_source;
$query = mysql_query($sql, $db_handle) or die(mysql_error($db_handle));
$num_tables = mysql_num_rows($query);
 
for($i = 0; $i < $num_tables; $i++)
{
	//Name der Tabelle
	$table_name = mysql_result($query, $i);			
 
	//Query zur Erstellung der Tabelle auslesen
	$sql = "SHOW CREATE TABLE ".$database_source.".".$table_name;
	$sub_query = mysql_query($sql, $db_handle) or die(mysql_error($db_handle));
	$sub_query_data_arr = mysql_fetch_row($sub_query);	
 
	//Query zur Erstellung der neuen Tabelle konstruieren
	$sql = str_replace("`".$table_name."`",$database_target.".".$table_name, $sub_query_data_arr[1]);
 
	//Tabelle in Ziel-Datenbank erstellen
	$sub_query = mysql_query($sql, $db_handle) or die(mysql_error($db_handle));
 
	//Daten Einfügen
	$sql = "INSERT INTO ".$database_target.".".$table_name." SELECT * FROM ".$database_source.".".$table_name;
	$sub_query = mysql_query($sql, $db_handle) or die(mysql_error($db_handle));
}
 
//Fertig
mysql_close($db_handle);
 
?>

Falls Ihnen dieses Script gefällt, und Sie es auf Ihrer Webseite einsetzen, so würde ich mich über einen Backlink zu meinem Blog freuen Icon Wink in MySQL - Datenbanken kopieren, duplizieren

 

Kommentare: 2

Kommentar hinterlassen »

 
 
 

danke für das skript aber bei // Daten Einfügen — $sub_query steht 2x “or”

korrekt:
$sub_query = mysql_query($sql, $db_handle) or die(mysql_error($db_handle));

 
 

Danke für den Hinweis!
Ich habe den Fehler soeben behoben!

 
 

Kommentar hinterlassen

 
(Wird nicht veröffentlicht)
 
(rel="follow")
 
Kommentar *
 
Eins + Sieben =