Replication-Slave aussetzten OHNE den Master zu stoppen oder zu locken
Replication-Slave aussetzten OHNE den Master zu stoppen oder zu locken
Hallo Leute,
ich möchte einen Replication-Slave für meinen MySQL-Server aufsetzten. Die meisten Anleitungen basieren ja darauf das man den master stoppt oder lockt, dann das Datenverzeichniss packt und auf den Slave schiebt. Das ist leider nicht akzeptabel, das es um Datenmengen von über 20GB geht und ich nicht einfach so den Server anhalten kann.
Gibt es eine andere Möglichkeit?
danke schonmal
TO
ich möchte einen Replication-Slave für meinen MySQL-Server aufsetzten. Die meisten Anleitungen basieren ja darauf das man den master stoppt oder lockt, dann das Datenverzeichniss packt und auf den Slave schiebt. Das ist leider nicht akzeptabel, das es um Datenmengen von über 20GB geht und ich nicht einfach so den Server anhalten kann.
Gibt es eine andere Möglichkeit?
danke schonmal
TO
Re: Replication-Slave aussetzten OHNE den Master zu stoppen oder zu locken
Master und Slave konfigurieren und restarten, dann auf dem Slave:
Bei 20GB dauert es allerdings einige Zeit...
HTH
Code: Select all
LOAD DATA FROM MASTER;
START SLAVE;
HTH
PayPal.Me/JoeUser ● FreeBSD Remote Installation
Wings for Life ● Wings for Life World Run
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Wings for Life ● Wings for Life World Run
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
-
- Posts: 48
- Joined: 2006-01-10 14:44
Re: Replication-Slave aussetzten OHNE den Master zu stoppen oder zu locken
in dem zusammenhang hätte ich eine frage:
was passiert wenn der slave aus irgendeinem grund nichts mehr vom master ziehen kann? (leitung unterbrochen oder master abgestürzt etc.)
schlägt der slave irgendwie alarm? versucht er immer weiter zu synchronisieren und wenn wieder verbindung besteht, läd er sich die daten nach?
danke!
was passiert wenn der slave aus irgendeinem grund nichts mehr vom master ziehen kann? (leitung unterbrochen oder master abgestürzt etc.)
schlägt der slave irgendwie alarm? versucht er immer weiter zu synchronisieren und wenn wieder verbindung besteht, läd er sich die daten nach?
danke!
Re: Replication-Slave aussetzten OHNE den Master zu stoppen oder zu locken
Der Slave logt in seiner Error-Log das er nicht verbinden konnte, er kann jedoch jederzeit wieder zum master aufholen sobald die verbindung steht. Das macht er auch automatisch, so sagt es zumindest die Doku.
Ne andere Frage: Was passiert wenn ich auf dem Slave einen Schreibzugriff machen? Wird das zum MAster syncrhonsiiert oder ist es garnicht möglich?
Danke
TO
Ne andere Frage: Was passiert wenn ich auf dem Slave einen Schreibzugriff machen? Wird das zum MAster syncrhonsiiert oder ist es garnicht möglich?
Danke
TO
Re: Replication-Slave aussetzten OHNE den Master zu stoppen oder zu locken
Schreibzugriffe auf den Slave sind möglich, allerdings nur auf nicht syncronisierte Tabellen sinnvoll. Wenn Du auf syncronierte Tabellen schreiben willst, brauchst Du ein Master<->Master Setup.theomega wrote:Ne andere Frage: Was passiert wenn ich auf dem Slave einen Schreibzugriff machen? Wird das zum MAster syncrhonsiiert oder ist es garnicht möglich?
PayPal.Me/JoeUser ● FreeBSD Remote Installation
Wings for Life ● Wings for Life World Run
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Wings for Life ● Wings for Life World Run
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Re: Replication-Slave aussetzten OHNE den Master zu stoppen oder zu locken
Ein Backup ist ein Abzug der Tablespaces einer Datenbank ohne daß sich die Tablespraces der Datenbank verändern während der Abzug gemacht wird. Ein Backup ist also immer mit genau einer Binlog-Position assoziiert.theomega wrote:Hallo Leute,
ich möchte einen Replication-Slave für meinen MySQL-Server aufsetzten. Die meisten Anleitungen basieren ja darauf das man den master stoppt oder lockt, dann das Datenverzeichniss packt und auf den Slave schiebt. Das ist leider nicht akzeptabel, das es um Datenmengen von über 20GB geht und ich nicht einfach so den Server anhalten kann.
Gibt es eine andere Möglichkeit?
danke schonmal
TO
Eine Point-in-Time-Recovery ist ein Wiedereinspielen eines solches Backups und ein Anwenden der Binlogs ab dieser Binlog-Position bis zum gewünschten Zielpunkt in der Zeit.
Ein Slave ist eine Rolling Recovery: Du setzt den Slave auf, indem Du ein Full-Backup auf dem Slave einspielst und dem Slave dann seine Binlog-Position mitteilst. Der Slave loggt sich auf dem Master ein, lädt die Binlogs ab da runter und führt sie aus.
Du kannst also einen Slave jederzeit aufsetzen, indem Du eines Deiner Full Backups einspielst und ab da das Binlog lädst. Die konkrete Methode, mit der das Backup erstellt wurde ist dabei unwesentlich.
Re: Replication-Slave aussetzten OHNE den Master zu stoppen oder zu locken
Der Slave hat zwei Threads, einen IO-Thread und einen SQL-Thread. Der IO-Thread lädt das Binlog vom Master auf den Slave runter und speichert es dort als Relay-Log. Der SQL-Thread führt das Relay-Log aus und schmeisst es dann weg.stanglwirt wrote:in dem zusammenhang hätte ich eine frage:
was passiert wenn der slave aus irgendeinem grund nichts mehr vom master ziehen kann? (leitung unterbrochen oder master abgestürzt etc.)
schlägt der slave irgendwie alarm? versucht er immer weiter zu synchronisieren und wenn wieder verbindung besteht, läd er sich die daten nach?
danke!
Wenn der IO-Thread stehen bleibt, versucht er nach einer gewissen Zeit (Default: 60 Sekunden) ein neues Login auf dem Master und ab der letzten Binlog-Position fortzusetzen. Gibt es das Binlog an dieser Position auf dem Master nicht mehr, ist der Slave verloren und muss neu aufgesetzt werden.
Das kann man überwachen - etwa mit Nagios.
Re: Replication-Slave aussetzten OHNE den Master zu stoppen oder zu locken
LOAD DATA FROM MASTER ist langsam und funktioniert nur mit MyISAM und auch da nicht richtig. Der Befehl ist in MySQL 5.1 nicht mehr vorhanden und in den Versionen davor discouraged. Verwende ihn nicht.Joe User wrote:Master und Slave konfigurieren und restarten, dann auf dem Slave:Bei 20GB dauert es allerdings einige Zeit...Code: Select all
LOAD DATA FROM MASTER; START SLAVE;
HTH
Re: Replication-Slave aussetzten OHNE den Master zu stoppen oder zu locken
Master-Master existiert nicht. Was Ihr für Master-Master haltet ist in Wirklichkeit ein Ring-mit-Zwei. Ringe in MySQL-Replikation sind möglich, haben aber eine Reihe von Nachteilen, insbesondere bei der Wiederherstellung nach einem Fehler.Joe User wrote:Schreibzugriffe auf den Slave sind möglich, allerdings nur auf nicht syncronisierte Tabellen sinnvoll. Wenn Du auf syncronierte Tabellen schreiben willst, brauchst Du ein Master<->Master Setup.
Wenn man sie vermeiden kann sollte man das tun.
Re: Replication-Slave aussetzten OHNE den Master zu stoppen oder zu locken
Das geht sogar einfacher als man denkt. ein einfachesisotopp wrote: Du kannst also einen Slave jederzeit aufsetzen, indem Du eines Deiner Full Backups einspielst und ab da das Binlog lädst. Die konkrete Methode, mit der das Backup erstellt wurde ist dabei unwesentlich.
Code: Select all
mysqldump --opt -hserver1 -uuser -ppasswort datenbank1 | mysql -hserver2 -uuser -ppasswort datenbank2
Re: Replication-Slave aussetzten OHNE den Master zu stoppen oder zu locken
Danke Kris, wieder etwas gelernt.
PayPal.Me/JoeUser ● FreeBSD Remote Installation
Wings for Life ● Wings for Life World Run
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Wings for Life ● Wings for Life World Run
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Re: Replication-Slave aussetzten OHNE den Master zu stoppen oder zu locken
Da weiß man jedoch die Binlog-Position noch nicht, mit der das Backup assoziiert ist. Also braucht es noch ein "--master-data" oder "--master-data=2". Das impliziert auch das fehlende "--lock-all-tables", das man braucht, damit das Backup konsistent wird (nicht mit "--lock-table" verwechseln).oxygen wrote:Das geht sogar einfacher als man denkt. ein einfachesreicht da oft schon.Code: Select all
mysqldump --opt -hserver1 -uuser -ppasswort datenbank1 | mysql -hserver2 -uuser -ppasswort datenbank2
Wenn man eine reine InnoDB-Datenbank verwendet, sollte man "--single-transaction" verwenden. Das macht vor dem Dump ein "BEGIN WORK" und nach dem Dump ein "COMMIT" in "REPEATABLE-READ". Solange das Undo-Log groß genug ist, bekommt man so (von InnoDB-Tables) ein konsistentes, lockfreies, logisches Backup.