Aktionen

MySQL - Datenbank direkt zwischen 2 Servern kopieren

Aus znilwiki

Ich wollte eine Zabbix-Datenbank direkt zwischen 2 Servern kopieren, die war etwas zu groß für den Export/Import.
Dabei bin ich wie folgt vorgegangen:


1 Ausgangslage

Quellserver:

IP:        192.168.0.96
Datenbank: zabbix
Benutzer:  user1
Passwort:  test1234



Zielserver:

IP:        192.168.0.118




2 Schritt 1: Zieldatenbank anlegen

Auf dem Zielserver lege ich die neue Datenbank an:

mysql -u root -p -e "create database zabbix character set utf8 collate utf8_bin"
mysql -u root -p -e "grant all privileges on zabbix.* to user1@localhost identified by 'test1234'"

Genauso war auch die Quelldatenbank einmal angelegt worden.
Nun muss über das Netzwerk auf den Zielserver zugegriffen werden können.
Also braucht es einen berechtigten Benutzer dazu:

mysql -u root -p -e "grant all on zabbix.* to user1@192.168.0.96 identified by 'test1234'"




3 Schritt 2: Zugriff über das Netzwerk erlauben

Im Moment hört der MySQL Server nur auf die Localhost-Adresse 127.0.0.1

nano /etc/mysql/my.cnf

bzw. (in neueren Versionen)

nano /etc/mysql/mysql.conf.d/mysqld.cnf

und folgende Zeilen suchen:

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address            = 127.0.0.1

Diese ändern wir wie folgt:

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
# bind-address          = 127.0.0.1
bind-address            = 0.0.0.0

Danach den MySQL Server neu starten:

service mysql restart




4 Schritt 3: Zugriff testen

Wie gehen auf den Quellserver und schauen ob wir uns am Zielserver anmelden können:

mysql -h 192.168.0.118 -uuser1 -ptest1234 zabbix

Wenn der mysql-Promt erscheint können wir loslegen!
Zu den Parametern:

-h 192.168.0.118      : Zielserver
-uuser1               : -u = Username / user1 ist der Benutzername
-ptest1234            : -p = Password / test1234 ist das Ppasswort
zabbix                : Zieldatenbank




5 Schritt 4: Datenbank kopieren

mysqldump -uuser1 -ptest1234 zabbix | mysql -h 192.168.0.118 -uuser1 -ptest1234 zabbix

kopiert und nun die Datenbank direkt hinüber. Wenn das über eine Langsame Verbindung gemacht wird könnte man noch eine Kompression einschalten:

mysqldump -uuser1 -ptest1234 --compress zabbix | mysql -h 192.168.0.118 -uuser1 -ptest1234 zabbix


Abwarten - das war es schon!


6 Schritt 5: Zugriff über das Netzwerk wieder entfernen

Noch mal die

nano /etc/mysql/my.cnf

bearbeiten und aus der 0.0.0.0 wieder die 127.0.0.1 machen Dienst neu starten und alles ist wie vorher.



7 Kommentare


Anonymer Benutzer #1

18 Monaten zuvor
Punktzahl 0++
Ziemlich verwirrend, wenn man für Benutzernamen, Datenbank und Passwort das gleiche Wort verwendet. Gerade für Laien ist das im Code schwer auseinander zuhalten...

BLinz

18 Monaten zuvor
Punktzahl 0++
Recht haben Sie - ich habe es angepasst!
Kommentar hinzufügen
znilwiki freut sich über alle Kommentare. Sofern du nicht anonym bleiben möchtest, trage deinen Namen oder deine Email-Adresse ein oder melde dich an. Du kannst das Feld auch einfach leer lassen.