Da ich aufgrund der Übersichtlichkeit gerne für jede Anwendung eine extra DB (mit eigenem User, weil Webspace einen Super-User verbietet) anlege, hat es mich sehr gestört, für jede DB eine MSD-Instanz installieren zu müssen. Nachdem ich hier im Forum gelesen habe, dass es keine andere Möglichkeit gibt (außer in einer späteren kommerziellen Version), habe ich mir den Code etwas näher angeschaut und mir eine Lösung selbst zusammen gebastelt. Eines möchte ich gleich klar stellen: Ich habe wenig bis keine Ahnung von Perl, man kann das ganze also mit Sicherheit besser programmieren.
Ich habe lediglich zwei Dateien editiert: crondump.pl und mysqldumper.conf
mysqldumper.conf
DB-Zugangsdaten ersetzt durch
##############
#data for DB 1
##############
$host0="host_DB1";
$name0="name_DB1";
$user0="user_DB1";
$pass0="pass_DB1";
##############
#data for DB 2
##############
$host1="host_DB2";
$name1="host_DB2";
$user1="host_DB2";
$pass1="host_DB2";
##############
#data for DB 3
##############
$host2="host_DB3";
$name2="host_DB3";
$user2="host_DB3";
$pass2="host_DB3";
$cron_save_all_dbs=0;
crondump.pl
ab Zeile 76:
my @db_host;
my @db_name;
my @db_user;
my @db_pass;
my $dbhost;
my $dbname;
my $dbuser;
my $dbpass;
Alle host-,name-,user- und pass-Variablen (aus mysqldumper.conf) in user vars qw (...) übernehmen.
Ab Zeile 183/183 "Jetzt den Dump anschmeißen"
@db_host = ($host0, $host1, $host2);
@db_name = ($name0, $name1, $name2);
@db_user = ($user0, $user1, $user2);
@db_pass = ($pass0, $pass1, $pass2);
if($cron_save_all_dbs==0) {
for(my $m = 0; $m < 3; $m++) {
$dbhost = $db_host[$m];
$dbname = $db_name[$m];
$dbuser = $db_user[$m];
$dbpass = $db_pass[$m];
$command_beforedump=$command_beforedump_array;
$command_afterdump=$command_afterdump_array;
ExecuteCommand(1);
DoDump();
ExecuteCommand(2);
}
PrintOut("<br><strong>Crondump finished.</strong><br>");
closeScript();
Das wars schon! Habe mir einen externen Cronjob angelegt und sichere nun einmal täglich alle DBs auf einen Schlag.
Sicherlich ist das nicht sehr wartungsfreundlich. Für meine Zwecke funktioniert es aber und man benötigt nur eine MSD-Instanz.