Einführung
Wenn Sie eine kritische Website ausführen, ist es wichtig, dass Sie über mindestens einen redundanten Sicherungsserver verfügen. Dadurch wird sichergestellt, dass Ihre Datenbank in Echtzeit synchronisiert wird. MySQL bezeichnet die Datenbanksynchronisierung als Replikation. Dieses kurze Tutorial enthält Anweisungen zum Einrichten einer Master-Slave-MySQL-Replikation.
Richten Sie den Masterknoten ein
Bearbeiten /etc/mysql/my.cnf, um die IP-Bindung zu deaktivieren.
Kommentieren Sie die folgenden Zeilen aus:
bind-address = 127.0.0.1
skip-networking
Erstellen Sie neue Einstellungen für die Replikation, indem Sie die folgenden Befehle ausführen:
cat >/etc/mysql/conf.d/replication.cnf <<EOF
[mysqld]
server-id = 100
log_bin = /var/log/mysql/mysql-bin.log
binlog-do-db = YOUR_DATABASE_ONE
binlog-do-db = YOUR_DATABASE_TWO
EOF
Starten Sie den MySQL-Server neu.
/etc/init.d/mysql restart
Erstellen Sie einen Slave-Benutzer in MySQL, indem Sie die folgenden Befehle in der MySQL-Konsole ausführen.
CREATE USER 'slave'@'SLAVE_SERVER_IP_ADDRESS' identified by 'YOUR_SLAVE_PASSWORD';
GRANT ALL ON *.* TO 'slave'@'SLAVE_SERVER_IP_ADDRESS';
FLUSH PRIVILEGES;
Sperren Sie jetzt den Schreibzugriff auf Ihre Datenbank:
FLUSH TABLES WITH READ LOCK;
Status des Hauptknotens abrufen:
SHOW MASTER STATUS;
Hinweis: Notieren Sie sich die Werte der Felder "Datei" und "Position", da wir sie später für den Slave-Knoten referenzieren müssen.
Öffnen Sie eine andere SSH-Sitzung und sichern Sie Ihre Datenbank mit dem folgenden Befehl:
mysqldump -u MYSQL_USERNAME -pMYSQL_PASSWORD --databases YOUR_DATABASE_ONE YOUR_DATABASE_TWO > database.sql
Kehren Sie zur vorherigen SSH-Sitzung zurück und geben Sie den folgenden Befehl in der MySQL-Konsole ein, um den Schreibzugriff freizuschalten:
UNLOCK TABLES;
Übertragen Sie die database.sqlim vorherigen Schritt erstellten auf den Slave-Knoten.
Richten Sie den Slave-Knoten ein
Bearbeiten /etc/mysql/my.cnf, um die IP-Bindung zu deaktivieren.
Kommentieren Sie die folgenden Zeilen aus:
bind-address = 127.0.0.1
skip-networking
Erstellen Sie neue Einstellungen für die Replikation, indem Sie den folgenden Befehl ausführen:
cat >/etc/mysql/conf.d/replication.cnf <<EOF
[mysqld]
server-id = 101
log_bin = /var/log/mysql/mysql-bin.log
binlog-do-db = YOUR_DATABASE_ONE
binlog-do-db = YOUR_DATABASE_TWO
EOF
Starten Sie den MySQL-Server neu.
/etc/init.d/mysql restart
Importieren Sie database.sqlden Master-Knoten gerade mit diesem Befehl aus dem Master-Knoten:
mysql -u MYSQL_USERNAME-pMYSQL-PASSWORD < database.sql
Starten Sie nun die Replikation. Öffnen Sie die MySQL-Konsole und führen Sie die folgenden Befehle aus:
SLAVE STOP;
CHANGE MASTER TO MASTER_HOST='MASTER_SERVER_IP_ADDRESS', MASTER_USER='slave', MASTER_PASSWORD='YOUR_SLAVE_PASSWORD', MASTER_LOG_FILE='FILE_VALUE_FROM_MASTER', MASTER_LOG_POS=POSITION_VALUE_FROM_MASTER;
SLAVE START;
Hinweis: Der Wert für MASTER_LOG_FILEund MASTER_LOG_POSist "Datei" und "Position", die wir aus dem Masterknoten-Setup notiert haben.