datenbank synchronisation
-
Hallo Leute!
Wollte nur fragen ob jemand ne Idee hat wie man ein PHP/MySQL script am besten schreibt, dass die struktur eine tabelle auslesen soll und diese struktur an alle anderen tabellen (die angegeben sind) anpasst.
sprich dynamisch die struktur auslesen und dann immer mit ALTER die anderen Tabellen anpassen.
MySQL Dump geht nicht, da die Daten in den Tabellen nicht geändert werden dürfen - lediglich die struktur muss angepasst werden.
hat da jemand ne idee wie man da ran ghet?
ich hab keine ahnung wie ich di struktur einer tabelle auslese...
-
Ich hab irgenwie nicht so ganz verstanden, was du machen willst
Falls du mit Struktur meintest, was für Spalten eine Tabelle hat, schau dir mal mysql_list_fields anWas genau verstehst du unter 'Struktur anpassen'? Willst du einfach nur Spalten hinzufügen, oder was hast du vor?
-
Und warum machst du nicht eine richtige Replikation?
Schreibe dir gerne eine Anleitung dazu oder du besorst dir das PHP-Magazin 04.02[ Dieser Beitrag wurde am 28.03.2003 um 13:34 Uhr von Unix-Tom editiert. ]
-
Ist das PHP Magazin eigentlich gut und informativ? Gibt es was besseres in deutsch? Wieviel steht drin bzw. wieviele Seiten hat so eine Ausgabe ungefähr?
Als Schüler sinnvoll, oder nur wenn man das beruflich macht?Wäre dankbar für Infos
-
Ich finde es gut. Ca 100 Seiten
Es sind allerdings immer nur Spezielle Artikel drin die man oft nicht brauchen kann.
Ich kaufe auch nicht jede.
-
ich finde es hölle teuer--- muss aber gestehen, daß ich jede ausgabe hier zu liegen habe (bis auf die aktuellste, weil ich grad kein geld habe *g*)
es ist meiner meinung nach viel zu viel werbung drin. die artikel sind gut, oft lehrreich, informativ, eine mischung aus code und neuerungen einschließlich solche sachen wie aktuelle cms 'se und was php 5 so bringt.
ich nutze die zeitschriften für den unterricht, die studierenden interessiert es ziemlich, was aktuell so läuft.
aber wer netz zugang hat, findet das alles, ebenso ausführlich, auch im web ...
-
wenn man weiß wo! Vor allem muss man halt gezielt nach irgendwas suchen und bekommt das ganze nicht so schön zusammengestellt!
Als Schüler kostet es 41.60 Euro
-
ich finde es einfach zu teuer, als selbständige kann ich mir sowas momentan eigentlich fast nicht mehr leisten
-
Naja, dann schau ich mal Knapp 3 Stunden programmieren, und ich hab das Geld wieder drin
-
Original erstellt von Unix-Tom:
Und warum machst du nicht eine richtige Replikation?was genau meinst du damit?
eine Anleitung brauch ich eigentlich nicht - mir würde ein Wegweise schon reichen.aber wie gesagt: die Daten müssen erhalten werden.
Hintergrund:
Wir haben einen Development-Server (Dev-Server) und einen offiziellen Server (Real-Server).
nun müssen wir von Zeit zu Zeit die Datenbankstruktur leicht anpassen.Nun dachte ich mir, ich schreib ein script welches dynamisch alle Tabellen in allen Datenbanken vom Real-Server mit der Struktur der Tabellen auf dem Dev-Server angleicht.
Die Daten auf dem Real-Server dürfen dabei natürlich nicht verloren gehen.
auf die brutale:
daten sichern, table dropen, table mit neuer struktur erstellen, daten wieder inserten
geht es nicht, denn da spielt (verständlicherweise) mein Chef nicht mit.
-
Du hast also das Problem, das auf deinem Dev-Server praktisch keine / keine aktuellen / nur dummy Daten in der DB sind, und du hier die Struktur ändern willst. Und bei der anschließenden Übernahme auf der Real-Server sollen dabei keine Daten übernommen werden, sondern nur die entsprechende Struktur angepasst werden?
Falls du nur neue Spalten hinzufügst bzw. Spalten löscht oder neue Tabellen / DBs anlegst sollte dies mit den mysql_list_* Funktionen und ALTER machbar sein. Falls du aber auch Spalten umbenennst oder ähnliches wirst du wohl solche Änderungen mitprotokollieren müssen (wäre vielleicht auch sonst zu überlegen), damit du diese dann später auch auf dem Server per Script durchführen lassen kannst.
Ich hoffe ich konnte dir helfen
-
Ich bezeichne mal den Hauptrechner und die DB drauf als Server udn alle weiteren als Client.
Der Server Log alle änderung den den DB in ein Bin-Logfile. (Stellt man in der Config ein)
Dem Clienten teilt man nun mit wer der Server ist (Configfile)Der Server Loggt nun alle änderungen (Select, Insert , Update, Alter Table,etc) mit.
Der Client hollt diese SQL-Statements jede Minute von Server und führt sie bei sich aus.
Das geht auch so.Der Server ist nur zum Inserten und Update da. Auf den Clienten wird nur Select durchgeführt. Das führt dazu, daß Insert und Update bei vielen Selects nicht warten muss und man kann ein kleines Loadbalancing einführen.
Vorraussetzung. Beim Start des Servers und des Clienten müssen alle Daten Kositent auf beien Vorhanden sein.
Inserts mit LOAD INSERT FROM FILE funktioniert nur wenn der Client auch die Datei zur verfügung hat. Eigentlich logisch da er ja nur die Statements ausführt. Inserts mit Crypt funktionieren nicht da hier die Daten nicht gleich wären. Crypt erzeugt ja eine ausgabe nach bestimmten Rechnerkonstelationen und die sind auf verschiedenen Rechnern auch unterschiedlich. (Brauche ich aber dir nicht zu sagen. Mache es trotzdem )Wenn die verbindung zum Server ausfällt macht dies den Clienten nichts da er es immer wieder versucht.
So sind tausende Clienten möglich welche immer die Daten des Servers haben. Auch kann ein Client wiederum für einen anderen als Server arbeiten um nicht alle Clienten vom selben Server zu bedienen.Das ganze ins mit wenigen zeilen in der Config realisiert.
So kan nman auch ein Failover-System erzeugen.
Allerdings muss hier bei Transactiontabellen INODB aufgepasst werden.Wenn du willst Schicke ich dir mal den Artikel.
[ Dieser Beitrag wurde am 29.03.2003 um 15:45 Uhr von Unix-Tom editiert. ]
[ Dieser Beitrag wurde am 29.03.2003 um 15:46 Uhr von Unix-Tom editiert. ]
-
Aber sein Dev-Server brauch er wohl zum testen. D.h. die Änderungen sollen gar nicht sofort vom Real-Server übernommen werden, oder hab' ich ich da falsch verstanden
Naja, ist aber ja auch egal Shade Of Mine muss sich halt das raussuchen, was er meinteDer Artikel würde mich auch interessieren
[ Dieser Beitrag wurde am 29.03.2003 um 15:47 Uhr von flenders editiert. ]
-
flenders: Geht mal dafür ins Modforum.