Delen via


Azure Database for MySQL - Flexible Server-gegevensreplicatie configureren

VAN TOEPASSING OP: Azure Database for MySQL - Flexibele server

In dit artikel wordt beschreven hoe u replicatie van gegevens in Azure Database for MySQL flexibele server instelt door de bron- en replicaservers te configureren. In dit artikel wordt ervan uitgegaan dat u enige ervaring hebt met MySQL-servers en -databases.

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.

Als u een replica wilt maken in het exemplaar van een flexibele Azure Database for MySQL-server, synchroniseert de replicatie van inkomende gegevens gegevens van een on-premises MySQL-bronserver, in virtuele machines (VM's) of in clouddatabaseservices. Replicatie van inkomende gegevens kan worden geconfigureerd met behulp van replicatie op basis van binaire logboekbestanden (binlog) OF GTID-replicatie. Zie de MySQL-replicatie voor meer informatie over binlog-replicatie.

Bekijk de beperkingen en vereisten van replicatie van gegevens voordat u de stappen in dit artikel uitvoert.

Een exemplaar van een flexibele Azure Database for MySQL-server maken voor gebruik als replica

  1. Maak een nieuw exemplaar van een flexibele Azure Database for MySQL-server (bijvoorbeeld replica.mysql.database.azure.com). Raadpleeg Een exemplaar van een flexibele Azure Database for MySQL-server maken met behulp van Azure Portal voor het maken van een server. Deze server is de replicaserver voor replicatie van inkomende gegevens.

  2. Maak dezelfde gebruikersaccounts en bijbehorende bevoegdheden.

    Gebruikersaccounts worden niet van de bronserver naar de replicaserver gerepliceerd. Als u van plan bent gebruikers toegang te geven tot de replicaserver, moet u alle accounts en bijbehorende bevoegdheden handmatig maken op dit zojuist gemaakte exemplaar van flexibele Azure Database for MySQL-server.

De MySQL-bronserver configureren

De volgende stappen bereiden en configureren de MySQL-server die on-premises wordt gehost, in een virtuele machine of databaseservice die wordt gehost door andere cloudproviders voor replicatie van inkomende gegevens. Deze server is de bron voor replicatie van inkomende gegevens.

  1. Controleer de vereisten voor de bronserver voordat u doorgaat.

  2. Netwerkvereisten

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

    • Als privétoegang (VNet-integratie) wordt gebruikt, moet u ervoor zorgen dat u verbinding hebt tussen de bronserver en het Vnet waarin de replicaserver wordt gehost.

    • Zorg ervoor dat we site-naar-site-connectiviteit bieden met uw on-premises bronservers met behulp van ExpressRoute of VPN. Voor meer informatie over het maken van een virtueel netwerk raadpleegt u de Documentatie over virtuele netwerken en dan met name de quickstart-artikelen met stapsgewijze informatie.

    • Als privétoegang (VNet-integratie) wordt gebruikt in de replicaserver en uw bron Azure VM is, moet u ervoor zorgen dat VNet-naar-VNet-connectiviteit tot stand is gebracht. VNet-Vnet-peering wordt ondersteund. U kunt ook andere connectiviteitsmethoden gebruiken om te communiceren tussen VNets in verschillende regio's, zoals VNet naar VNet-verbinding. Zie VNet-naar-VNet VPN-gateway voor meer informatie

    • Zorg ervoor dat de regels voor de netwerkbeveiligingsgroep van uw virtuele netwerk de uitgaande poort 3306 niet blokkeren (ook binnenkomend als mySQL wordt uitgevoerd op azure-VM). Zie het artikel Netwerkverkeer filteren met netwerkbeveiligingsgroepen voor meer informatie over verkeer filteren van verkeer via de netwerkbeveiligingsgroep voor virtuele netwerken.

    • Configureer de firewallregels van de bronserver om het IP-adres van de replicaserver toe te staan.

  3. Volg de juiste stappen op basis van of u bin-logpositie of GTID-gebaseerde replicatie van inkomende gegevens wilt gebruiken.

    Controleer of binaire logboekregistratie is ingeschakeld voor de bron door de volgende opdracht uit te voeren:

    SHOW VARIABLES LIKE 'log_bin';
    

    Als de variabele log_bin wordt geretourneerd met de waarde 'AAN', wordt binaire logboekregistratie ingeschakeld op uw server.

    Als log_bin de waarde 'UIT' wordt geretourneerd en uw bronserver on-premises of op virtuele machines wordt uitgevoerd waar u toegang hebt tot het configuratiebestand (my.cnf), kunt u de volgende stappen uitvoeren:

    1. Zoek uw MySQL-configuratiebestand (my.cnf) op de bronserver. Bijvoorbeeld: /etc/my.cnf

    2. Open het configuratiebestand om het te bewerken en zoek de sectie mysqld in het bestand.

    3. Voeg in de sectie mysqld de volgende regel toe:

      log-bin=mysql-bin.log
      
    4. Start de MySQL-service opnieuw op de bronserver (of start opnieuw) om de wijzigingen van kracht te laten worden.

    5. Nadat de server opnieuw is opgestart, controleert u of binaire logboekregistratie is ingeschakeld door dezelfde query uit te voeren als voorheen:

      SHOW VARIABLES LIKE 'log_bin';
      
  4. Configureer de bronserverinstellingen.

    Replicatie van gegevens vereist dat de parameter lower_case_table_names consistent is tussen de bron- en replicaservers. Deze parameter is standaard 1 in azure Database for MySQL flexibele server.

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

    Maak een gebruikersaccount op de bronserver die is geconfigureerd met replicatiebevoegdheden. Dit kan worden gedaan via SQL-opdrachten of een hulpprogramma zoals MySQL Workbench. Overweeg of u van plan bent om te repliceren met SSL, omdat dit moet worden opgegeven bij het maken van de gebruiker. Raadpleeg de MySQL-documentatie voor meer informatie over het toevoegen van gebruikersaccounts op uw bronserver.

    In de volgende opdrachten heeft de nieuwe replicatierol die is gemaakt toegang tot de bron vanaf elke computer, niet alleen de computer die als host fungeert voor de bron zelf. Dit wordt gedaan door 'syncuser@'%' op te geven in de opdracht gebruiker maken. Zie de MySQL-documentatie voor meer informatie over het opgeven van accountnamen.

    Replicatie met SSL

    Als u SSL wilt vereisen voor alle gebruikersverbindingen, gebruikt u de volgende opdracht 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, gebruikt u de volgende opdracht om een gebruiker te maken:

    CREATE USER 'syncuser'@'%' IDENTIFIED BY 'yourpassword';
    GRANT REPLICATION SLAVE ON *.* TO ' syncuser'@'%';
    
  6. Stel de bronserver in op de modus Alleen-lezen.

    Voordat u de database gaat dumpen, moet de server in de modus Alleen-lezen worden geplaatst. In de modus Alleen-lezen kan de bron geen schrijftransacties verwerken. Evalueer de impact op uw bedrijf en plan zo nodig het alleen-lezenvenster in een daltijd.

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

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

    show master status;
    

    De resultaten moeten er ongeveer als volgt uitzien. Noteer de binaire bestandsnaam voor gebruik in latere stappen.

    Resultaten van modelstatus


De bronserver dumpen en herstellen

  1. Bepaal welke databases en tabellen u wilt repliceren naar een flexibele Azure Database for MySQL-server en voer de dump uit vanaf de bronserver.

    U kunt mysqldump gebruiken om databases van uw primaire server te dumpen. Raadpleeg Dump & Restore voor meer informatie. Het is niet nodig om de MySQL-bibliotheek en testbibliotheek te dumpen.

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

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

    SET GLOBAL read_only = OFF;
    UNLOCK TABLES;
    

    Notitie

    Voordat de server wordt teruggezet naar de lees-/schrijfmodus, kunt u de GTID-informatie ophalen met behulp van globale variabele GTID_EXECUTED. Dit wordt in de latere fase gebruikt om GTID in te stellen op de replicaserver.

  3. Dumpbestand herstellen naar een nieuwe server.

    Herstel het dumpbestand naar de server die is gemaakt in Azure Database for MySQL Flexibele server. Raadpleeg Dump & Restore voor het herstellen van een dumpbestand naar een MySQL-server. Als het dumpbestand groot is, uploadt u het naar een virtuele machine in Azure binnen dezelfde regio als uw replicaserver. Herstel deze vanaf de virtuele machine naar het exemplaar van de flexibele Azure Database for MySQL-server.

Notitie

Als u wilt voorkomen dat de database wordt ingesteld op alleen-lezen wanneer u dumpt en herstelt, kunt u mydumper/myloader gebruiken.

GTID instellen in replicaserver

  1. Sla de stap over als u replicatie op basis van bin-logposities gebruikt

  2. GTID-informatie uit het dumpbestand dat afkomstig is van de bron is vereist om de GTID-geschiedenis van de doelserver (replica) opnieuw in te stellen.

  3. Gebruik deze GTID-informatie uit de bron om GTID reset uit te voeren op de replicaserver met behulp van de volgende CLI-opdracht:

    az mysql flexible-server gtid reset --resource-group  <resource group> --server-name <replica server name> --gtid-set <gtid set from the source server> --subscription <subscription id>
    

Raadpleeg GTID Reset voor meer informatie.

Notitie

HET opnieuw instellen van GTID kan niet worden uitgevoerd op een server met georedundantieback-up. Schakel georedundantie uit om GTID opnieuw in te stellen op de server. U kunt de optie Georedundantie opnieuw inschakelen nadat GTID opnieuw is ingesteld. De actie GTID reset maakt alle beschikbare back-ups ongeldig en daarom kan het een dag duren voordat geo-herstel op de server kan worden uitgevoerd nadat geo-redundantie opnieuw is ingeschakeld

  1. Stel de bronserver in.

    Alle replicatiefuncties voor gegevens worden uitgevoerd door opgeslagen procedures. U vindt alle procedures in opgeslagen procedures voor inkomende replicatie. De opgeslagen procedures kunnen worden uitgevoerd in de MySQL-shell of MySQL Workbench.

    Als u twee servers wilt koppelen en replicatie wilt starten, meldt u zich aan bij de doelreplicaserver in de Azure Database for MySQL-service en stelt u het externe exemplaar in als de bronserver. Dit wordt gedaan met behulp van de mysql.az_replication_change_master of mysql.az_replication_change_master_with_gtid opgeslagen procedure op de Azure Database for MySQL-server.

    CALL mysql.az_replication_change_master('<master_host>', '<master_user>', '<master_password>', <master_port>, '<master_log_file>', <master_log_pos>, '<master_ssl_ca>');
    
    CALL mysql.az_replication_change_master_with_gtid('<master_host>', '<master_user>', '<master_password>', <master_port>,'<master_ssl_ca>');
    
    • master_host: hostnaam van de bronserver
    • master_user: gebruikersnaam voor de bronserver
    • master_password: wachtwoord voor de bronserver
    • master_port: poortnummer waarop de bronserver luistert naar verbindingen. (3306 is de standaardpoort waarop MySQL luistert)
    • master_log_file: de naam van het binaire logboekbestand wordt niet uitgevoerd show master status
    • master_log_pos: binaire logboekpositie wordt niet uitgevoerd show master status
    • master_ssl_ca: context van CA-certificaat. Als u geen SSL gebruikt, geeft u een lege tekenreeks door.

    Het is raadzaam om deze parameter door te geven als een variabele. Ga naar de volgende voorbeelden voor meer informatie.

    Notitie

    • Als de bronserver wordt gehost op een Virtuele Azure-machine, stelt u 'Toegang tot Azure-services toestaan' in op AAN, zodat de bron- en replicaservers met elkaar kunnen communiceren. Deze instelling kan worden gewijzigd vanuit de beveiligingsopties voor verbindingen. Zie Firewallregels beheren met behulp van de portal voor meer informatie.
    • Als u mydumper/myloader hebt gebruikt om de database te dumpen, kunt u de master_log_file en master_log_pos ophalen uit het bestand /backup/metadata .

    Voorbeelden

    Replicatie met SSL

    De variabele @cert wordt gemaakt door de volgende MySQL-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 flexibele Azure Database for MySQL-server. Deze opgeslagen procedure wordt uitgevoerd op de replica.

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

    Replicatie zonder SSL

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

    CALL mysql.az_replication_change_master('master.companya.com', 'syncuser', 'P@ssword!', 3306, 'mysql-bin.000002', 120, '');
    
    CALL mysql.az_replication_change_master_with_gtid('master.companya.com', 'syncuser', 'P@ssword!', 3306, '');
    
  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 u de juiste status van replicatie wilt weten, raadpleegt u de metrische replicatiegegevens : Replica IO-status en REPLICA SQL-status onder de bewakingspagina.

    Als de Seconds_Behind_Master '0' is, werkt de replicatie goed. Seconds_Behind_Master geeft aan hoe laat de replica is. Als de waarde niet '0' is, betekent dit dat de replica updates verwerkt.

Andere nuttige opgeslagen procedures voor replicatiebewerkingen in gegevens

Replicatie stoppen

Gebruik de volgende opgeslagen procedure om de replicatie tussen de bron- en replicaserver te stoppen:

CALL mysql.az_replication_stop;

Replicatierelatie verwijderen

Als u de relatie tussen de bron- en replicaserver wilt verwijderen, gebruikt u de volgende opgeslagen procedure:

CALL mysql.az_replication_remove_master;

Replicatiefout overslaan

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

CALL mysql.az_replication_skip_counter;
SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos][LIMIT [offset,] row_count]

Binaire logboekresultaten weergeven

Volgende stappen

  • Meer informatie over replicatie van gegevens voor flexibele Azure Database for MySQL-server.