Corin Corvus
Lieutenant
- Registriert
- Dez. 2010
- Beiträge
- 831
Hallo,
ich habe eine kleine Frage, da ich im Netz keine eindeutigen Antworten auf meine Fragen erhielt.
Zuerst einmal mein Ziel: Wir sind eine kleine Community, die bereits beginnt zu wachsen. Wir haben mehrere Dienste wie, Teamspeak, einen jabber Messenger, unsere Webseite und eine Cloud auf der jeder User Speicher erhält.
Da es ein größerer Aufwand für den User und auch für mich ist, sich auf jedem Dienst zu registrieren und Freizuschalten, möchte ich gerne eine Automatisierung und einen Abgleich der Datenbank vornehmen lassen, der stündlich die Datenbank von der Webseite sichert, der Server diese Abholt und entpackt. Im Nachhinein wird diese importiert auf eine zweite Datenbank namens "webdb". Diese soll sich dann im Anschluss möglichst schnell abgleichen. Wichtig dabei sind ausschließlich User, da nur der Useranteil gezogen wird.
User_login
User_pass
User_mail
Dies sind nun einfach beschrieben die Daten, die rüber gehen sollen. Inwiefern die einzelnen Datenbanken aktuell laufen, kann ich zu diesem Zeitpunkt noch nicht sagen. Allerdings kann ich die Infos heute Nachmittag nachreichen, wenn gewünscht.
Was schon funktioniert.
Script:
Es wird stündlich ein Backup der User Tabelle aus der Datenbank, gepackt in einem Ordner abgelegt.
Ich habe ein kleines Script geschrieben, welches eine gepackte Datei über wget abholt. Im Anschluss wird direkt per tar die Datei in einen anderen Ordner entpackt. Von diesem Ordner aus wird ein Datenbank import ausgeführt.
Hier sind schon Fragen: Ich nutze diesen Befehl. Überschreibt er alle vorhandenen Daten oder ergänzt er nur nicht vorhandene oder löscht beispielsweise nicht mehr vorhandene? Wenn er alles überschreibt, hätte das negative Auswirkungen auf den Abgleich wenn der Vorgang mal länger dauern sollte?
Im weiteren bin ich noch etwas unerfahren, was MySQL angeht. Ich hatte in der Ausbildung leider nur 2 Stunden SQL Datenbanken und das ist ein wenig Mager. Auf der Arbeit nutzen wir das auch nicht so viel, wodurch ich nun selbst Kenntnisse aneignen möchte.
Wie kann ich am Sinnvollsten die Tabellen verknüpfen? Ich bezweifle, dass die Cloud oder der Messenger den gleichen Prefix nutzen geschweige die gleichen Bezeichnungen. Dementsprechend müsste ja eine Beziehung eingerichtet werden, wodurch der Abgleich stattfinden kann, oder?
Ich freue mich auf Antworten und auch auf Verbesserungsvorschläge des Scriptes. Versuche, das Script mit zu loggen, sind leider bisher nicht gelungen.
Gruß
ich habe eine kleine Frage, da ich im Netz keine eindeutigen Antworten auf meine Fragen erhielt.
Zuerst einmal mein Ziel: Wir sind eine kleine Community, die bereits beginnt zu wachsen. Wir haben mehrere Dienste wie, Teamspeak, einen jabber Messenger, unsere Webseite und eine Cloud auf der jeder User Speicher erhält.
Da es ein größerer Aufwand für den User und auch für mich ist, sich auf jedem Dienst zu registrieren und Freizuschalten, möchte ich gerne eine Automatisierung und einen Abgleich der Datenbank vornehmen lassen, der stündlich die Datenbank von der Webseite sichert, der Server diese Abholt und entpackt. Im Nachhinein wird diese importiert auf eine zweite Datenbank namens "webdb". Diese soll sich dann im Anschluss möglichst schnell abgleichen. Wichtig dabei sind ausschließlich User, da nur der Useranteil gezogen wird.
User_login
User_pass
User_mail
Dies sind nun einfach beschrieben die Daten, die rüber gehen sollen. Inwiefern die einzelnen Datenbanken aktuell laufen, kann ich zu diesem Zeitpunkt noch nicht sagen. Allerdings kann ich die Infos heute Nachmittag nachreichen, wenn gewünscht.
Was schon funktioniert.
Script:
HTML:
#!/bin/sh
############################
# Information
############################
localzippath="/X/db/dbzip/";
localunzippath="/X/db/dbunzip/";
localzipdata="/X/db/dbzip/webdb*"
localunzipdata="/X/db/dbunzip/webdb.sql";
ftpuser="USER";
ftppw="PASSWORT";
remotepath="PFAD";
remoteadress="www.X.de";
db="webdb";
mysqluser="USER";
#############################
# Vorgang
#############################
# FTP Abholung
cd $localzippath
wget -c ftp://$ftpuser:$ftppw@$remoteadress/$remotepath
# Entpackvorgang
cd $localunzippath
tar -xvzf $localzipdata
# MySQL Import
cd /home/pi/db/dbunzip/
mysql -u $mysqluser -pPASSWORT $db < $localunzipdata
rm $localzippath/*
rm $localunzippath/*
Es wird stündlich ein Backup der User Tabelle aus der Datenbank, gepackt in einem Ordner abgelegt.
Ich habe ein kleines Script geschrieben, welches eine gepackte Datei über wget abholt. Im Anschluss wird direkt per tar die Datei in einen anderen Ordner entpackt. Von diesem Ordner aus wird ein Datenbank import ausgeführt.
HTML:
mysql -u $mysqluser -pPASSWORT $db < $localunzipdata
Hier sind schon Fragen: Ich nutze diesen Befehl. Überschreibt er alle vorhandenen Daten oder ergänzt er nur nicht vorhandene oder löscht beispielsweise nicht mehr vorhandene? Wenn er alles überschreibt, hätte das negative Auswirkungen auf den Abgleich wenn der Vorgang mal länger dauern sollte?
Im weiteren bin ich noch etwas unerfahren, was MySQL angeht. Ich hatte in der Ausbildung leider nur 2 Stunden SQL Datenbanken und das ist ein wenig Mager. Auf der Arbeit nutzen wir das auch nicht so viel, wodurch ich nun selbst Kenntnisse aneignen möchte.
Wie kann ich am Sinnvollsten die Tabellen verknüpfen? Ich bezweifle, dass die Cloud oder der Messenger den gleichen Prefix nutzen geschweige die gleichen Bezeichnungen. Dementsprechend müsste ja eine Beziehung eingerichtet werden, wodurch der Abgleich stattfinden kann, oder?
Ich freue mich auf Antworten und auch auf Verbesserungsvorschläge des Scriptes. Versuche, das Script mit zu loggen, sind leider bisher nicht gelungen.
Gruß