Ich als Betreiber von einem großen DynDNS Dienst (IPv64.net) muss für meine Nameserver den richtigen Weg finden, um meine Datenbanken abzugleichen. Was bietet sich mehr an als eine MySQL Replikation. Für mich war natürlich eine asynchrone Replikation ausreichen.

Asynchrone Replikation bedeutet, dass die Daten auf den Slave zwar kopiert werden und synchron gehalten werden, aber für den Client die Bestätigung bereits kommt, wenn der Master die Daten geschrieben hat. Also es kann vorkommen, dass auf dem Slave die Daten erst wenige Millisekunden später kopiert werden und dann zur Verfügung stehen. Das nennt man Asynchron.

Aber eben genau da, z.B. bei Webseiten ist das nicht grundlegend schlimm, wenn der Datenbankbestand ein paar Millisekunden abweicht.

# Vorschau Produkt Bewertung Preis
1 MINIS FORUM MS-01 Mini Workstation Intel Core i5-12600H (vPro Enterprise Support) Mini PC,2X 10Gbps SFP+/2X 2.5G RJ45/2x USB4/HDIM/1x PCIe4.0x16 Slot/Support 3X M.2 2280/22110/U.2 SSD,Pas de RAM/SSD MINIS FORUM MS-01 Mini Workstation Intel Core i5-12600H (vPro Enterprise Support) Mini PC,2X 10Gbps… Aktuell keine Bewertungen 439,00 EUR
2 MNBOXCONET S2 Mini PC N150 10GBE SFP+, Firewall Appliance Micro Büro Hardware, Barebone No RAM No SSD, 2xi226V 2.5Gbit LAN, USB C, TF Card Slot, Support Proxmox OPNsense, SPK/MIC MNBOXCONET S2 Mini PC N150 10GBE SFP+, Firewall Appliance Micro Büro Hardware, Barebone No RAM No… Aktuell keine Bewertungen 339,99 EUR
3 MINIS FORUM Mini PC MS-A2, AMD Ryzen 9 8945HX 16 Kerne/32 Threads Prozessor bis zu 5,4 GHz, Barebone ohne DDR5 RAM(Max bis zu 96GB)/SSD/OS, HDMI/USB-C x 2, 2,5G RJ45 x 2/10G SFP+ x 2, Wi-Fi 6E, BT5.2 MINIS FORUM Mini PC MS-A2, AMD Ryzen 9 8945HX 16 Kerne/32 Threads Prozessor bis zu 5,4 GHz, Barebone… Aktuell keine Bewertungen 599,00 EUR
4 MINIS FORUM MS-A2 Mini PC, AMD Ryzen 9 9955HX 16C/32T bis zu 5,4 GHz mit AMD Radeon 610M, Barebone ohne DDR5 RAM(Max bis zu 96GB)/SSD/OS, HDMI/USB-C x 2/2,5G RJ45 x 2/10G SFP+ x 2, Wi-Fi 6E, BT5.2 MINIS FORUM MS-A2 Mini PC, AMD Ryzen 9 9955HX 16C/32T bis zu 5,4 GHz mit AMD Radeon 610M, Barebone… Aktuell keine Bewertungen 829,00 EUR
5 MINIS FORUM MS-01 Mini PC, Core i9-13900H 14 Core/20 Thread Prozessor bis zu 5,4 GHz, Barebone ohne DDR5/PCIE SSD/OS, Mini-Desktop-Computer, HDMI/2 x USB4, 10G SFP+ Port ×2,2,5G RJ45x2 MINIS FORUM MS-01 Mini PC, Core i9-13900H 14 Core/20 Thread Prozessor bis zu 5,4 GHz, Barebone ohne… Aktuell keine Bewertungen 688,00 EUR
6 ROUAFWIT Mini PC 10Gbe Firewall 13th Gen U300E, 2 x 10 Gigabit SFP Micro Router Appliance Computer, 4 x i226V 2.5GbE Support Windows OPNsense, Barebone, NO RAM NO Storage NO System ROUAFWIT Mini PC 10Gbe Firewall 13th Gen U300E, 2 x 10 Gigabit SFP Micro Router Appliance Computer… Aktuell keine Bewertungen 439,45 EUR
7 MINIS FORUM MS-A2 Mini PC, AMD Ryzen 7 7745HX (8C/16T, bis 5,1 GHz), PCIe x16 Slot, 8K Triple Display, 2×10G SFP+ & 2×2,5G LAN, 3×M.2 NVMe, Barebone ohne RAM & SSD MINIS FORUM MS-A2 Mini PC, AMD Ryzen 7 7745HX (8C/16T, bis 5,1 GHz), PCIe x16 Slot, 8K Triple… Aktuell keine Bewertungen 499,00 EURAmazon Prime
8 MINIS FORUM MS-01 Mini Workstation Intel Core i9-13900H (vPro Enterprise) Mini PC,2X 10Gbps SFP+/2X 2.5G RJ45/2x USB4/HDIM/1x PCIe4.0x16 slot/3x M.2 2280/22110/U.2 SSD,Pas de RAM/SSD MINIS FORUM MS-01 Mini Workstation Intel Core i9-13900H (vPro Enterprise) Mini PC,2X 10Gbps SFP+/2X… Aktuell keine Bewertungen 695,00 EUR
9 1U Firewall Appliance 10GbE, PFSense, Mikrotik, OPNsense, VPN, 2th Gen Core I7 2620M, 2640M, RJ16, 6 x 2.5GbE I226-V, 2 x SFP+ 82599ES 10GbE, 0 RAM, 0 Storage, Barebone No System 1U Firewall Appliance 10GbE, PFSense, Mikrotik, OPNsense, VPN, 2th Gen Core I7 2620M, 2640M, RJ… Aktuell keine Bewertungen 334,99 EUR
10 CWWK S8 N150 Mini PC (Upgraded N100) Firewall Appliance, 2X 10GbE SFP+ Mini Computer with 2 x i226-V 2.5GbE LAN, OPNsense Micro PC Barebone DDR5 NO RAM/SSD/OS, USB-C, TF, 2-Display CWWK S8 N150 Mini PC (Upgraded N100) Firewall Appliance, 2X 10GbE SFP+ Mini Computer with 2 x i226-V… Aktuell keine Bewertungen 340,92 EUR

1. MySQL Replikation einrichten – Master Einstellungen

Als Erstes legen wir einen Benutzeraccount auf dem Master an, welcher benutzt werden darf von den Slaves für die Replikation. Ändert natürlich nach Bedarf, die IP-Adresse, den Benutzernamen und das Passwort.

mysql -u root -p

mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'repl'@'192.168.0.%' IDENTIFIED BY 'password';

Es folgen einige kleine Änderungen in der „/etc/my.conf“ (MySQL) oder „/etc/mysql/mariadb.conf/50-server“ (MariaDB). Danach starten wir den MySQL Dienst neu und überprüfen unsere Einstellungen.

log_bin = mysql-bin
server_id = 1
sync_binlog = 1
bind-address = 192.168.0.1 <Nimm hier deine IP>

## MySQL Neustarten ##
service mariadb restart

## Master Status überprüfen ##
mysql -u root -p

mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |       98 |              |                  | 
+------------------+----------+--------------+------------------+

2. MySQL Replikation einrichten – Slave Einstellungen

Es folgen einige kleine Änderungen in der „/etc/my.conf“ (MySQL) oder „/etc/mysql/mariadb.conf/50-server“ (MariaDB).

server_id = 2
relay_log = mysql-relay-bin
read_only = 1

3. Daten auf den Slave kopieren

Jetzt müssen wir initial 1x die Daten (wenn vorhanden) auf den Slave kopieren, damit der Datenstand auf Master und Slave beim starten der Replikation gleich ist.

## Auf dem MASTER ##
mysqldump --all-databases --allow-keywords --single-transaction --flush-logs --master-data=2 -r /root/mysqldump.sql

## Daten auf den Slave kopieren ##
scp mysqldump.sql root@<IP-Adresse>:/root

## Master Status anzeigen lassen ##
mysql -u root -p

mysql> show master status;
## Auf dem Slave Datenbank importieren ##
cat /root/mysqldump.sql | mysql -u root -p

4. MySQL Replikation starten

Jetzt starten wir die Replikation auf dem Slave.

GANZ WICHTIG: Mit dem nächsten Befehl müssen die Daten „master_log_file“ & „master_log_pos“ übereinstimmen mit der Ausgabe von dem „show master status“ Befehl.

mysql -u root -p

mysql> change master to master_host='<IP-Addresse>', master_user='repl', 
  master_password='password', master_log_file='mysql-bin.000001', master_log_pos=98;

## Slave starten ##
mysql> start slave;

## Replikation Status auf Slave überprüfen ##
mysql> show slave status\G

## Replikation Status auf Master überprüfen ##
mysql> show master status;

Das war’s. Jetzt werden jegliche Änderungen auf dem Master sofort auf den / die MySQL Slaves kopiert. Du kannst nun die Slave Datenbank Server als lesende Datenbanken verwenden und den Master weiter entlasten. Der Slave kann natürlich auch im Falle eines großen Ausfalls zum Master promotet werden.

Das folgende Bild zeigt auch wie ich die Replikation in dem Dienst IPv64.net verwende.

IPv64.net MySQL Replikation
IPv64.net MySQL Replikation