sheeba1507
Erfahrenes Mitglied
Hi zusammen,
für ein Projekt stehen mir 5 Datenbänke zur Verfügung, wobei die ersten drei die Arbeits-Tabellen
aufnehmen, die vierte als Backup und die fünfte zur Reserve/Tests verwendet wird.
Nun habe ich nach einer Möglichkeit gesucht, die Tabellen aus den Datenbänken 1-3 in die
Datenbank 4 zu sichern. Dabei wollte ich aber keine 1:1 Kopie mit MySql-Dump erzeugen, sondern
bei der Sicherung die Datensatz-ID auch gleich neu anordnen.
Als Beispiel dazu würde das Gästebuch dienen, wo auch mal Einträge (Spam) entfernt werden
und die ID-Folge Lücken aufweist.
Für jede zum Backup vorgesehene DB-Tabelle gibt es einen Datensatz in der Tabelle "datenbanken"
mit dem Namen der Datenbank und dem Namen der Tabelle.
Bislang habe ich dazu die nachfolgende Lösung gefunden :
(bislang noch nicht getestet)
Diese Form der Sicherung würde aber (vieleicht) nur funktionieren, wenn die Zugangs-Daten
zu allen Datenbänken identisch wären.
In diesem Fall sind aber $db_root und $db_pass bei allen 5 Datenbänken verschieden.
Wie kann ich nun diese unterschiedlichen Datenbank-Verbindungen so einbinden, daß die jeweilige
Datenbank auch angesprochen werden kann ?
Da Google mir in dieser Angelegenheit keine Antworten liefern konnte, bin ich auf die Hilfe
der PHP-Experten in diesem Forum angewiesen.
Dafür schon mal Danke im voraus.
Gruß, Mike
für ein Projekt stehen mir 5 Datenbänke zur Verfügung, wobei die ersten drei die Arbeits-Tabellen
aufnehmen, die vierte als Backup und die fünfte zur Reserve/Tests verwendet wird.
Nun habe ich nach einer Möglichkeit gesucht, die Tabellen aus den Datenbänken 1-3 in die
Datenbank 4 zu sichern. Dabei wollte ich aber keine 1:1 Kopie mit MySql-Dump erzeugen, sondern
bei der Sicherung die Datensatz-ID auch gleich neu anordnen.
Als Beispiel dazu würde das Gästebuch dienen, wo auch mal Einträge (Spam) entfernt werden
und die ID-Folge Lücken aufweist.
Für jede zum Backup vorgesehene DB-Tabelle gibt es einen Datensatz in der Tabelle "datenbanken"
mit dem Namen der Datenbank und dem Namen der Tabelle.
Bislang habe ich dazu die nachfolgende Lösung gefunden :
PHP:
<?php
$db_backup = "Name_der_Backupdatenbank";
$id = $_GET["id"]; // URL-Parameter
mysql_connect($db_host,$db_root,$db_pass) or die(mysql_error()); // Verbindung mit Datenbank 1
mysql_select_db($db_bank) or die(mysql_error());
$sqlabfrage = "SELECT * FROM $tb_datenbanken WHERE id='$id'";
$ergebnis = mysql_query($sqlabfrage) or die(mysql_error());
$datensatz = mysql_fetch_array($ergebnis);
$tabelle = $datensatz["tabelle"];
$backup_ziel = $db_backup.$datensatz["tabelle"];
$backup_von = $datensatz["datenbank"].$datensatz["tabelle"];
// Backup-Tabellen-Inhalt löschen
mysql_connect($db_host,$db_root,$db_pass) or die(mysql_error()); // Verbindung mit Datenbank 4
mysql_select_db($db_bank) or die(mysql_error());
$query = "TRUNCATE $tabelle";
mysql_query($query) or die (mysql_error());
// Tabellen-Inhalt sichern
mysql_connect($db_host,$db_root,$db_pass) or die(mysql_error());
$sql_copy = "INSERT INTO $backup_ziel SELECT * FROM $backup_von";
mysql_query($sql_copy) or die (mysql_error());
?>
Diese Form der Sicherung würde aber (vieleicht) nur funktionieren, wenn die Zugangs-Daten
zu allen Datenbänken identisch wären.
In diesem Fall sind aber $db_root und $db_pass bei allen 5 Datenbänken verschieden.
Wie kann ich nun diese unterschiedlichen Datenbank-Verbindungen so einbinden, daß die jeweilige
Datenbank auch angesprochen werden kann ?
Da Google mir in dieser Angelegenheit keine Antworten liefern konnte, bin ich auf die Hilfe
der PHP-Experten in diesem Forum angewiesen.
Dafür schon mal Danke im voraus.
Gruß, Mike