Hallo Zusammen
Gestützt auf einem Script, hab ich es erweitert. Was ich zusätzlich erstellt habe ist, dass die erstellte .sql gezippt wird mit zlib.
Danach auf wunsch eine Copy an die e-mailaddi geschickt wird.
ebenfalls auf wunsch kann man 2 datenbanken in einer richtung syncronisieren. Ich nutze das, damit die DB in der Produktion die gleiche Daten wie in der Testumgebung hat.
Die erstellte Zip-Backup wird kopiert und entpackt und in die Testumgebung eingelesen. Leider funzt es nur zum teil. Mitten beim einlesen bricht es einfach ab. Also das einlesen funktioniert, nur solllte er sein job beenden und nicht einfach unterbrechen. es gibt auch keine fehlermeldung, d.h der script funktioniert einwandfrei. die entpackte temporäre Backupdatei hat ne grösse von 8.7MB.
Laufzeit des mysql.socket ist auf -1 und die PHP-Stream ist auf 1000 sekunden eingestellt.
Die "echos" im script dient nur zur kontrolle. Wenn der Script funzt, dann werde ich den CronJob damit starten.
Habt ihr vielleicht eine idee, woran das liegen könnte?
Gestützt auf einem Script, hab ich es erweitert. Was ich zusätzlich erstellt habe ist, dass die erstellte .sql gezippt wird mit zlib.
Danach auf wunsch eine Copy an die e-mailaddi geschickt wird.
ebenfalls auf wunsch kann man 2 datenbanken in einer richtung syncronisieren. Ich nutze das, damit die DB in der Produktion die gleiche Daten wie in der Testumgebung hat.
Die erstellte Zip-Backup wird kopiert und entpackt und in die Testumgebung eingelesen. Leider funzt es nur zum teil. Mitten beim einlesen bricht es einfach ab. Also das einlesen funktioniert, nur solllte er sein job beenden und nicht einfach unterbrechen. es gibt auch keine fehlermeldung, d.h der script funktioniert einwandfrei. die entpackte temporäre Backupdatei hat ne grösse von 8.7MB.
Laufzeit des mysql.socket ist auf -1 und die PHP-Stream ist auf 1000 sekunden eingestellt.
Die "echos" im script dient nur zur kontrolle. Wenn der Script funzt, dann werde ich den CronJob damit starten.
Habt ihr vielleicht eine idee, woran das liegen könnte?
PHP-Code:
<?php
// -----------------------------------------------------
// -----------------------------------------------------
// Script Konfiguration
// -----------------------------------------------------
// -----------------------------------------------------
//DB-Daten (Source)
$db_host = "localhost"; // Hostname
$db_user = "user1"; // DB User
$db_pw = "user1"; // Passwort
$db_name = "user1"; // Datenbank-Name
//DB-Daten (Target)
$db_host2 = "localhost"; // Hostname
$db_user2 = "user2"; // DB User
$db_pw2 = "user2"; // Passwort
$db_name2 = "user2"; // Datenbank-Name
//Sonstige Angabgen
$path = "siaclan/backup/"; // Pfad zum Backupverzeichnis - Endverzeichnis muss chmod 777 sein
$unlinkzip = 0; // ZIP-File löschen? Wenn ja, wird die ZIP-File vorher per Mail geschickt
$senttomail = 0; // ZIP-File per E-Mail senden?
$dbsync = 1; // Datenbank Syncronisation starten?
$email = "hn@n-sa.biz"; // E-Mail Adresse
// -----------------------------------------------------
// -----------------------------------------------------
// AB HIER NICHT MEHR ÄNDERN!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// -----------------------------------------------------
// -----------------------------------------------------
@error_reporting(7);
@set_time_limit(0);
@set_magic_quotes_runtime(0);
$phpversion = phpversion();
$noerror = 0;
define('USE_MBSTRING', false);
require("siaclan/acp/lib/functions.php");
require("siaclan/acp/lib/class_db_mysql.php");
require("siaclan/acp/lib/class_query.php");
if (version_compare($phpversion, "4.1.0") == -1) {
$_REQUEST = array_merge($HTTP_COOKIE_VARS, $HTTP_POST_VARS, $HTTP_GET_VARS);
$_COOKIE =& $HTTP_COOKIE_VARS;
$_SERVER =& $HTTP_SERVER_VARS;
$_FILES =& $HTTP_POST_FILES;
$_GET =& $HTTP_GET_VARS;
$_POST =& $HTTP_POST_VARS;
}
if (get_magic_quotes_gpc()) {
if (is_array($_REQUEST)) $_REQUEST = stripslashes_array($_REQUEST);
if (is_array($_POST)) $_POST = stripslashes_array($_POST);
if (is_array($_GET)) $_GET = stripslashes_array($_GET);
if (is_array($_COOKIE)) $_COOKIE = stripslashes_array($_COOKIE);
}
define('MYSQL_HOST', $db_host);
define('MYSQL_USER', $db_user);
define('MYSQL_PASS', $db_pw);
define('MYSQL_DATABASE', $db_name);
error_reporting(E_ALL);
mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR
die("Keine Verbindung zur Datenbank. Fehlermeldung:".mysql_error());
mysql_select_db(MYSQL_DATABASE) OR
die("Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysql_error());
//--- DANK DEM UNBEKANNTER PROGGER - START ----
if (!is_dir($path)) { mkdir($path, 0777); }
$database = $db_name;
$zaehler = 0;
$sqlext = ".sql";
$dbfilename = $database."_".date("Y-m-d_H-i");
$file_name = $path.$dbfilename.$sqlext;
$text = "# --------------------------------------------------------\r\n";
$text .= "# DATENBANK DUMP\r\n";
$text .= "# Host: ".$db_host."\r\n";
$text .= "# Erstellungszeit: ".date("d. F Y")." um ".date("H:i")."\r\n";
$text .= "# Server Betriebssystem: ".php_uname()."\r\n";
$text .= "# MySQL-Version: ".mysql_get_server_info()."\r\n";
$text .= "# PHP-Version: ".phpversion()."\r\n";
$text .= "# Datenbank: `$database`\r\n";
$text .= "# --------------------------------------------------------\r\n\r\n";
$fd = fopen($file_name,"a+");
fwrite($fd, $text);
fclose($fd);
// Alle Datenbanken auf dem Server suchen
$c = 0;
$result2 = @mysql_list_tables($database);
// Tabellenname Array auslesen und aufbauen
for ($i = 0; $i < @mysql_num_rows($result2); $i++)
{
$tabelle = @mysql_tablename($result2,$i);
if ($tabelle != "") {
$tbl_array[$c] = @mysql_tablename($result2,$i);
$c++;
$zaehler++;
}
}
// Start Ausgabe und Berechnung
for ($y = 0; $y < $c; $y++) {
$tabelle = $tbl_array[$y];
// Struktur der Tabelle einlesen
$def='';
$index=array();
$def .= "DROP TABLE IF EXISTS $tabelle;\r\n";
$def .= "CREATE TABLE $tabelle (\r\n";
$result3 = @mysql_db_query($database, "SHOW FIELDS FROM $tabelle");
while ($row = @mysql_fetch_array($result3)) {
$def .= " ".$row["Field"]." ".$row["Type"];
if ($row["Default"] != "") { $def .= " DEFAULT '".$row["Default"]."'"; }
if ($row["Null"] != "YES") { $def .= " NOT NULL"; }
if ($row["Extra"] != "") { $def .= " ".$row["Extra"]; }
$def .= ",\r\n";
}
$def = ereg_replace(",\r\n$", "", $def);
$result3 = @mysql_db_query($database, "SHOW KEYS FROM $tabelle");
while ($row = @mysql_fetch_array($result3)) {
$kname = $row["Key_name"];
if (($kname != "PRIMARY") && ($row["Non_unique"] == 0)) { $kname = "UNIQUE|".$kname; }
if (!isset($index[$kname])) { $index[$kname] = array(); }
$index[$kname][] = $row["Column_name"];
}
while (list($xy, $columns) = each($index)) {
$def .= ",\r\n";
if ($xy == "PRIMARY") $def .= " PRIMARY KEY (".implode($columns, ", ").")";
else if (substr($xy,0,6) == "UNIQUE") $def .= " UNIQUE ".substr($xy,7)." (".implode($columns, ", ").")";
else $def .= " KEY $xy (".implode($columns, ", ").")";
}
$def .= "\r\n);\r\n\r\n";
// Ende Struktur Modul
$db = @mysql_select_db($database);
$tabelle = "".$tabelle;
$text = "#\r\n# Daten für Tabelle `$tabelle`\r\n#\r\n\r\n";
$fd = fopen($file_name,"a+");
fwrite($fd, $text.$def);
fclose($fd);
$data = "";
if ($tabelle > "") {
$ergebnis[] = @mysql_select_db($database);
$result = @mysql_query("SELECT * FROM $tabelle");
$anzahl = @mysql_num_rows($result);
$spaltenzahl = @mysql_num_fields($result);
for ($i = 0; $i < $anzahl; $i++) {
$zeile = @mysql_fetch_array($result);
$data .= "INSERT INTO $tabelle (";
for ($spalte = 0; $spalte < $spaltenzahl; $spalte++) {
$feldname = @mysql_field_name($result, $spalte);
if ($spalte == ($spaltenzahl - 1)) {
$data.= $feldname;
} else {
$data.= $feldname.",";
}
}
$data .= ") VALUES (";
for ($k=0;$k < $spaltenzahl;$k++) {
if ($k == ($spaltenzahl - 1)) {
$data .= "'".addslashes($zeile[$k])."'";
} else {
$data .= "'".addslashes($zeile[$k])."',";
}
}
$data .= ");\r\n";
}
$data .= "\r\n";
} else {
$ergebnis[] = "Keine Tabelle übergeben";
}
$fd = fopen($file_name,"a+");
fwrite($fd, $data);
fclose($fd);
echo "Schreibe Tabelle ".$tabelle." in die ZIP-File<br>----------------------------<br><br>";
}
//--- DANK DEM UNBEKANNTER PROGGER - ENDE ----
Kommentar