Een Replicatie van inkomende gegevens configureren in Azure Database for MariaDB

In dit artikel wordt beschreven hoe u een Replicatie van inkomende gegevens in Azure Database for MariaDB door de bron- en replicaservers te configureren. In dit artikel wordt ervan uitgenomen dat u enige ervaring hebt met MariaDB-servers en -databases.

Als u een replica in de Azure Database for MariaDB-service wilt maken, synchroniseert Replicatie van inkomende gegevens gegevens van een on-premises MariaDB-bronserver, in virtuele machines (VM's) of in clouddatabaseservices. Replicatie van binnenkomende gegevens is gebaseerd op het binaire logbestand (binlog) met replicatie op basis van positie eigen aan MariaDB. Zie het overzicht van binlog-replicatie voor meer informatie over binlog-replicatie.

Bekijk de beperkingen en vereisten van replicatie van binnenkomende gegevens voordat u de stappen in dit artikel gaat uitvoeren.

Notitie

Als uw bronserver versie 10.2 of hoger is, raden we u aan om een Replicatie van inkomende gegevens met behulp van globale transactie-id.

Notitie

Dit artikel bevat verwijzingen naar de term slave, een term die Microsoft niet meer gebruikt. Zodra de term uit de software wordt verwijderd, verwijderen we deze uit dit artikel.

Een MariaDB-server maken voor gebruik als replica

  1. Maak een nieuwe Azure Database for MariaDB server (bijvoorbeeld replica.mariadb.database.azure.com). De server is de replicaserver in Replicatie van inkomende gegevens.

    Zie Create an Azure Database for MariaDB server by using the Azure Portal (Een server Azure Database for MariaDB maken met behulp van de Azure Portal.

    Belangrijk

    U moet de Azure Database for MariaDB maken in de prijscategorie Algemeen of geoptimaliseerd voor geheugen.

  2. Identieke gebruikersaccounts en bijbehorende bevoegdheden maken.

    Gebruikersaccounts worden niet gerepliceerd van de bronserver naar de replicaserver. Als u gebruikerstoegang wilt verlenen tot de replicaserver, moet u handmatig alle accounts en bijbehorende bevoegdheden maken op de zojuist gemaakte Azure Database for MariaDB server.

  3. Voeg het IP-adres van de bronserver toe aan de firewallregels van de replica.

    Firewallregels bijwerken met de Azure-portal of Azure CLI.

De bronserver configureren

Met de volgende stappen wordt de MariaDB-server voorbereid en geconfigureerd die on-premises, in een VM of in een clouddatabaseservice wordt gehost Replicatie van inkomende gegevens. De MariaDB-server is de bron in Replicatie van inkomende gegevens.

  1. Controleer de vereisten voor de primaire server voordat u doorgaat.

  2. Zorg ervoor dat de bronserver zowel inkomende als uitgaande verkeer op poort 3306 toestaat en dat de bronserver een openbaar IP-adres heeft, dat de DNS openbaar toegankelijk is of een FQDN (Fully Qualified Domain Name) heeft.

    Test de verbinding met de bronserver door verbinding te maken vanaf een hulpprogramma zoals de MySQL-opdrachtregel die wordt gehost op een andere computer of vanuit de Azure Cloud Shell die beschikbaar is in de Azure Portal.

    Als uw organisatie strikt beveiligingsbeleid heeft en niet alle IP-adressen op de bronserver toestaat om communicatie van Azure naar uw bronserver mogelijk te maken, kunt u de onderstaande opdracht gebruiken om het IP-adres van uw Azure Database for MariaDB-server te bepalen.

    1. Meld u aan bij uw Azure Database for MariaDB een hulpprogramma zoals de MySQL-opdrachtregel.

    2. Voer de onderstaande query uit.

      mysql> SELECT @@global.redirect_server_host;
      

      Hieronder ziet u een voorbeeld van uitvoer:

      +-----------------------------------------------------------+
      | @@global.redirect_server_host                             |
      +-----------------------------------------------------------+
      | e299ae56f000.tr1830.westus1-a.worker.database.windows.net |
       +-----------------------------------------------------------+
      
    3. Sluit af vanaf de MySQL-opdrachtregel.

    4. Voer de onderstaande opdracht uit in het ping-hulpprogramma om het IP-adres op te halen.

      ping <output of step 2b>
      

      Bijvoorbeeld:

      C:\Users\testuser> ping e299ae56f000.tr1830.westus1-a.worker.database.windows.net
      Pinging tr1830.westus1-a.worker.database.windows.net (**11.11.111.111**) 56(84) bytes of data.
      
    5. Configureer de firewallregels van de bronserver om het uitvoerde IP-adres van de vorige stap op poort 3306 op te nemen.

    Notitie

    Dit IP-adres kan worden gewijzigd vanwege onderhouds-/implementatiebewerkingen. Deze verbindingsmethode is alleen voor klanten die het zich niet kunnen veroorloven om alle IP-adressen op de 3306-poort toe te staan.

  3. Schakel binaire logboekregistratie in.

    Als u wilt zien of binaire logboekregistratie is ingeschakeld op de primaire, voert u de volgende opdracht in:

    SHOW VARIABLES LIKE 'log_bin';
    

    Als de variabele log_bin de waarde retourneert, ON wordt binaire logboekregistratie ingeschakeld op uw server.

    Als log_bin de waarde retourneert, OFF bewerkt u het bestand my.cnf zodat log_bin=ON binaire logboekregistratie wordt inschakelen. Start de server opnieuw op om de wijziging van kracht te laten worden.

  4. Configureer de instellingen van de bronserver.

    Replicatie van inkomende gegevens vereist dat de parameter lower_case_table_names consistent is tussen de bron- en replicaservers. De lower_case_table_names parameter is standaard ingesteld op in 1 Azure Database for MariaDB.

    SET GLOBAL lower_case_table_names = 1;
    
  5. Maak een nieuwe replicatierol en stel machtigingen in.

    Maak een gebruikersaccount op de bronserver dat is geconfigureerd met replicatiebevoegdheden. U kunt een account maken met behulp SQL opdrachten of MySQL Workbench. Als u van plan bent te repliceren met SSL, moet u dit opgeven wanneer u het gebruikersaccount maakt.

    Zie de MariaDB-documentatievoor meer informatie over het toevoegen van gebruikersaccounts op uw bronserver.

    Met behulp van de volgende opdrachten heeft de nieuwe replicatierol toegang tot de bron vanaf elke computer, niet alleen op de computer die als host voor de bron zelf wordt gebruikt. Geef voor deze toegang de synchronisatiegebruiker @ '%' op in de opdracht om een gebruiker te maken.

    Zie accountnamen opgeven voor meer informatie over mariadb-documentatie.

    SQL opdracht

    • Replicatie met SSL

      Als u SSL wilt vereisen voor alle gebruikersverbindingen, voert u de volgende opdracht in om een gebruiker te maken:

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

      Als SSL niet vereist is voor alle verbindingen, voert u de volgende opdracht in om een gebruiker te maken:

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

    MySQL Workbench

    Als u de replicatierol in MySQL Workbench wilt maken, selecteert u gebruikers en bevoegdheden in het deelvenster Beheer. Selecteer vervolgens Account toevoegen.

    Gebruikers en bevoegdheden

    Voer een gebruikersnaam in het veld Aanmeldingsnaam in.

    Gebruiker synchroniseren

    Selecteer het deelvenster Beheerrollen en selecteer vervolgens replicatie-slave in de lijst met globale bevoegdheden. Selecteer Toepassen om de replicatierol te maken.

    Replicatie-slave

  6. Stel de bronserver in op de modus Alleen-lezen.

    Voordat u een database dumpt, moet de server in de alleen-lezenmodus worden geplaatst. In de alleen-lezenmodus kan de bron geen schrijftransacties verwerken. Om bedrijfsimpact te voorkomen, kunt u het alleen-lezenvenster plannen tijdens een daltijd.

    FLUSH TABLES WITH READ LOCK;
    SET GLOBAL read_only = ON;
    
  7. Haal de naam en offset van het huidige binaire logboekbestand op.

    Voer de opdracht uit om de huidige naam en offset van het binaire logboekbestand te show master status bepalen.

    show master status;
    

    De resultaten moeten er ongeveer als volgt uit zien:

    Resultaten van masterstatus

    Noteer de naam van het binaire bestand, omdat deze in latere stappen wordt gebruikt.

  8. Haal de GTID-positie op (optioneel, nodig voor replicatie met GTID).

    Voer de functie uit BINLOG_GTID_POS om de GTID-positie voor de bijbehorende binlog-bestandsnaam en offset op te halen.

    select BINLOG_GTID_POS('<binlog file name>', <binlog offset>);
    

De bronserver dumpen en herstellen

  1. Dump alle databases van de bronserver.

    Gebruik mysqldump om alle databases van de bronserver te dumpen. Het is niet nodig om de MySQL-bibliotheek en testbibliotheek te dumpen.

    Zie Dump and restore (Dumpen en herstellen) voor meer informatie.

  2. Stel de bronserver in op de lees-/schrijfmodus.

    Nadat de database is gedumpt, wijzigt u de MariaDB-bronserver weer in de lees-/schrijfmodus.

    SET GLOBAL read_only = OFF;
    UNLOCK TABLES;
    
  3. Herstel het dumpbestand naar de nieuwe server.

    Herstel het dumpbestand naar de server die is gemaakt in de Azure Database for MariaDB service. Zie Dump & Herstellen voor het herstellen van een dumpbestand naar een MariaDB-server.

    Als het dumpbestand groot is, uploadt u het naar een VM in Azure binnen dezelfde regio als uw replicaserver. Herstel deze op de Azure Database for MariaDB server vanaf de VM.

  1. Stel de bronserver in.

    Alle Replicatie van inkomende gegevens worden uitgevoerd door opgeslagen procedures. U vindt alle procedures op Replicatie van inkomende gegevens Opgeslagen procedures. Opgeslagen procedures kunnen worden uitgevoerd in de MySQL-shell of MySQL Workbench.

    Als u twee servers wilt koppelen en de replicatie wilt starten, moet u zich aanmelden bij de doelreplicaserver in de Azure DB for MariaDB service. Stel vervolgens het externe exemplaar in als de bronserver met behulp van de mysql.az_replication_change_master procedure of mysql.az_replication_change_master_with_gtid opgeslagen op de Azure DB for MariaDB server.

    CALL mysql.az_replication_change_master('<master_host>', '<master_user>', '<master_password>', 3306, '<master_log_file>', <master_log_pos>, '<master_ssl_ca>');
    

    of

    CALL mysql.az_replication_change_master_with_gtid('<master_host>', '<master_user>', '<master_password>', 3306, '<master_gtid_pos>', '<master_ssl_ca>');
    
    • master_host: hostnaam van de bronserver
    • master_user: gebruikersnaam voor de bronserver
    • master_password: wachtwoord voor de bronserver
    • master_log_file: naam van binair logboekbestand wordt niet uitgevoerd show master status
    • master_log_pos: binaire logboekpositie wordt niet uitgevoerd show master status
    • master_gtid_pos: GTID-positie wordt niet uitgevoerd select BINLOG_GTID_POS('<binlog file name>', <binlog offset>);
    • master_ssl_ca: de context van het CA-certificaat. Als u geen SSL gebruikt, geef dan een lege tekenreeks door.*

    *We raden u aan de parameter master_ssl_ca als variabele door te geven. Zie de volgende voorbeelden voor meer informatie.

    Voorbeelden

    • Replicatie met SSL

      Maak de variabele @cert door de volgende opdrachten uit te voeren:

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

      Replicatie met SSL wordt ingesteld tussen een bronserver die wordt gehost in het domein companya.com en een replicaserver die wordt gehost in Azure Database for MariaDB. Deze opgeslagen procedure wordt uitgevoerd op de replica.

      CALL mysql.az_replication_change_master('master.companya.com', 'syncuser', 'P@ssword!', 3306, 'mariadb-bin.000016', 475, @cert);
      
    • Replicatie zonder SSL

      Replicatie zonder SSL wordt ingesteld tussen een bronserver die wordt gehost in het domein companya.com en een replicaserver die wordt gehost in Azure Database for MariaDB. Deze opgeslagen procedure wordt uitgevoerd op de replica.

      CALL mysql.az_replication_change_master('master.companya.com', 'syncuser', 'P@ssword!', 3306, 'mariadb-bin.000016', 475, '');
      
  2. Replicatie starten.

    Roep de mysql.az_replication_start opgeslagen procedure aan om de replicatie te starten.

    CALL mysql.az_replication_start;
    
  3. Controleer de replicatiestatus.

    Roep de show slave status opdracht op de replicaserver aan om de replicatiestatus weer te geven.

    show slave status;
    

    Als Slave_IO_Running en de status hebben en de waarde van Slave_SQL_Running yes Seconds_Behind_Master 0 is, werkt replicatie. Seconds_Behind_Master geeft aan hoe laat de replica is. Als de waarde niet 0 is, verwerkt de replica updates.

  4. Werk de bijbehorende servervariabelen bij om replicatie van binnenkomende gegevens veiliger te maken (alleen vereist voor replicatie zonder GTID).

    Vanwege een native replicatiebeperking in MariaDB moet u variabelen en instellen voor sync_master_info sync_relay_log_info replicatie zonder het GTID-scenario.

    Controleer de variabelen en van de replicaserver om te controleren of de replicatie van binnenkomende gegevens stabiel sync_master_info is en stel de variabelen in op sync_relay_log_info 1 .

Andere opgeslagen procedures

Replicatie stoppen

Als u de replicatie tussen de bron- en replicaserver wilt stoppen, gebruikt u de volgende opgeslagen procedure:

CALL mysql.az_replication_stop;

De replicatierelatie verwijderen

Gebruik de volgende opgeslagen procedure om de relatie tussen de bron- en replicaserver te verwijderen:

CALL mysql.az_replication_remove_master;

De replicatiefout overslaan

Als u een replicatiefout wilt overslaan en replicatie wilt toestaan, gebruikt u de volgende opgeslagen procedure:

CALL mysql.az_replication_skip_counter;

Volgende stappen

Meer informatie over Replicatie van inkomende gegevens voor Azure Database for MariaDB.