Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

MySQL Datenbankreplikation

Mitglied: Genios

Genios (Level 1) - Jetzt verbinden

21.12.2007, aktualisiert 31.12.2007, 17809 Aufrufe, 1 Kommentar

Datenbanken im Netzwerk replizieren, als stets aktuelle Sicherungskopie oder zum Lastenausgleich

Wer eine MySQL Datenbank von einem Master auf Summe X Slave replizieren will hat es mit dem boardeigenen Mitteln der MySQL recht einfach. Trotz der Einfachheit sind einige Dinge zu beachten:

1. Alle Rechner im logischen Netzwerk
2. Gleiche MySQL Version auf allen Rechnern - ab MySQL 4 auch für MyIsam Tabellen möglich
3. Gleicher Datenbankstand auf allen Rechnern beim Start der Replikation
4. Wie immer, die nötigen Rechte
5. Original my.ini sichern

Vorbereitungen Master:
1. DB_User anlegen, lediglich Leserechte reichen aus, Schreibrechte sind nicht zu empfehlen
2. In der my.ini folgende Werte angeben:

server-id = 1
log-bin

3. Bearbeitete my.ini speichern

Was macht das denn?

Durch die Server ID wird jede Datenbank im Netzwerk eindeutig identifiziert. 1 ist immer der Master, weitere ID´s sind immer Slave und dürfen niemals doppelt vergeben werden, dazu aber später noch mehr. Durch die Aktivierung des log-bin wird dem Master klar gemacht das er wesentliche Daten in einem bestimmten Format (Binär) in eine Datei schreibt.

Was schreibt der Master denn in die Datei?

Alle datenbankverändernden Querys werden gespeichert, in der Datei ist ebenfalls ein fortlaufender Positionsschlüssel für die Slaves vorhanden.

So, wenn diese Dinge soweit eingerichtet sind, dann kann die Datenbank gestoppt werden, die Datenbank als Anfangsstand gesichert und die Datenbank wieder gestartet werden. Dazu hilft vllt. eine kleine Batchdatei:
01.
TITLE Anfangszustand der Datenbank wird erstellt 
02.
cls 
03.
net stop mysql 
04.
xcopy c:\mysql\data\datenbank\ c:\mysql\data\db_beginn\ 
05.
if exist c:\mysql\data\db_beginn goto dbstart 
06.
if not exist c:\mysql\data\db_beginn goto error 
07.
 
08.
:error 
09.
cls 
10.
ECHO Es ist ein Fehler aufgetreten... 
11.
ECHO Wenden Sie sich an den Admin 
12.
goto ende 
13.
 
14.
:dbstart 
15.
cls 
16.
net start mysql 
17.
goto ende 
18.
 
19.
:ende 
20.
PAUSE
Nach Ablauf dieses Scriptes sollte der MySQL Dienst gestartet sein und es sollten im Ordner DATA vier Dateien erstellt worden sein. Startet man nun die Anwendung die auf die Datenbank zugreift wird man sehen dass eine der Dateien, die "(Rechnername)bin.001" stetig wächst. In dieser Datei sind die Logdateien enthalten die für die Slaves die MySQL Querys enthalten.

Nun bereiten wir unseren Slave vor, dazu öffnen wir auch hier die my.ini und stellen folgende Parameter ein:
server-id = 2
master-host = "Ip-Adresse oder Hostname des Master"
master-user = "Replikationsuser"
master-password = "Password des Replikationsusers"
master-port = 3306 - wenn die MySQL auf dem Standard-Port läuft
replicate-do-db = "Datenbank"
read-only - Es wird nur lesend auf die Repliaktions-DB zugegriffen

Nach dem speichern der my.ini stoppen wir die Datenbank und kopieren uns den zuvor erstellten Datenbankstand Beginn herüber. Nachdem die Datenbank wieder gestartet wird erstellt die Replikations-DB ebenfalls einige Dateien im Ordner DATA.

Was passiert nun?

Die Replikationsdatenbank vollzieht alle Querys aus dem Master Log in der eigenen Datenbank nach. Wird die Replikationsdatenbank nun gestoppt schreibt der Repl-Slave einen Einsprungpunkt in seine eigene Log-Datei. Startet man die Datenbank wieder fängt der Slave am zuvor geschriebenen Punkt wieder an die Querys nachzuarbeiten. So bleibt die Datenbank immer auf dem aktuellen Stand.

Steigt der Rechner nun über einen netten Blue-Screen aus so ist natürlich kein Einsprungpunkt gespeichert. Also muss ich die Logdateien auf dem Slave löschen, den Datenbankstand db_beginn rüber kopieren und die Replikations-Datenbank wieder starten. Natürlich werden nun alle Querys von Beginn an nachvollzogen was auch mal etwas länger dauern kann.

Eigentlich ist die Einrichtung einer Datenbankreplikation unter MySQL eine leichte Übung für jeden Administrator. Daher ist es unverständlich warum es so wenige umsetzen.

Die Replikation einer Datenbank kann unter Umständen ein komplette Cluster-Lösung ersetzen. Speichert man die originale my.ini auf dem Slave als my.org ab und die my.ini für die Replikation als my.rep so kann mittels einem kleinen Script:
01.
net stop mysql 
02.
xcopy c:\windows\my.org c:\windows\my.ini 
03.
net start mysql
die Replikation sofort stoppen und die replizierte Datenbank als scharfe Datenbank starten. Nun braucht man nur in der Anwendung den Weg zur Datenbank neu definieren, was auch nicht das größte Problem sein sollte.

Im Rahmen des Lastenausgleiches kann man sogar reine SELECT Anweisungen auf der replizierten Datenbank ablaufen lassen und diese müssige Arbeit dem Master ersparen.

Wer eine Datenbankreplikation realisieren möchte, sich aber nicht so recht traut, dem kann ich Hilfe über TeamViewer 3.0 anbieten, dazu muss aber sicher gestellt sein, das eine Verbindung auf den oder die Rechner möglich ist.
Mitglied: jedi7650
31.12.2007 um 02:23 Uhr
Wunderbar. Dann werd ich mich gleich morgen mal reinarbeiten. Gerade mit virtuellen Maschinen ist dieser Replikationsverbund ja schnell gebaut, über VPN verbunden.
Bitte warten ..
Ähnliche Inhalte
PHP

AutoComplete mit PHP MySQL jQuery jQueryUI JSON

Anleitung von GuenniPHP2 Kommentare

Auf die Frage"Wie kann man nach Eingabe in einem Textfeld Suchvorschläge anzeigen oder ein Select-Feld füllen", oder ähnlichen Fragen, ...

Windows Server

Microsoft Web Platform Installer 5.0 - Gängige Webserver-Dienste (PHP - MySQL - CMS - Blogs etc.) schnell und einfach installiert

Tipp von colinardoWindows Server5 Kommentare

Ein Tipp für alle die das Tool noch nicht kennen. Es bietet einen Assistenten zur Installation von gängigen Webserver-Diensten ...

Neue Wissensbeiträge
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 2 TagenWindows 105 Kommentare

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 2 TagenAdministrator.de Feedback18 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 2 TagenHumor (lol)4 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 3 TagenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Heiß diskutierte Inhalte
Router & Routing
Router auf Orginal Firmware zurück flashen mit Tftpd
Frage von ILeonardRouter & Routing18 Kommentare

Hallo, Ich habe zwei Router, einmal TP-Link 841n v11 und TP-Link 940N v5. Ich wollte fragen, ob jemand mir ...

Router & Routing
WRT keine Verbindung zum Web Interface
gelöst Frage von ILeonardRouter & Routing18 Kommentare

Hallo, Ich habe einen TP-Link WR841n mit wrt geflasht, das Problem ist ich kann mich mit 192.168.1.1 nicht verbinden. ...

Windows Server
Standortvernetzung zu einem Strato VServer (Windows)
Frage von matzefratze81Windows Server10 Kommentare

Moin, ich komme aus einem Enterprise-Umfeld und habe den Fehler gemacht, dass ich mich auf ein kleines Unternehmen eingelassen ...

Grafikkarten & Monitore
4k EIZO Monitor, Fernseher und Splitter
Frage von LerxxeyGrafikkarten & Monitore9 Kommentare

Hallo Zusammen, vielleicht könnt ihr mir bei einem Problem helfen wo ich einfach nicht mehr weiterkomme Und zwar haben ...