• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

MySQL Master u. Slave = ein Rechner

sarajevo

Newbie
Hallo an alle,


wir hier in der Firma haben nen MySQL-Server laufen auf diesem soll zeitgleich ein Slave Server laufen um eine Replikation des ganzen zu haben...
Ich habe nun ein wenig das Referenzhandbuch durchstöbert und bin auf mysql_multi gestoßen der anscheinend mit mehreren Datenbanken auf einem System umgehen kann.
Ist dies der beste Weg um zwei Datenbanken nebeneinander zu betreiben ?
Kann ich mit dem Packetmanager (in diesem Fall apt-get von Debian) eine zweite Datenbank installieren ohne die erste zu "beschädigen"?
Oder ist ein manuelle installation notwendig ?


Vielen Dank


Edit:
Hab mich da verlesen...mysql_multi kann mehrere Instanzen des gleichen Servers starten die er aus der my.cnf entnimmt...dann ändert sich die Frage folgt.
Kann eine Instanz als Master, die andere als Slave laufen und das dabei der Master auf der selben Kiste Repliziert wird?
 

panamajo

Guru
sarajevo schrieb:
wir hier in der Firma haben nen MySQL-Server laufen auf diesem soll zeitgleich ein Slave Server laufen um eine Replikation des ganzen zu haben...
Wozu soll das gut sein? Als Backup ist Replikation grundsätzlich nicht geeignet, auf derselben Maschine ergibt das überhaupt keinen Sinn mehr.

sarajevo schrieb:
Kann ich mit dem Packetmanager (in diesem Fall apt-get von Debian) eine zweite Datenbank installieren ohne die erste zu "beschädigen"?
Oder ist ein manuelle installation notwendig ?
Es ist gar keine weitere Installation notwendig, schließlich läuft der MySQL Server ja schon.
Für dein Vorhaben ist es allerdings nötig eine komplette Konfiguration für den 2. Server zu erstellen (und für dessen DBs, ...), siehe http://dev.mysql.com/doc/refman/5.0/en/multiple-servers.html
sarajevo schrieb:
Kann eine Instanz als Master, die andere als Slave laufen und das dabei der Master auf der selben Kiste Repliziert wird?
Techn. sollte das gehen. Ich kann mir nur kein Szenario vorstellen bei dem das irgendetwas bringt.
 
OP
sarajevo

sarajevo

Newbie
Techn. sollte das gehen. Ich kann mir nur kein Szenario vorstellen bei dem das irgendetwas bringt.

genau das dachte ich auch aber naja wie will man es dennen erklären die keine ahnung von haben es aber trotzdem mit biegen und brechen wollen


ich bin mir dessen bewusst, nur wir haben bei unserem hoster ich denke mal an die drei replikas des master server laufen und warum ausgerechnet noch einer auf dem master ist mir schleierhaft.
 

panamajo

Guru
sarajevo schrieb:
genau das dachte ich auch aber naja wie will man es dennen erklären die keine ahnung von haben es aber trotzdem mit biegen und brechen wollen
Naja irgendein Grund werden "die" ja schon angeben, das würde mich interessieren.
 
OP
sarajevo

sarajevo

Newbie
dachte der chef wollte beides auf einem war dann doch ein missverständnis, hat sich erledigt..

danke dir denoch...

ist es eigentlich zwingend erforderlich den master bei der synchronisation von slave und master zu stoppen oder kann der nebenbei weiterhin seinen dienst verrichten ?

den ein flush tables with read lock; würde ja alle schreibvorgänge blockieren oder nicht ?
 
OP
sarajevo

sarajevo

Newbie
Was ist den das Datenverzeichnis des Master-Servers?

/var/lib/mysql oder /tmp ?

Ich brauche das ganze für den Snapshot

in der manual steht nur das Arbeitsverzeichnis von MySQL
 

gameboy

Hacker
panamajo schrieb:
sarajevo schrieb:
wir hier in der Firma haben nen MySQL-Server laufen auf diesem soll zeitgleich ein Slave Server laufen um eine Replikation des ganzen zu haben...
Wozu soll das gut sein? Als Backup ist Replikation grundsätzlich nicht geeignet, auf derselben Maschine ergibt das überhaupt keinen Sinn mehr.
Meines Erachtens kann es schon Sinn machen, zwei MySQL-Instanzen mit der gleichen Datenbank per Master-Slave-Synchronisation auf ein und demselben Rechner laufen zu lassen. Die Möglichkeit, den Slave anzuhalten und davon dann in aller Ruhe ein konsistentes Backup zu ziehen, ohne den Betrieb des Masters zu stören, klingt für mich schon verlockend. Ausprobiert habe ich das selbst noch nicht, aber in c't 22/2008 ist die Vorgehensweise auf Seite 210f beschrieben.

Viele Grüße,
gameboy.
 
OP
sarajevo

sarajevo

Newbie
Danke für die Tips

/var/lib/mysql scheint also das Arbeitsverzeichnis zu sein...

nun lese ich vermehrt das der Schritt mit dem Snapshot garnicht erwähnt wird da stellt sich mir die Frage ob die ganze Sache überhaupt nötig ist ?

Oder ob

### ID des Slave Servers
server-id = 10
### IP bzw. DNS-Name des Masters
master-host = XX.239.214.XXX
### Replika-User @ Master
master-user = XXX
### Passwort @ Master
master-pass = XXXXXXXX

schon ausreichend wäre damit MySQL die benötigten Daten selbst überträgt ?


Grüße
 
OP
sarajevo

sarajevo

Newbie
Macht das ganze eigentlich einen Unterschied wenn ich den Slave replizier ?

Der Slave repliziert den Master und ich replizier vom Slave...muss man dabei etwas beachten ?
 
OP
sarajevo

sarajevo

Newbie
Da blick ich langsam nicht mehr durch...

Snapshot erstellt aufn Master unter /var/lib/mysql, mittels scp rüber kopiert...im /var/lib/mysql Verzeichnis des Slaves entpackt und danach versucht den Slave zu starten...

root@XXX:/var/lib/mysql# /etc/init.d/mysql start
* Starting MySQL database server mysqld [ OK ]
* Checking for corrupt, not cleanly closed and upgrade needing tables.
/usr/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'
root@XXX:/var/lib/mysql# ERROR 1045 (28000): Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)


Was nun ?


EDIT : Da war ich wieder vorschnell
 
OP
sarajevo

sarajevo

Newbie
So folgendes Problem...

Eine replikation scheint zu starten nachdem ich
load data from master; eingebe
nach ca. 10 min erscheint


$ Cannot delete or update a parent row: a foreign key constraint fails

ich bin am googeln aber ne richtige lösung bietet sich da nicht ...
 
OP
sarajevo

sarajevo

Newbie
naja werds jetzt mal mit dem dump des slaves versuchen vielleicht klappt das


EDIT: Wieder der gleiche Fehler
ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails
 
Oben