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:
Ausgangslage
Quellserver:
IP: 192.168.0.96 Datenbank: zabbix Benutzer: user1 Passwort: test1234
Zielserver:
IP: 192.168.0.118
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'"
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
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
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!
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.