PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hilfe bei automatischem Import von bestimmtem mysqldmp



jackcracker
12-09-2014, 09:36
Hallo zusammen,

ich bin neu hier im Forum, wollte mich mal kurz vorstellen, und hab auch gleich schon ne Frage ;-)

Ich heiße Michael und bin als angehender Linux-Admin bei uns in der Firma unterwegs.

Folgendes Problem bzw. Aufgabenstellung, bei der ich mal Hilfe von Profis bräuchte.

wir haben zwei MySQL-Server, ein produktiver, der zweite läuft als Backup.

Vom produktiven Server werden alle 2 Stunden mit dem Script 'automysqlbackup.sh' Dumps erzeugt und anschließend per rsync auf den Backup-Server geschoben;
d.h. ich habe auf dem Backup-Server 12 gezippte MySQL-Dumps liegen, sieht dann so aus:

Sep 11 10:58 daily_test_2014-09-11_10h58m_Thursday.sql.gz
Sep 11 12:58 daily_test_2014-09-11_12h58m_Thursday.sql.gz
Sep 11 14:58 daily_test_2014-09-11_14h58m_Thursday.sql.gz
Sep 11 16:58 daily_test_2014-09-11_16h58m_Thursday.sql.gz
Sep 11 18:58 daily_test_2014-09-11_18h58m_Thursday.sql.gz
Sep 11 20:58 daily_test_2014-09-11_20h58m_Thursday.sql.gz
Sep 11 22:58 daily_test_2014-09-11_22h58m_Thursday.sql.gz
Sep 12 00:58 daily_test_2014-09-12_00h58m_Friday.sql.gz
Sep 12 02:58 daily_test_2014-09-12_02h58m_Friday.sql.gz
Sep 12 04:58 daily_test_2014-09-12_04h58m_Friday.sql.gz
Sep 12 06:58 daily_test_2014-09-12_06h58m_Friday.sql.gz

Nun möchte ich, daß immer der aktuellste Dump ( im obigen Bspl. also daily_test_2014-09-12_06h58m_Friday.sql.gz )
automatisch per mysql in die Datenbank importiert wird, d.h ich bräuchte eine Prozedur,
die
1. schaut, welches das aktuellste File ist
2. dieses entpackt
3. via mysql importiert
4. danach einen mysqlcheck macht
5. eine Statusmail an root schickt, ob bzw. daß der mysqlcheck erfolgreich war.

ja ... dafür bräuchte ich mal etwas Hilfe, und hoffe, der ein oder andere kann mir hier nen guten Tip geben, da ich,
grade was Punkt 1 betrifft, nicht so recht weiß, wie ich das lösen soll.

Also Punkt 2,3,4 und 5 würde ich mit folgenden Schritten per cron lösen:

Script mysqlimport.sh:


/bin/echo "--------------------------------------------"
/bin/date
echo Script "MySQL-Import"
cd /var/mysql_backup
gunzip daily_test_2014-09-12_06h58m_Friday.sql.gz && mysql -u root test < daily_test_2014-09-12_06h58m_Friday.sql && mysqlcheck test


... das Script bzw. die Ausgabe dann per cron in die Datei /var/log/mysqlimport.log schreiben lassen


root /root/mysqlimport.sh >> /var/log/mysqlimport.log


Anschließend per sh-Script mysqlimport2.sh einen tail der letzten x-Zeilen der mysqlimport.log machen:


tail -xx /var/log/mysqlimport.log | awk '{ print $0 "\x0c";}'


anschließend per cron an root schicken


/root/mysqlimport2.sh | mail -r root -s "Ergebnis MySQL-Import" root


... aber für Punkt 1 habe ich keine Ahnung wie ich das machen sollte, denn der Dateiname ändert sich ja immer, müßte also dynamisch erst in das Script eingefügt werden ...kann mir da jemand helfen?

Fragen beantworte ich natürlich gerne.

@ Admins:
falls das hier der falsche Bereich ist, bitte verschieben.

Viele Grüße
Michael

netzmeister
18-09-2014, 06:42
Hallo,

hm, da gibt es ja den mysqldumper

Damit lassen sich solche Sachen ganz einfach machen.
Schau das an, ..

Viele Grüße

Eicke

fork
25-09-2014, 22:21
Irgendso etwas in der Richtung:


neuester_dump=$(ls -tr daily_test*gz|tail -n 1)


Ansonsten gibt's unter Debian/Ubuntu noch das Paket automysqlbackup.

Den MySQL-Dumper würde ich nur verwenden, wenn ich keinen Shell-Zugriff habe.