php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 03.10.2007, 14:04  
Benutzer
 
Registriert seit: 17.07.2007
Beiträge: 34
FreAkaZoiD
Standard Datenbanken abgleichen (getrennte Server)

Hallo zusammen,

Ich habe 2 Server und möchte nun als Backup alle Daten der DB1 auf Server1 mit DB2 auf Server2 abgleichen.

Die Suche im Forum hat mir leider nur das ausgespuckt...

Meine Überlegung wäre bisher einen Cronjob aufzurufen, welcher zuerst die letzte id der Backuptabelle ausliest - danach wollte ich mittels file_get_contents() die neuen Datensätze auslesen, und diese in Schleife und auch wieder mit file_get_contents() an ein Script übergebe, welches mir die Daten dann wieder in die Backup-DB reinspielt.

Leider kommt mir das ganze vor als ob ich mit der Tür ins Haus falle,
eine bessere Idee habe ich jedoch z.Zt. leider nicht *achselnzuck* *grübel*

und genau da kommt ihr ins Spiel

>> schubst mich doch mal bitte wieder in die richtige Richtung!
FreAkaZoiD ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 03.10.2007, 21:03  
Erfahrener Benutzer
 
Registriert seit: 11.01.2005
Beiträge: 106
MerlinderZauberer ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo FreAkaZoiD,

ich habe eine ähnliche Konstellation.

Ich selber und User erstellen für eine astronomische Homepage Daten auf dessen Datenbankserver.

Diese gesammelten Daten verwende ich für meine eigene Homepage. Dazu ist es notwendig, die entsprechenden Tabellen auf meiner Datenbankserver zu duplizieren.

Ich habe mir dafür eine Klasse erstellt, die funktionell mit verschiedenen Tabellen diese Aufgabe erledigt. Angestoßen wird das ganze durch ein Cronjob.

Mein PHP-Script bestreitet dabei folgenden Weg:
1. Verbindung mit Datenbank A
2. Auslesen jeder Tabelle inkl. Daten von Datenbank A und speichern als SQL-Dump
3. Verbindung mit Datenbank B
4. Zeilenweise lesen des SQL-Dump und speichern in einem Array
5. Ausführung des Array mit dem SQL-Statment "Update".

Dabei möchte ich folgendes bemerken:
Da meine Tabellen sehr groß sind, lese ich jeweils aus den Tabellen z.B. 20000 Datensätze aus und speichere diese dann anhängend in meinem SQL-Dump.
Beim Import Verfahre ich in umgekehrter Reihenfolge. Lesen von 20000 Datensätze und dann zur Datenbank schicken.
Mit diesen Zwischenschritt vermeide ich, das der Datenspeicher nicht mehr ausreicht.

Schöne Grüße

Merlin der Zauberer
__________________
www.Sternenwelt.net - Astronomie im Internet -
www.SternenweltForum.net - Antworten rund um die Astronomie -
MerlinderZauberer ist offline  
Alt 03.10.2007, 23:39  
Erfahrener Benutzer
 
Registriert seit: 17.01.2006
Beiträge: 468
Slava
Standard

Es gibt eigentlich standardlösungen für solche probleme, besonders wenn das schon von anfang an geplant war.
man erstellt eine Observer-Tabelle in der jede änderung in tabellen erfasst wird.
das verlangt natürlich, dass jede delete,update und insert in Observer-Tabelle abgespeichert wird.
Tabelle Ovserver
id|database|table|operation set('delete','update','insert') |key_name|key_value|timestamp

teilweise müssen die sql-abfragen die Tabelle verändern angepasst werden, aber viele sachen kann man über Triger und Proceduren erledigen.
in jedem fall wird bei den grösseren Tabellen die suche auf die veränderte datensätze nach datum sehr schnell.

Alternative:
Bei den Datenbanken, die mit wichtigen daten gefühlt sind, wird eigentlich schon von anfang die update, delete, und insert zeitlich erfasst.

bei delete: wird die zeile in einem zusatzfeld einfach als delete markirt und timestamp von delete eingefügt

bei insert: zeitstempel in einem zusatzfeld eingefügt.

bei update:
kopiert man erst der inhalt, der verändert wird in eine extra-tabelle mit dem zeitstempel
danach werden die zeilen verändert und gleichzeitig in einem extra-feld update-timestamp eingefügt.

Diese Massnamen verlangsamen datenbank bei insert, update und delete, aber dafür hat man volle kontrolle über die veränderungen.
Also es ist danach ein Kinderspiel alle datensätze die ab datum X verändert wurden zu finden und auf ein anderen Dbserver zu importieren.

schau dir auch das mal an: http://dev.mysql.com/doc/refman/5.0/en/query-log.html
__________________
Slava
http://bituniverse.com
Slava ist offline  
Alt 09.10.2007, 11:41  
Benutzer
 
Registriert seit: 17.07.2007
Beiträge: 34
FreAkaZoiD
Standard

Hi zusammen,

Vielen Dank für eure Hilfe!

@Merlin: Hast Du die Klasse irgendwo freigegeben ?
@Slava: Genialer Hinweis - leider arbeite ich hier i.d.R. an großen bestehenden Systemen. Aber für meine eigenen Projekte werd ich das mal übernehmen

LG, und sorry für den delay!
FreAkaZoiD ist offline  
Alt 09.10.2007, 19:52  
Erfahrener Benutzer
 
Registriert seit: 11.01.2005
Beiträge: 106
MerlinderZauberer ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo FreAkaZoiD,

die von mir erstellte Klasse ist zur Zeit noch experimentel. Ich weiss nicht, ob Dir das reicht?

Merlin der Zauberer
__________________
www.Sternenwelt.net - Astronomie im Internet -
www.SternenweltForum.net - Antworten rund um die Astronomie -
MerlinderZauberer ist offline  
Alt 10.10.2007, 08:34  
Benutzer
 
Registriert seit: 17.07.2007
Beiträge: 34
FreAkaZoiD
Standard

Guten Morgen Merlin,

Danke für die Antwort, jedoch kenn ich mich mit Klassen überhaupt nicht aus, und könnte das dann nicht mal auf meine Bedürfnisse anpassen...

LG
FreAkaZoiD ist offline  
Alt 10.10.2007, 20:14  
Erfahrener Benutzer
 
Registriert seit: 11.01.2005
Beiträge: 106
MerlinderZauberer ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Kennst Du Dich mit Funktionen aus?

In dieser weise musst Du Dir vorstellen, das meine Klasse instanziert wird und die enrsprechende Funktionalität zur Verfügung steht.

Gruß

Merlin der Zauberer
__________________
www.Sternenwelt.net - Astronomie im Internet -
www.SternenweltForum.net - Antworten rund um die Astronomie -
MerlinderZauberer ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] WAMP unter Windows 2000 Server oder Windows 2003 Server Mecronomecon Server, Hosting und Workstations 3 18.06.2008 09:15
[Erledigt] Server durchsuchen mit php PHP Tipps 2008 7 18.08.2007 12:24
Mysql Server Einstellunen Optimieren pchero Datenbanken 3 01.05.2007 19:50
Server für shell_exec() / exec() vorbereiten Martek Server, Hosting und Workstations 2 16.03.2007 15:03
streaming von videos, server lahmt bereits nach einem abruf snowflow Server, Hosting und Workstations 6 30.11.2006 18:04
mysql_connect gleicher server verschiedenen datenbanken MadCro PHP Tipps 2006 5 28.04.2006 12:57
Frage zu Windows Server 2003 b++ Off-Topic Diskussionen 1 03.03.2006 09:41
[Erledigt] verschiedene Versionen auf einem W2K3 Server betreiben PHP Tipps 2006 2 13.01.2006 17:39
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
[Erledigt] Funktionssammlung auf externen Server auslagern PHP Tipps 2005 20 29.05.2005 14:04
Neuer Strato Server apache 2 Mod Rewrite & htaccess Prob Stemmi Server, Hosting und Workstations 4 02.05.2005 00:29
[Erledigt] Mit PHP Script auf einem Root Server per SSH einlogen PHP Tipps 2005 5 27.03.2005 19:24
wieviele datenbanken auf server vorhanden? Datenbanken 1 17.11.2004 08:29
Datenbanken abgleichen PHP-Fortgeschrittene 2 22.10.2004 18:42
Internal Server Error Skazi PHP Tipps 2004 2 06.10.2004 22:31

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
sql datenbanken abgleichen, server php(zeit) und sql abgleichen, getrennte server, datenbank über 2 getrennte server, datenbank abgleichen strato server, datenbanken abgleichen, datenbankserver abgleichen, php mit externer sql datenbank abgleichen, sql update abgleich über datum einzelne zeile php, sql: datenbanken abgleichen

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:07 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.