Gewusst wie: Konfigurieren der Datenreplikation in Azure Database for MySQLHow to configure Azure Database for MySQL Data-in Replication

In diesem Artikel erfahren Sie, wie Sie die Datenreplikation im Dienst Azure Database for MySQL einrichten, indem Sie Master- und Replikatserver konfigurieren.In this article, you will learn how to set up Data-in Replication in the Azure Database for MySQL service by configuring the master and replica servers. Mithilfe der Datenreplikation können Sie Daten von einem MySQL-Masterserver, der lokal, auf virtuellen Computern oder von Datenbankdiensten ausgeführt wird, die von anderen Cloudanbietern gehostet werden, mit einem Replikat im Azure Database for MySQL-Dienst synchronisieren.Data-in Replication allows you to synchronize data from a master MySQL server running on-premises, in virtual machines, or database services hosted by other cloud providers into a replica in the Azure Database for MySQL service.

In diesem Artikel wird davon ausgegangen, dass Sie über ein gewisses Maß an Erfahrung mit MySQL-Servern und -Datenbanken verfügen.This article assumes that you have at least some prior experience with MySQL servers and databases.

Erstellen eines als Replikat zu verwendenden MySQL-ServersCreate a MySQL server to be used as replica

  1. Erstellen Sie einen neuen Azure Database for MySQL-Server.Create a new Azure Database for MySQL server

    Erstellen Sie einen neuen MySQL-Server (z.B.Create a new MySQL server (ex. „replica.mysql.database.azure.com“)."replica.mysql.database.azure.com"). Informationen zur Servererstellung finden Sie unter Erstellen eines Azure Database for MySQL-Servers über das Azure-Portal.Refer to Create an Azure Database for MySQL server by using the Azure portal for server creation. Dieser Server ist der Replikatserver bei der Datenreplikation.This server is the "replica" server in Data-in Replication.

    Wichtig

    Der Azure Database for MySQL-Server muss in den Tarifen „Universell“ oder „Arbeitsspeicheroptimiert“ erstellt werden.The Azure Database for MySQL server must be created in the General Purpose or Memory Optimized pricing tiers.

  2. Erstellen Sie dieselben Benutzerkonten und entsprechenden Berechtigungen.Create same user accounts and corresponding privileges

    Benutzerkonten werden nicht vom Masterserver auf den Replikatserver repliziert.User accounts are not replicated from the master server to the replica server. Wenn Sie Benutzern Zugriff auf den Replikatserver gewähren möchten, müssen Sie alle Konten und entsprechenden Berechtigungen für diesen neu erstellten Azure Database for MySQL-Server manuell erstellen.If you plan on providing users with access to the replica server, you need to manually create all accounts and corresponding privileges on this newly created Azure Database for MySQL server.

Konfigurieren des MasterserversConfigure the master server

Mit den folgenden Schritten wird der MySQL-Server, der lokal, auf einem virtuellen Computer oder von einem von anderen Cloudanbietern gehosteten Datenbankdienst gehostet wird, für die Replikation eingehender Daten vorbereitet und konfiguriert.The following steps prepare and configure the MySQL server hosted on-premises, in a virtual machine, or database service hosted by other cloud providers for Data-in Replication. Dieser Server ist bei der Datenreplikation der „Master“.This server is the "master" in Data-in replication.

  1. Aktivieren Sie die binäre Protokollierung.Turn on binary logging

    Überprüfen Sie, ob die binäre Protokollierung auf dem Master aktiviert wurde, indem Sie den folgenden Befehl ausführen:Check to see if binary logging has been enabled on the master by running the following command:

    SHOW VARIABLES LIKE 'log_bin';
    

    Wenn die Variable log_bin mit dem Wert „ON“ zurückgegeben wird, ist die binäre Protokollierung auf Ihrem Server aktiviert.If the variable log_bin is returned with the value “ON", binary logging is enabled on your server.

    Wenn log_bin mit dem Wert „OFF“ zurückgegeben wird, aktivieren Sie die binäre Protokollierung, indem Sie die Datei „my.cnf“ in log_bin=ON ändern. Starten Sie dann Ihren Server neu, damit die Änderung wirksam wird.If log_bin is returned with the value “OFF”, turn on binary logging by editing your my.cnf file so that log_bin=ON and restart your server for the change to take effect.

  2. MasterservereinstellungenMaster server settings

    Der Parameter lower_case_table_names muss bei der Datenreplikation zwischen dem Master- und Replikatserver konsistent sein.Data-in Replication requires parameter lower_case_table_names to be consistent between the master and replica servers. Dieser Parameter ist bei Azure Database for MySQL standardmäßig „1“.This parameter is 1 by default in Azure Database for MySQL.

    SET GLOBAL lower_case_table_names = 1;
    
  3. Erstellen Sie eine neue Replikationsrolle, und richten Sie Berechtigungen ein.Create a new replication role and set up permission

    Erstellen Sie ein Benutzerkonto auf dem Masterserver, der mit Replikationsberechtigungen konfiguriert ist.Create a user account on the master server that is configured with replication privileges. Dies kann über SQL-Befehle oder ein Tool wie MySQL Workbench erfolgen.This can be done through SQL commands or a tool like MySQL Workbench. Treffen Sie die Entscheidung, ob Sie eine Replikation mit SSL durchführen möchten, da dies bei der Erstellung des Benutzers angegeben werden muss.Consider whether you plan on replicating with SSL as this will need to be specified when creating the user. Wie Benutzerkonten Ihrem Masterserver hinzugefügt werden, erfahren Sie in der MySQL-Dokumentation.Refer to the MySQL documentation to understand how to add user accounts on your master server.

    In den unten aufgeführten Befehlen kann die neu erstellte Replikationsrolle nicht nur vom Computer, auf dem der Masterserver selbst gehostet wird, auf den Masterserver zugreifen, sondern von jedem Computer aus.In the commands below, the new replication role created is able to access the master from any machine, not just the machine that hosts the master itself. Hierfür muss „syncuser@'%'“ im Befehl zum Erstellen von Benutzern angegeben werden.This is done by specifying "syncuser@'%'" in the create user command. Weitere Informationen finden Sie in der MySQL-Dokumentation unter Specifying Account Names (Angeben von Kontonamen).See the MySQL documentation to learn more about specifying account names.

    SQL-BefehlSQL Command

    Replikation mit SSLReplication with SSL

    Um für alle Benutzerverbindungen SSL zu erzwingen, verwenden Sie den folgenden Befehl zum Erstellen eines Benutzers:To require SSL for all user connections, use the following command to create a user:

    CREATE USER 'syncuser'@'%' IDENTIFIED BY 'yourpassword';
    GRANT REPLICATION SLAVE ON *.* TO ' syncuser'@'%' REQUIRE SSL;
    

    Replikation ohne SSLReplication without SSL

    Wenn SSL nicht für alle Benutzerverbindungen erforderlich ist, verwenden Sie den folgenden Befehl zum Erstellen eines Benutzers:If SSL is not required for all connections, use the following command to create a user:

    CREATE USER 'syncuser'@'%' IDENTIFIED BY 'yourpassword';
    GRANT REPLICATION SLAVE ON *.* TO ' syncuser'@'%';
    

    MySQL WorkbenchMySQL Workbench

    Um die Replikationsrolle in MySQL Workbench zu erstellen, navigieren Sie zu Benutzer und Berechtigungen im Bereich Verwaltung.To create the replication role in MySQL Workbench, open the Users and Privileges panel from the Management panel. Klicken Sie anschließend auf Konto hinzufügen.Then click on Add Account.

    Benutzer und Berechtigungen

    Geben Sie den Benutzernamen in das Feld Anmeldename ein.Type in the username into the Login Name field.

    Benutzersynchronisierung

    Klicken Sie auf den Bereich Administratorrollen, und wählen Sie aus der Liste Globale Berechtigungen die Option Replikationsslave aus.Click on the Administrative Roles panel and then select Replication Slave from the list of Global Privileges. Klicken Sie dann auf Anwenden, um die Replikationsrolle zu erstellen.Then click on Apply to create the replication role.

    Replikationsslave

  4. Setzen des Masterservers in den schreibgeschützten ModusSet the master server to read-only mode

    Bevor Sie mit dem Sichern der Datenbank beginnen, muss der Server in den schreibgeschützten Modus versetzt werden.Before starting to dump out the database, the server needs to be placed in read-only mode. Im schreibgeschützten Modus kann der Masterserver keine Schreibtransaktionen verarbeiten.While in read-only mode, the master will be unable to process any write transactions. Werten Sie die Auswirkungen auf Ihr Unternehmen aus, und planen Sie das Fenster für den schreibgeschützten Modus bei Bedarf in der Nebenzeit.Evaluate the impact to your business and schedule the read-only window in an off-peak time if necessary.

    FLUSH TABLES WITH READ LOCK;
    SET GLOBAL read_only = ON;
    
  5. Rufen Sie den Namen und das Offset der binären Protokolldatei ab.Get binary log file name and offset

    Führen Sie den Befehl show master status aus, um den aktuellen Namen und das Offset der binären Protokolldatei zu ermitteln.Run the show master status command to determine the current binary log file name and offset.

    show master status;
    

    Die Ergebnisse sollten wie folgt aussehen.The results should be like following. Notieren Sie sich den Namen der Binärdatei, da dieser bei den nachfolgenden Schritten benötigt wird.Make sure to note the binary file name as it will be used in later steps.

    Statusergebnisse des Masters

Sichern und Wiederherstellen des MasterserversDump and restore master server

  1. Sichern aller Datenbanken vom MasterserverDump all databases from master server

    Mit „mysqldump“ können Sie Datenbanken von Ihrem Masterserver sichern.You can use mysqldump to dump databases from your master. Weitere Informationen finden Sie unter Migrieren der MySQL-Datenbank auf Azure-Datenbank für MySQL durch Sicherungen und Wiederherstellungen.For details, refer to Dump & Restore. Die MySQL- und die Testbibliothek müssen nicht gesichert werden.It is unnecessary to dump MySQL library and test library.

  2. Setzen des Masterservers in den Lese-/SchreibmodusSet master server to read/write mode

    Sobald die Datenbank gesichert wurde, setzen Sie den MySQL-Masterserver wieder in den Lese-/Schreibmodus.Once the database has been dumped, change the master MySQL server back to read/write mode.

    SET GLOBAL read_only = OFF;
    UNLOCK TABLES;
    
  3. Stellen Sie die Sicherungsdatei auf dem neuen Server wieder her.Restore dump file to new server

    Stellen Sie die Sicherungsdatei auf dem Server wieder her, der im Dienst Azure Database for MySQL erstellt wurde.Restore the dump file to the server created in the Azure Database for MySQL service. Informationen zum Wiederherstellen einer Sicherungsdatei auf einem MySQL-Server finden Sie unter Migrieren der MySQL-Datenbank auf Azure-Datenbank für MySQL durch Sicherungen und Wiederherstellungen.Refer to Dump & Restore for how to restore a dump file to a MySQL server. Handelt es sich um eine große Sicherungsdatei, laden Sie sie auf einen virtuellen Computer in Azure in der gleichen Region wie Ihr Replikatserver hoch.If the dump file is large, upload it to a virtual machine in Azure within the same region as your replica server. Stellen Sie sie auf dem Azure Database for MySQL-Server vom virtuellen Computer wieder her.Restore it to the Azure Database for MySQL server from the virtual machine.

  1. Festlegen des MasterserversSet master server

    Alle Datenreplikationsfunktionen erfolgen über gespeicherte Prozeduren.All Data-in Replication functions are done by stored procedures. Alle Prozeduren finden Sie unter Gespeicherte Prozeduren für Datenreplikationen in Azure Database for MySQL.You can find all procedures at Data-in Replication Stored Procedures. Die gespeicherten Prozeduren können in der MySQL-Shell oder in MySQL Workbench ausgeführt werden.The stored procedures can be run in the MySQL shell or MySQL Workbench.

    Um zwei Server zu verknüpfen und die Replikation zu starten, melden Sie sich beim Zielreplikatserver im Dienst Azure Database for MySQL an, und legen Sie die externe Instanz als Masterserver fest.To link two servers and start replication, login to the target replica server in the Azure DB for MySQL service and set the external instance as the master server. Hierfür verwenden Sie die gespeicherte Prozedur mysql.az_replication_change_master auf dem Azure Database for MySQL-Server.This is done by using the mysql.az_replication_change_master stored procedure on the Azure DB for MySQL server.

    CALL mysql.az_replication_change_master('<master_host>', '<master_user>', '<master_password>', 3306, '<master_log_file>', <master_log_pos>, '<master_ssl_ca>');
    
    • master_host: Hostname des Masterserversmaster_host: hostname of the master server
    • master_user: Benutzername des Masterserversmaster_user: username for the master server
    • master_password: Kennwort des Masterserversmaster_password: password for the master server
    • master_log_file: Name der binären Protokolldatei durch Ausführung von show master statusmaster_log_file: binary log file name from running show master status
    • master_log_pos: Position des binären Protokolls durch Ausführung von show master statusmaster_log_pos: binary log position from running show master status
    • master_ssl_ca: Der Kontext des Zertifizierungsstellenzertifikats.master_ssl_ca: CA certificate’s context. Wenn SSL nicht verwendet wird, übergeben Sie eine leere Zeichenfolge.If not using SSL, pass in empty string.
      • Es wird empfohlen, diesen Parameter als Variable zu übergeben.It is recommended to pass this parameter in as a variable. Weitere Informationen finden Sie in den folgenden Beispielen.See the following examples for more information.

Hinweis

Wenn der Masterserver auf einer Azure VM gehostet wird, legen Sie „Zugriff auf Azure-Dienste erlauben“ auf „EIN“ fest, damit Master- und Replikatserver miteinander kommunizieren können.If the master server is hosted in an Azure VM, set "Allow access to Azure services" to "ON" to allow the master and replica servers to communicate with each other. Diese Einstellung kann über die Optionen für die Verbindungssicherheit geändert werden.This setting can be changed from the Connection security options. Weitere Informationen finden Sie unter Verwaltung von Firewallregeln mit dem Portal.Refer to manage firewall rules using portal for more information.

BeispieleExamples

Replikation mit SSLReplication with SSL

Die Variable @cert wird durch Ausführung der folgenden MySQL-Befehle erstellt:The variable @cert is created by running the following MySQL commands:

SET @cert = '-----BEGIN CERTIFICATE-----
PLACE YOUR PUBLIC KEY CERTIFICATE’S CONTEXT HERE
-----END CERTIFICATE-----'

Eine Replikation mit SSL wird zwischen einem Masterserver, der in der Domäne „UnternehmenA.com“ gehostet wird, und einem Replikatserver, der in Azure Database for MySQL gehostet wird, eingerichtet.Replication with SSL is set up between a master server hosted in the domain “companya.com” and a replica server hosted in Azure Database for MySQL. Diese gespeicherte Prozedur wird auf dem Replikat ausgeführt.This stored procedure is run on the replica.

CALL mysql.az_replication_change_master('master.companya.com', 'syncuser', 'P@ssword!', 3306, 'mysql-bin.000002', 120, @cert);

Replikation ohne SSLReplication without SSL

Eine Replikation ohne SSL wird zwischen einem Masterserver, der in der Domäne „UnternehmenA.com“ gehostet wird, und einem Replikatserver, der in Azure Database for MySQL gehostet wird, eingerichtet.Replication without SSL is set up between a master server hosted in the domain “companya.com” and a replica server hosted in Azure Database for MySQL. Diese gespeicherte Prozedur wird auf dem Replikat ausgeführt.This stored procedure is run on the replica.

CALL mysql.az_replication_change_master('master.companya.com', 'syncuser', 'P@ssword!', 3306, 'mysql-bin.000002', 120, '');
  1. Starten Sie die Replikation.Start replication

    Rufen Sie die gespeicherte Prozedur mysql.az_replication_start auf, um die Replikation zu initiieren.Call the mysql.az_replication_start stored procedure to initiate replication.

    CALL mysql.az_replication_start;
    
  2. Überprüfen Sie den Replikationsstatus.Check replication status

    Rufen Sie den Befehl show slave status auf dem Replikatserver auf, um den Replikationsstatus anzuzeigen.Call the show slave status command on the replica server to view the replication status.

    show slave status;
    

    Wenn der Status von Slave_IO_Running und Slave_SQL_Running „yes“ lauten und der Wert von Seconds_Behind_Master „0“ ist, funktioniert die Replikation ordnungsgemäß.If the state of Slave_IO_Running and Slave_SQL_Running are "yes" and the value of Seconds_Behind_Master is “0”, replication is working well. Seconds_Behind_Master gibt an, wie stark das Replikat verzögert ist.Seconds_Behind_Master indicates how late the replica is. Wenn der Wert nicht „0“ ist, bedeutet dies, dass das Replikat momentan Updates verarbeitet.If the value is not "0", it means that the replica is processing updates.

Andere gespeicherte ProzedurenOther stored procedures

Beenden der ReplikationStop replication

Um die Replikation zwischen dem Master- und Replikatserver zu beenden, verwenden Sie die folgende gespeicherte Prozedur:To stop replication between the master and replica server, use the following stored procedure:

CALL mysql.az_replication_stop;

Entfernen der ReplikationsbeziehungRemove replication relationship

Um die Replikationsbeziehung zwischen dem Master- und Replikatserver zu entfernen, verwenden Sie die folgende gespeicherte Prozedur:To remove the relationship between master and replica server, use the following stored procedure:

CALL mysql.az_replication_remove_master;

Überspringen des ReplikationsfehlersSkip replication error

Um einen Replikationsfehler zu überspringen und die Replikation fortzusetzen, verwenden Sie die folgende gespeicherte Prozedur:To skip a replication error and allow replication to proceed, use the following stored procedure:

CALL mysql.az_replication_skip_counter;

Nächste SchritteNext steps