Zurück zum Blog

MySQL High Performance

Nick
13 Jan. 2022
MySQL High Performance

Als erstes wird der Master-MySQL-Server definiert. Das geschieht in der Datei 'my.cnf'. Diese liegt im allgmeinem im Ordner /etc/. In der Datei my.cnf wird im Bereich [mysqld] folgender Eintrag zugefügt:

log-bin
server-id=1

Jetzt wird auf dem Master-Server ein Replikations-User angelegt, der das Privileg 'Replication Slave' bekommt. Bei MySQL-Versionen unter 4.0.2 gibt es dieses Privileg nicht. Stattdessen wird dann das 'File' Privileg verwendet. Den Replikations-User tragen wir später auf dem SLAVE-Server ein (in der dortigen my.cnf Datei). Der Replikations-Account wird mit dem Befehl 'grant' wie folgt angelegt:
grant replication slave on *.* to Slave@Host.domain.deDiese E-Mail Adresse ist gegen Spam Bots geschützt, Sie müssen Javascript aktivieren, damit Sie es sehen können    identified by 'Passwort';

Der Replikations-User muss also von dem Host des SLAVE-Servers auf den MASTER-Server zugreifen können
(Hinweis: MySQL User auf dem MASTER-Server anlegen).

- Snapshot anlegen:

Nun wird ein Snapshot der vorhanden Daten angelegt, die wir auf den SLAVE-Server legen.
Dazu wechseln wir in das Datenverzeichnis des MySQL-Servers (oftmals: /var/lib/mysql).
Hier werden folgende Befehl zur Erstellung eines Snapshots ausgeführt:

/etc/init.d/mysqld stop
tar -cvf /tmp/master-snapshot.tar *
/etc/init.d/mysqld start

Im /tmp Verzeichnis liegt nun ein aktuelles SNAPSHOT der Datenbank als Tarball.
Eine Kopie des Tarballs kommt in das Datenverzeichnis des SLAVE-Serves, die wir dort mit dem Befehl

tar -xvf master-snapshot.tar

entpacken.

Vorher sollte der MySQL-Server auf der Backup-Maschine gestoppt werden.
Anschließend kann der Tarball aus /var/lib/mysql gelöscht werden.



Der Slave Server bekommt einen Eintrag in die my.cnf Datei: (Bereich [mysqld])

server-id=2
master-host=<IP-Adresse des Master Servers>
master-user=<REPLICATIONS_USER>
master-password=<REPLICATIONS_PASSWORT>
master-port=3306
relay-log=<SLAVES-HOSTNAME>-relay-bin

Die Einträge master-host, master-user, master-password werden ohne < und > am Anfang wie Ende eingetragen.

SLAVE ZUM UDATEN ÜBERREDEN

Der Slave-Server ist nun bereit. Das LIVE-Update kann also beginnen.
Damit es aber sauber funktioniert, muss am SLAVE Server noch eine Einstellung vorgenommen werden.
Geben Sie zur Anmeldung am SLAVE-Server folgenden Befehl ein:
'mysql -u root -p'
Nach der Passwort-Eingabe können Sie am Mysql prompt folgenden Befehl ablassen:
slave start;
Bei einigen MySQL-Versionen lautet der Befehl: 'start slave;'



Der SLAVE merkt sich nur, dass er als SLAVE arbeiten soll.


Nachtrag:

Falls es nicht gleich klappen sollte, hilft ein Blick in die Error-Log-Datei des MySQL-Servers. Diese Datei befindet sich oftmals unter: ' /var/log/mysqld.log'.

Sehr oft hindern lediglich Firewall-Einstellungen, dass Sie erfolgreich sind...


Um von dem Slave Server zu kontrollieren ob sich überhautpt auf dem Master Server zugegriffen werden kann,
kann manauf der Shell wie folgt vorgehen:

mysql -u slave -h 192.168.1.1 -p<pass> (das passwort direkt ohne Leerzeichen hinter das -p)

Hat die MySQL-Log-Datei einen Eintrag wie:

060405 21:47:39  Slave: connected to master ' replikations-user@192.168.1.1Diese E-Mail Adresse ist gegen Spam Bots geschützt, Sie müssen Javascript aktivieren, damit Sie es sehen können :3306',  replication started in log 'FIRST' at position 4,

ist der SLAVE-Server korrekt konfiguriert und beginnt als SLAVE zu arbeiten.

Im Verzeichnis '/var/lib/mysql' befindet sich nun eine neue Datei mit dem Namen: 'master.info'.
Diese Datei beinhaltet Daten des Master-Servers:

Beispiel:
www-bin.003
1988
192.168.1.1
replikations-user
replikations-password
3306
60

$_SESSION['usr']
$_SESSION['usr_id']
$_SESSION['role']
SESSION_NAME: hostx_session
current url: /artikel/MySQL-High-Performance
fail login:
Document root: /home/httpd/www.host-x.de/htdocs
REMOTE_ADDR: 216.73.216.165
HTTP_REFERER:
SERVER_NAME: www.host-x.de
Page: blog_item
SCRIPT_NAME: /index.php
SERVER_PROTOCOL: HTTP/2.0