Unter Schirmherrschaft von
Factory Seven Media & Consulting
running-cool.de
   X   

[Krankheiten von A bis Z]

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

   X   

[Medikamente von A bis Z]

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

   X   

[Diagnostik & Laborwerte von A bis Z]

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

   X   

[Therapieverfahren von A bis Z]

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

   X   

[Gesundheitsthemen von A bis Z]

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

   X   

[Symptome von A bis Z]

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

   X   
Suche

MySQL-/ MariaDB-Datenbanksicherung mit PHP via mysqldump und scp

Einfach und elegant lässt sich die Sicherung von eine oder mehrere Datenbanken über PHP in Kombination mit mysqldump erreichen.

Was ist mysqldump

mysqldump ist ein Sicherungstool, das zur MySQL gehört. Mit mysqldump können Sicherungskopien von einzelnen oder mehren MySQL-Datenbanken sowie einzelner Tabellen erstellt werden. Der Befehl kann auf der Kommandozeile oder innerhalb eines Scripts ausgeführt werden und erstellt eine SQL-Datei, die die Struktur und die Daten der Datenbank enthält.

PHP-Backup-Script für mehrere ausgewählte MySQL-/MariaDB-Datenbanken via scp mit anschließender E-Mail-Benachrichtigung

Das in Listing 1 vorgestellte Script sichert und komprimiert ausgewählte Datenbanken aus einem MySQL- oder MariaDB-Datenbankmanagementsystem. Anschließend wird über PHP-Mail eine Benachrichtigungs-E-Mail versand.

Listinng 1: PHP-Sicherungsscript für mehrere Datenbanken


<?php

// Verbindungsparameter für die MySQL-/ MartaDB
$mysql_host = 'localhost';
$mysql_user = 'root';
$mysql_password = 'password';

// Verbindungsparameter zum externen Backup-Server
$extern_host = 'IP-Adresse';
$extren_user = 'ExternerUser';
$extern_password = 'ExternesPasswort';

// Datenbanken auswählen
$databases = array("db1", "db2", "db3");

// Pfad zum Speicherort des Backups
$backup_path = '/Pfad/zum/Speicherort/backups/';

// Sicherung starten
foreach($databases as $database) {

// Zeitstempel für Dateinamen erstellen
$timestamp = date("Ymd_");
$uhr = date("_H-i-s");

// Dateiname fürden Backupfile zusammenbauen
$backup_file = "$timestamp$database$uhr.sql.gz";

// Befehl für mysqldump erstellen
$command = "mysqldump -h $mysql_host --user=$mysql_user --password=$mysql_password  $database | gzip > $backup_path$backup_file";

// Sicherung ausführen
system($command);

// Optionale Sicherung --- Start ---
// Die komprimierten MySQL-Backups via scp sichern
// ---------------------------------------

$connection = ssh2_connect("$extern_host", 22);

// Authentifizierung mit Benutzername und Passwort
ssh2_auth_password($connection, "$extren_user", "$extern_password");

// Datei von lokalem Pfad auf Remote-Server übertragen
ssh2_scp_send($connection, "$backup_path$backup_file", '/exterener/server/pfad/zum/$backup_file"', 0644);

// -----------------------------------
// Optionale Sicherung --- Ende ---

}

// E-Mail-Benachrichtigung senden
mail("Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!", "MySQL Backup", "Die Sicherung der MySQL-Datenbanken wurde erfolgreich durchgeführt. Dateiname: $backup_file");

?>


Weitere Parameter in "$command" sind möglich

In der Variable "$command" aus Listing 1 können je nach Versionsstatus der MySQL noch verschieden Parameter zusätzlich eingefügt werden.

Listing 2: Erzeugung eines performanteren MySQL-/ MariaDB-Dumps über die "$command"-Variable


$command = "mysqldump -h $mysql_host --user=$mysql_user --password=$mysql_password  --events $database --ignore-table=mysql.innodb_index_stats --ignore-table=mysql.innodb_table_stats | gzip > $backup_path$backup_file";


 

Komplette Sicherungen aller MySQL-/ MariaDB-Datenbanken 

Listing 3: Gesamte Sicherung eines MySQL-/ Maria-Datenbankmanagementsystems über ein PHP-Script


<?php

// Verbindungsparameter für die MySQL-/ MartaDB
$db_host = "localhost";
$db_user = "rooti";
$db_pass = "EigenesPasswort";

// Verbindungsparameter zum externen Backup-Server
$extern_host = 'IP-Adresse';
$extren_user = 'ExternerUser';
$extern_password = 'ExternesPasswort';

// Pfad zum Speicherort des Backups
$backup_path = '/Pfad/zum/Speicherort/backups/';

// Zeitstempel für Dateinamen erstellen
$timestamp = date("Ymd_");
$uhr = date("_H-i-s");

// Dateiname fürden Backupfile zusammenbauen
$backup_file = "$timestamp$database$uhr.sql.gz";

// Erstelle Dump der Datenbank
$command = "mysqldump --user=$db_user --password=$db_pass --host=$db_host $db_name --all-databases | gzip > $backup_path$backup_file";
exec($command);

// Optionale Sicherung --- Start ---
// Die komprimierten MySQL-Backups via scp sichern
// ---------------------------------------

$connection = ssh2_connect("$extern_host", 22);

// Authentifizierung mit Benutzername und Passwort
ssh2_auth_password($connection, "$extren_user", "$extern_password");

// Datei von lokalem Pfad auf Remote-Server übertragen
ssh2_scp_send($connection, "$backup_path$backup_file", '/exterener/server/pfad/zum/$backup_file"', 0644);

// -----------------------------------
// Optionale Sicherung --- Ende ---

// E-Mail-Benachrichtigung senden
mail("Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!", "MySQL Backup", "Die Sicherung der MySQL-Datenbanken wurde erfolgreich durchgeführt. Dateiname: $backup_file");

?>


Erzeung eines Performantes Dumps über die "$command"-Variable

In der Variable "$command" aus Listing 3 können je nach Versionsstatus der MySQL noch verschieden Parameter zusätzlich eingefügt werden. Gerade bei sehr vielen und großen Datenbanken innerhalb eines DBMS macht dieser performanterer Dump-Ansatz sehr viel Sinn.

Listing 4: Erzeugung eines performanteren MySQL-/ MariaDB-Dumps über die "$command"-Variable


$command = "mysqldump --user=$db_user --password=$db_pass --host=$db_host $db_name --events --all-databases --ignore-table=mysql.innodb_index_stats --ignore-table=mysql.innodb_table_stats | gzip > $backup_path$backup_file";


 

Inhaltsverzeichnis Top
Wir benutzen Cookies

Wir nutzen Cookies auf unserer Website. Einige von ihnen sind essenziell für den Betrieb der Seite, während andere uns helfen, diese Website und die Nutzererfahrung zu verbessern (Tracking Cookies). Sie können selbst entscheiden, ob Sie die Cookies zulassen möchten. Bitte beachten Sie, dass bei einer Ablehnung womöglich nicht mehr alle Funktionalitäten der Seite zur Verfügung stehen.