Hallo!
Ich würde gerne meine Datenbank täglich selber sichern, und wenn möglich per Mail an einen anderen Server senden.
Ich dachte mir Ich schreibe genau so eine Dump-Schema, so wie phpMyAdmin es erzeugen kann - "Struktur und Daten" - in eine Datei wie 'Sicherung_DB12345_20020220.txt'.
Dann würde ich jede Nacht einen Cronjob laufen lassen, der dieses Script ausführt, evtl auch automatisch alle Dateien älter als eine Woche löscht und mir die Datei zusätzlich noch als attachment per Mail zusendet. Im Prinzip weiß ich _dass_ das geht, nur weiß ich nicht genau wie ich dieses Schema genau so schön wie phpMyAdmin in die .txt Datei schreiben kann, wohl gemerkt genau so, dass ich mit dieser Datei die kpl DB dieses Tages wiederherstellen könnte.
Die DB ist auch nicht ganz so groß, also kein Problem wegen des Speichers.
1. Frage: Was haltet Ihr davon? Ist das vernünftig oder gibt es bessere Möglichkeiten die DB automatisch und regelmäßig zu sichern?
2. Frage: LOAD DATA INFILE hab ich schon gefunden und mir auch mal die entsprechende phpMyAdmin Datei näher angeschaut, nur ist die aufgrund der Einstellmöglichkeiten recht kompliziert, aber als Grundlage ganz in Ordnung denke ich.
Problem an diesem Script, es soll automatisch, nicht manuell ausgeführt werden. Durch [LOCAL] gebe ich ja einen Speicherplatz auf meinem 'lokalen' PC an, nicht auf dem Server, oder? Und da beginnen die Probleme, kann ich [LOCAL] einfach weglassen und einen direkten Pfad auf dem Server angeben? Z.B. '/www/daten/datei.txt'? Wie sieht das dann aus mit file-privileges, hat das was mit CHERMOD zu tun oder ist das ein MySQL Recht? Wenn letzteres, woher weiß ich ob ich es habe?
Bekomme ich wenn das so funktioniert auch die "Create Table" und "Insert Into" Anweisungen, genau wie in phpmyadmin?
Naja, das wars fürs erste, hab mal das entsprechende phpMyAdmin-Script eingefügt!
Würde mich freuen wenn jemand mir den ein oder anderen Tipp dazu geben könnte!
Grüße
Andreas
<?php
/* $Id: ldi_check.php,v 1.11 2001/11/23 01:03:20 loic1 Exp $ */
/**
* This file checks and builds the sql-string for
* LOAD DATA INFILE 'file_name.txt' [REPLACE | IGNORE] INTO TABLE table_name
* [FIELDS
* [TERMINATED BY '\t']
* [OPTIONALLY] ENCLOSED BY "]
* [ESCAPED BY '\' ]]
* [LINES TERMINATED BY '\n']
* [(column_name,...)]
*/
/**
* Gets some core scripts
*/
require('./libraries/grab_globals.lib.php');
require('./libraries/common.lib.php');
/**
* The form used to define the query has been submitted -> do the work
*/
if (isset($btnLDI) && ($textfile != 'none')) {
if (!isset($replace)) {
$replace = '';
}
// Formats the data posted to this script
$textfile = PMA_sqlAddslashes($textfile);
if (get_magic_quotes_gpc()) {
$field_terminater = stripslashes($field_terminater);
$enclosed = PMA_sqlAddslashes(stripslashes($enclosed));
$escaped = PMA_sqlAddslashes(stripslashes($escaped));
$line_terminator = stripslashes($line_terminator);
$column_name = PMA_sqlAddslashes(stripslashes($column_name));
} else {
$enclosed = PMA_sqlAddslashes($enclosed);
$escaped = PMA_sqlAddslashes($escaped);
$column_name = PMA_sqlAddslashes($column_name);
}
// Builds the query
$query = 'LOAD DATA LOCAL INFILE '' . $textfile . ''';
if (!empty($replace)) {
$query .= ' ' . $replace;
}
$query .= ' INTO TABLE ' . PMA_backquote($into_table);
if (isset($field_terminater)) {
$query .= ' FIELDS TERMINATED BY '' . $field_terminater . ''';
}
if (isset($enclose_option) && strlen($enclose_option) > 0) {
$query .= ' OPTIONALLY';
}
if (strlen($enclosed) > 0) {
$query .= ' ENCLOSED BY '' . $enclosed . ''';
}
if (strlen($escaped) > 0) {
$query .= ' ESCAPED BY '' . $escaped . ''';
}
if (strlen($line_terminator) > 0){
$query .= ' LINES TERMINATED BY '' . $line_terminator . ''';
}
if (strlen($column_name) > 0) {
if (PMA_MYSQL_INT_VERSION >= 32306) {
$query .= ' (';
$tmp = split(',( ?)', $column_name);
for ($i = 0; $i < count($tmp); $i++) {
if ($i > 0) {
$query .= ', ';
}
$query .= PMA_backquote(trim($tmp[$i]));
} // end for
$query .= ')';
} else {
$query .= ' (' . $column_name . ')';
}
}
// Executes the query
// sql.php will stripslash the query if 'magic_quotes_gpc' is set to on
if (get_magic_quotes_gpc()) {
$sql_query = addslashes($query);
} else {
$sql_query = $query;
}
include('./sql.php');
}
/**
* The form used to define the query hasn't been yet submitted -> loads it
*/
else {
include('./ldi_table.php');
}
?>