GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Richten Sie die MySQL-Quellreplikatreplikation ein

Die Quellreplikat-Datenreplikation ermöglicht Ihnen das Kopieren replizierter Daten auf mehrere Computer zur Sicherung und Analyse durch mehrere Parteien. Sie sollten notwendige Änderungen, die von einem Gruppenmitglied identifiziert wurden, an den designierten Primärknoten des Knotens übermitteln. Dies unterscheidet sich von der Source-Source-Replikation, bei der jeder autorisierte Mitwirkende der Gruppe Daten aktualisieren kann.

Dieser Artikel enthält Schritte zum Einrichten der MySQL®-Quellreplikat-Datenbankreplikation zwischen zwei Cloud-Servern. Das für die Beispiele in diesem Artikel verwendete Betriebssystem ist CentOS® 6, das aus einem Basis-Image von Rackspace CloudServers erstellt wurde.

Bevor Sie beginnen

Die Schritte in diesem Artikel verwenden zwei Cloud-Server, db01 und db02 .Cloud-Server haben zwei IP-Adressen (eine öffentliche, eine private). Die Beispiele veranschaulichen die Konfiguration der Replikation über die private IP-Schnittstelle, sodass keine Bandbreitengebühren anfallen. Für die Dauer des Artikels db01 gilt als Quelle MySQL-Server (läuft im Lese-/Schreibmodus) und db02 gilt als Replik server (läuft im Nur-Lese-Modus).

Wenn auf dem Quellknoten bereits eine MySQL-Datenbank ausgeführt wird, ist ein Dump und eine Wiederherstellung auf dem Replikatknoten erforderlich, bevor die Replikation zwischen ihnen konfiguriert wird. Sie verwenden den mysqldump Befehl, um eine Datenbank in eine Datei zu sichern, sie dann zu übertragen und in der Replik wiederherzustellen. Nachdem die erforderliche Konfiguration durchgeführt wurde, ist die Replikation unwirksam. Weitere Informationen finden Sie im Abschnitt Replikation konfigurieren.

Erstellen Sie die Cloud-Server

Erstellen Sie zwei Linux®-Cloud-Server mit dem Basis-Image von Centos 6. Verwenden Sie die folgenden Schritte, um jeden Server separat zu erstellen.

  1. Melden Sie sich beim Cloud Control Panel an.
  2. Klicken Sie in der oberen Navigationsleiste auf Produkt auswählen dann Rackspace Cloud .
  3. Wählen Sie Server aus dann Cloud-Server .
  4. Klicken Sie auf Server erstellen .
  5. Benennen Sie die Server so, dass Sie sie während der Einrichtung leicht identifizieren können.
  6. Wählen Sie das Centos 6-Basisimage aus.
  7. Wählen Sie die für Ihre Datenbankanforderungen geeignete RAM-Konfiguration (Variante) aus.
  8. Klicken Sie auf Server erstellen .

Die in den folgenden Abschnitten beschriebenen Befehle müssen von einem privilegierten Root- oder Sudo-Gruppenbenutzer ausgeführt werden. Alle in Klammern angegebenen Zeichenfolgen oder Werte sollten durch Daten ersetzt werden, die für Ihre Einrichtung spezifisch sind.

Installieren Sie MySQL

Sie müssen den mysql-server installieren -Paket auf beiden CentOS-Cloudservern.

  1. Bestätigen Sie vor der Installation von MySQL, dass die Paketdatenbank auf dem neuesten Stand ist, indem Sie den folgenden Befehl ausführen:

    #yum update
    
  2. Installieren Sie MySQL und aktivieren Sie es so, dass es beim Booten automatisch ausgeführt wird:

     #yum install mysql-server
    #chkconfig mysqld on
    
  3. Starten Sie mysqld Dienst:

    #service mysqld start
    
  4. Nach dem mysqld Dienst gestartet wurde, legen Sie Ihr MySQL-Serverroot-Passwort mit den folgenden Befehlen fest:

    /usr/bin/mysqladmin -u root password 'new-password'
    /usr/bin/mysqladmin -u root -h web01 password 'new-password'
    

    Hinweis :Alternativ können Sie das mit der MySQL-Installation paketierte sichere Installationsskript ausführen:

    # /usr/bin/mysql_secure_installation
    Enter current password for root (enter for none):
    ...
    Set root password? [Y/n] Y
    ...
    Remove anonymous users? [Y/n] Y
    ...
    Disallow root login remotely? [Y/n] Y
    ...
    Remove test database and access to it? [Y/n] Y
    ...
    Reload privilege tables now? [Y/n] Y
    
  5. Um Verbindungen auf Port 3306 (der mysqld Standardport), fügen Sie eine Regel für den TCP-Port 3306 mit einer Einfügung an der letzten Zeilennummer im RH-Firewall-1-INPUT hinzu Kette (in diesem Fall Zeile 10):

    # iptables -I RH-Firewall-1-INPUT 10 -p tcp --dport 3306 -j ACCEPT
    
  6. Speichern Sie die Firewall-Konfiguration:

    # service iptables save
    

Füllen Sie den folgenden Abschnitt aus, um relevante Konfigurationsänderungen vorzunehmen, um die Replikation zu aktivieren.

Replikation konfigurieren

Auf dem Quellserver ist ein MySQL-Benutzer erforderlich (db01 ), die für die Replikation verwendet werden sollen.

  1. Führen Sie die folgenden Befehle aus, um den MySQL-Benutzer einzurichten, und aktualisieren Sie die Einträge in Klammern mit Zeichenfolgen oder Werten, die Sie mit Ihrem Setup verwenden möchten:

    Hinweis: Möglicherweise müssen Sie den Benutzer im folgenden Code nicht erstellen.

    # mysql -u root -p
    mysql> create user [replication_username]@'[private IP of db02]' identified by '[some password]';
    mysql> grant replication slave on *.* TO [replication_username]@'[private IP of db02]';
    mysql> flush privileges;
    mysql> quit
    
  2. Bearbeiten Sie die /etc/my.cnf Datei, und fügen Sie die folgenden Einträge hinzu:

    bind-address = 0.0.0.0
    server-id = 1
    log-bin = mysql-bin
    binlog-ignore-db = "mysql"
    
  3. Nachdem Sie die Aktualisierung von /etc/my.cnf abgeschlossen haben Datei, starten Sie mysqld neu Dienst.

    #service mysqld restart
    

    Vor dem Starten der Replikation müssen die Daten auf den Quell- und Replikationsservern identisch sein. Um diese Duplizierung durchzuführen, sichern Sie die Daten aus der Quelle (db01 ) Server und fügen Sie es dem Replikat hinzu (db02 )-Server.

  4. Verwenden Sie den folgenden Befehl, um sicherzustellen, dass während eines Datenbank-Dumps nichts in die Quelldatenbank schreiben kann. Notieren Sie sich auch den Dateinamen und die Position des Binärlogs, da Sie diese Werte benötigen, um die Replikationskonfiguration auf db02 abzuschließen:

    # mysql -u root -p
    mysql> FLUSH TABLES WITH READ LOCK;
    mysql> SHOW MASTER STATUS;
    
    +------------------+--------------------------+------------------+
    | File             | Position  | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+--------------------------+------------------+
    | mysql-bin.000010 |        10 |              | mysql            |
    +------------------+--------------------------+------------------+
    1 row in set (0.00 sec)
    

    Anmerkung 1: Notieren Sie den Dateinamen und die Position des Binärlogs, da Sie diese Werte benötigen, um die Replikationskonfiguration auf db02 abzuschließen .

    Anmerkung 2: Lassen Sie diese Sitzung geöffnet, schließen Sie sie, wird die Sperre aufgehoben!

  5. Führen Sie einen Datenbank-Dump mit mysqldump durch wie folgt:

    # mysqldump -u root -p --databases [database-1] [database-2] ...  > /root/db_dump.sql
    
  6. Nachdem der Datenbank-Dump abgeschlossen ist, heben Sie die Lesesperre von der Quelle auf (db01 ), indem Sie Folgendes eingeben oder die geöffnete Sitzung verlassen:

    mysql> UNLOCK TABLES;
    
  7. Kopieren Sie die Datenbank-Dumpdatei auf den Replikatserver, damit sie mit dem folgenden Befehl wiederhergestellt werden kann:

    scp /root/db_dump.sql [private-IP-of-db02]:/root/
    
  8. Auf db02 , bearbeiten Sie die /etc/my.cnf Datei und fügen Sie die folgenden Einträge hinzu:

    bind-address = 0.0.0.0
    server-id = 2
    master-host =  [private-IP-of-db01]
    master-user = [replication-username]
    master-password = [replication-password]
    master-connect-retry = 60
    
  9. Importieren Sie die db_dump.sql zuvor kopierte Datei und starten Sie den MySQL-Dienst neu.

    # mysql -u root -p < /root/db_dump.sql
    # service mysqld restart
    
  10. Führen Sie die Replikationsschritte aus:

    # mysql -u root -p
    mysql> SLAVE STOP;
    mysql> CHANGE MASTER TO MASTER_HOST='[private-IP-of-db01]',
    MASTER_USER='[replication-username]',
    MASTER_PASSWORD='[replication-password]',
    MASTER_LOG_FILE='[file-listed-on-master-status]',
    MASTER_LOG_POS=[log-position-listed-on-master-status];
    mysql> START SLAVE;
    mysql> SHOW SLAVE STATUS\G
    

    Hinweis: Der Slave_IO_State Feld sollte „Warten auf Master-tosend-Ereignis“ anzeigen. Wenn „Connecting to Master“ angezeigt wird, überprüfen Sie Ihre MySQL-Protokolldatei. Standardmäßig ist es /var/log/mysqld.log , aber es könnte auf Ihrem System anders konfiguriert sein. Wie immer /etc/my.cnf definiert den Speicherort Ihrer Protokolldatei.

Replikation testen

Erstellen Sie zum Testen der Replikationskonfiguration eine neue Datenbank und eine zugehörige Tabelle auf db01 und fügen Sie Daten ein, um zu bestätigen, dass die Änderungen auf db02 gespiegelt werden . Im folgenden Beispiel heißt die neue Datenbank testing , und die neue Tabelle heißt users :

# mysql -u root -p
mysql> create database testing;
mysql> use testing
mysql> create table users(id int not null auto_increment, primary key(id), username varchar(30) not null);
mysql> insert into users (username) values ('foo');
mysql> insert into users (username) values ('bar');
mysql> exit

Sie sollten die Änderungen auf db02 sehen sofort.


Linux
  1. So richten Sie die MySQL-Master-Master-Replikation ein

  2. So konfigurieren Sie die MySQL Multi-Master-Replikation unter Oracle Linux

  3. So richten Sie einen Ubuntu/Debian LAMP-Server ein

  4. So installieren und konfigurieren Sie mysql 8 unter Ubuntu 20.04

  5. So richten Sie die MySQL-Replikation unter CentOS ein

So konfigurieren Sie die MySQL-Master-Slave-Replikation unter Ubuntu 18.04

So konfigurieren Sie die MySQL-Master-Slave-Replikation unter CentOS 7

MySQL 8 Master-Slave-Replikation auf Ubuntu 20.04

Wie richte ich den Remote-MySQL-Zugriff auf cPanel ein?

So richten Sie die MariaDB-Master-Slave-Replikation unter CentOS 7 ein

Wie richte ich die MySQL-Master-Slave-Replikation auf RHEL 7 ein?