gero
Anmeldedatum: 19.10.2006 Beiträge: 20
|
Verfasst am: 10.12.2008, 19:27 Titel: MySQL Datenbank BackUp mit Cronjob |
|
|
Download
Dieses Skript erstellt mit Hilfe von Cronjobs automatische Backups (auf Wunsch gzip) und legt diese auf den Server ab. Auf Wunsch werden die ZIP-Dateien auch an eine E-Mail gesendet. Es können auch mehrere Datenbanken angegeben werden. Für MySQL Version 4 und 5 sind einige Einstellungen vor und nach dem Setup notwendig.
Ausserdem ist das Skript wahrscheinlich stark von den jeweiligen Providereinstellungen abhängig.
Erklärung basiert auf Installation bei dF Reseller, MySQL 5 DB.
1. Download und Entpacken
2. setup.php öffnen - Zeile 12 - Host bei Bedarf ändern - die Angabe des Hosts wurde in der Setuproutine wohl vergessen
3. Alle Dateien hochladen - Ordner auf CHMOD777 - setup.php ausführen
4. Die Setup-Schritte sind selbsterklärend. Ich hab die Erfahrung gemacht das einige Einstellungen nich übernommen wurden. Diese können aber später in der config Datei vorgenommen werden
5. Nach dem Setup die config.php öffnen
das Array $_DB muss um einen key "HOST" mit folgenden Werten erweitert werden:
mysql3: 'localhost' (oder 127.0.0.1)
mysql4: '127.0.0.2'
mysql5: '127.0.0.3'
also ans ende der datei z.b.: $_DB[0]['HOST'] = '127.0.0.2';
6. In der Datei cron.php:
Die Funktion makebackup() sieht so aus:
| Code: |
function makeBackup() {
foreach($this->_DB as $key=>$value) {
$this->makeSqlDump($this->_DB[$key]['HOST'], $this->_DB[$key]['NAME'], $this->_DB[$key]['USER'], $this->_DB[$key]['PASS']);
}
if($this->_CONFIG['SAVEFILE_DAYS']>0) $this->deleteOldBackups();
if($this->_CONFIG['REMOTE']=='email') $this->emailFile();
if($this->_CONFIG['REMOTE']=='ftp') $this->ftpFile();
$this->saveLog();
}
|
Die Funktion makeSqlDump() sieht so aus:
| Code: |
function makeSqlDump($db_host, $db_name, $db_uname, $db_pass) {
$fileName = sprintf("%s/%s_%s.%s", $this->_CONFIG['SAVEFILE_PATH'], $db_name, date('Y-m-d'), $this->_CONFIG['GZIP'] ? 'sql.gz': 'sql');
if(is_file($fileName)) unlink($fileName);
$sys = sprintf("%s %s%s%s%s %s --user %s --password=%s -B %s %s> %s",
$this->_CONFIG['MYSQLDUMP_PATH'],
$this->_CONFIG['MYSQLDUMP_QUICK'] ? '-q ' : '',
$this->_CONFIG['MYSQLDUMP_ADD_DROP_TABLE'] ? '--add-drop-table ' : '',
$this->_CONFIG['MYSQLDUMP_EXTENDED_INSERT'] ? '-e ' : '-c ',
$this->_CONFIG['MYSQLDUMP_LOCK_TABLES'] ? '--add-locks ' : '',
$db_host ? '--host ' . $db_host : false,
$db_uname,
$db_pass,
$db_name,
$this->_CONFIG['GZIP'] ? '| gzip' : '',
$fileName
);
exec($sys);
array_push($this->_gz, $fileName);
$this->addLog(sprintf("Database %s saved as %s", $db_name, basename($fileName)));
}
|
ich denk daas müsste alles gewesen sein. den link zum thema gibts hier |
|