Konfigurera Datareplikering i Azure Database for MariaDB
Den här artikeln beskriver hur du konfigurerar Datareplikering i Azure Database for MariaDB genom att konfigurera käll- och replikservrarna. Den här artikeln förutsätter att du har viss tidigare erfarenhet av MariaDB-servrar och databaser.
Om du vill skapa en replik i Azure Database for MariaDB-Datareplikering synkroniserar du data från en MariaDB-källserver lokalt, på virtuella datorer (VM) eller i molndatabastjänster. Datareplikering baseras på positionsbaserad replikering med en binär loggfil (binlog) som är inbyggd i MariaDB. Mer information om binlog-replikering finns i översikten över binlog replication.
Granska begränsningarna och kraven för datareplikering innan du utför stegen i den här artikeln.
Anteckning
Om källservern är version 10.2 eller senare, rekommenderar vi att du Datareplikering med hjälp av globalt transaktions-ID.
Anteckning
Den här artikeln innehåller referenser till termen slave, en term som Microsoft inte längre använder. När termen tas bort från programvaran tar vi bort den från den här artikeln.
Skapa en MariaDB-server som ska användas som en replik
Skapa en ny Azure Database for MariaDB server (till exempel replica.mariadb.database.azure.com). Servern är replikservern i Datareplikering.
Mer information om hur du skapar servrar finns i Skapa Azure Database for MariaDB server med hjälp av Azure Portal.
Viktigt
Du måste skapa Azure Database for MariaDB-servern på Generell användning eller minnesoptimerade prisnivåer.
Skapa identiska användarkonton och motsvarande behörigheter.
Användarkonton replikeras inte från källservern till replikservern. Om du vill ge användaråtkomst till replikservern måste du manuellt skapa alla konton och motsvarande behörigheter på den nya Azure Database for MariaDB servern.
Lägg till källserverns IP-adress i replikens brandväggsregler.
Uppdatera brandväggsregler med hjälp av Azure-portalen eller Azure CLI.
Konfigurera källservern
Följande steg förbereder och konfigurerar MariaDB-servern som finns lokalt, på en virtuell dator eller i en molndatabastjänst för Datareplikering. MariaDB-servern är källan i Datareplikering.
Granska de primära serverkraven innan du fortsätter.
Se till att källservern tillåter både inkommande och utgående trafik på port 3306 och att källservern har en offentlig IP-adress, att DNS är offentligt tillgängligt eller har ett fullständigt kvalificerat domännamn (FQDN).
Testa anslutningen till källservern genom att försöka ansluta från ett verktyg som MySQL-kommandoraden som finns på en annan dator eller från Azure Cloud Shell som finns i Azure Portal.
Om din organisation har strikta säkerhetsprinciper och inte tillåter alla IP-adresser på källservern att aktivera kommunikation från Azure till källservern kan du eventuellt använda kommandot nedan för att fastställa IP-adressen för din Azure Database for MariaDB server.
Logga in på Azure Database for MariaDB med ett verktyg som MySQL-kommandoraden.
Kör frågan nedan.
mysql> SELECT @@global.redirect_server_host;Nedan visas några exempel på utdata:
+-----------------------------------------------------------+ | @@global.redirect_server_host | +-----------------------------------------------------------+ | e299ae56f000.tr1830.westus1-a.worker.database.windows.net | +-----------------------------------------------------------+Avsluta från MySQL-kommandoraden.
Kör nedanstående i ping-verktyget för att hämta IP-adressen.
ping <output of step 2b>Exempel:
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.Konfigurera källserverns brandväggsregler så att de inkluderar föregående stegs utgående IP-adress på port 3306.
Anteckning
Den här IP-adressen kan ändras på grund av underhåll/distributionsåtgärder. Den här anslutningsmetoden är endast för kunder som inte har råd att tillåta alla IP-adresser på 3306-porten.
Aktivera binär loggning.
Om du vill se om binär loggning är aktiverat på den primära anger du följande kommando:
SHOW VARIABLES LIKE 'log_bin';Om variabeln
log_binreturnerar värdetONär binär loggning aktiverat på servern.Om
log_binreturnerar värdetOFFredigerar du filen my.cnf så attlog_bin=ONaktiverar binär loggning. Starta om servern för att ändringen ska börja gälla.Konfigurera källserverinställningar.
Datareplikering kräver att
lower_case_table_namesparametern är konsekvent mellan käll- och replikservrarna. Parameternlower_case_table_namesanges till som standard i1Azure Database for MariaDB.SET GLOBAL lower_case_table_names = 1;Skapa en ny replikeringsroll och konfigurera behörigheter.
Skapa ett användarkonto på källservern som har konfigurerats med replikeringsbehörighet. Du kan skapa ett konto med hjälp SQL kommandon eller MySQL Workbench. Om du planerar att replikera med SSL måste du ange detta när du skapar användarkontot.
Information om hur du lägger till användarkonton på källservern finns i MariaDB-dokumentationen.
Med hjälp av följande kommandon kan den nya replikeringsrollen komma åt källan från vilken dator som helst, inte bara den dator som är värd för själva källan. För den här åtkomsten anger du syncuser @ '%' i kommandot för att skapa en användare.
Mer information om MariaDB-dokumentationen finns i ange kontonamn.
SQL kommando
Replikering med SSL
Om du vill kräva SSL för alla användaranslutningar anger du följande kommando för att skapa en användare:
CREATE USER 'syncuser'@'%' IDENTIFIED BY 'yourpassword'; GRANT REPLICATION SLAVE ON *.* TO ' syncuser'@'%' REQUIRE SSL;Replikering utan SSL
Om SSL inte krävs för alla anslutningar anger du följande kommando för att skapa en användare:
CREATE USER 'syncuser'@'%' IDENTIFIED BY 'yourpassword'; GRANT REPLICATION SLAVE ON *.* TO ' syncuser'@'%';
MySQL Workbench
Om du vill skapa replikeringsrollen i MySQL Workbench går du till fönstret Hantering och väljer Användare och behörigheter. Välj sedan Lägg till konto.

Ange ett användarnamn i fältet Inloggningsnamn.

Välj panelen Administrativa roller och i listan över globala privilegier väljer du replikeringsreplikering, underreplikering. Välj Tillämpa för att skapa replikeringsrollen.

Ställ in källservern på skrivskyddade läge.
Innan du dumpar en databas måste servern placeras i skrivskyddade läge. I skrivskyddsläge kan källan inte bearbeta några skrivtransaktioner. Du kan undvika påverkan på verksamheten genom att schemalägga det skrivskyddade fönstret under tider med låg belastning.
FLUSH TABLES WITH READ LOCK; SET GLOBAL read_only = ON;Hämta det aktuella binära loggfilsnamnet och förskjutningen.
Kör kommandot för att fastställa det aktuella namnet och förskjutningen av binärloggfilen.
show master statusshow master status;Resultatet bör likna följande tabell:

Anteckna det binära filnamnet eftersom det kommer att användas i senare steg.
Hämta GTID-positionen (valfritt, krävs för replikering med GTID).
Kör funktionen för
BINLOG_GTID_POSatt hämta GTID-positionen för motsvarande binlog-filnamn och offset.select BINLOG_GTID_POS('<binlog file name>', <binlog offset>);
Dumpa och återställa källservern
Dumpa alla databaser från källservern.
Använd mysqldump för att dumpa alla databaser från källservern. Du behöver inte dumpa MySQL-biblioteket och testbiblioteket.
Mer information finns i Dump and restore (Dumpa och återställa).
Ställ in källservern på läs-/skrivläge.
När databasen har matats in ändrar du mariaDB-källservern tillbaka till läs-/skrivläge.
SET GLOBAL read_only = OFF; UNLOCK TABLES;Återställ dumpfilen till den nya servern.
Återställ dumpfilen till den server som skapades i Azure Database for MariaDB tjänsten. Information om hur & en dumpfil till en MariaDB-server finns i Dump & Restore (Återställa dumpar).
Om dumpfilen är stor laddar du upp den till en virtuell dator i Azure inom samma region som replikservern. Återställ den till Azure Database for MariaDB från den virtuella datorn.
Länka käll- och replikservrarna för att Datareplikering
Ange källservern.
Alla Datareplikering-funktioner utförs med lagrade procedurer. Du hittar alla procedurer på Datareplikering Lagrade procedurer. Lagrade procedurer kan köras i MySQL-gränssnittet eller MySQL Workbench.
Om du vill länka två servrar och starta replikeringen loggar du in på målreplikservern i Azure DB for MariaDB tjänsten. Ange sedan den externa instansen som källserver med hjälp av
mysql.az_replication_change_masterden eller lagrade proceduren påmysql.az_replication_change_master_with_gtidAzure DB for MariaDB servern.CALL mysql.az_replication_change_master('<master_host>', '<master_user>', '<master_password>', 3306, '<master_log_file>', <master_log_pos>, '<master_ssl_ca>');eller
CALL mysql.az_replication_change_master_with_gtid('<master_host>', '<master_user>', '<master_password>', 3306, '<master_gtid_pos>', '<master_ssl_ca>');- master_host: källserverns värdnamn
- master_user: användarnamn för källservern
- master_password: lösenord för källservern
- master_log_file: namnet på den binära loggfilen körs inte
show master status - master_log_pos: position för binär logg från att köras
show master status - master_gtid_pos: GTID-position från att köras
select BINLOG_GTID_POS('<binlog file name>', <binlog offset>); - master_ssl_ca: CA-certifikatets kontext. Om du inte använder SSL skickar du en tom sträng.*
*Vi rekommenderar att du master_ssl_ca parametern som en variabel. Mer information finns i följande exempel.
Exempel
Replikering med SSL
Skapa variabeln
@certgenom att köra följande kommandon:SET @cert = '-----BEGIN CERTIFICATE----- PLACE YOUR PUBLIC KEY CERTIFICATE\'S CONTEXT HERE -----END CERTIFICATE-----'Replikering med SSL konfigureras mellan en källserver som finns i domänservern companya.com och en replikserver som finns i Azure Database for MariaDB. Den här lagrade proceduren körs på repliken.
CALL mysql.az_replication_change_master('master.companya.com', 'syncuser', 'P@ssword!', 3306, 'mariadb-bin.000016', 475, @cert);Replikering utan SSL
Replikering utan SSL konfigureras mellan en källserver som finns i domänservern companya.com och en replikserver som finns i Azure Database for MariaDB. Den här lagrade proceduren körs på repliken.
CALL mysql.az_replication_change_master('master.companya.com', 'syncuser', 'P@ssword!', 3306, 'mariadb-bin.000016', 475, '');
Starta replikeringen.
Anropa den
mysql.az_replication_startlagrade proceduren för att starta replikeringen.CALL mysql.az_replication_start;Kontrollera replikeringsstatus.
Anropa kommandot
show slave statuspå replikservern för att visa replikeringsstatusen.show slave status;Om
Slave_IO_RunningSlave_SQL_Runningoch är i tillståndet , och värdetyesför är , fungerarSeconds_Behind_Master0replikeringen.Seconds_Behind_Masteranger hur försenad repliken är. Om värdet inte är0bearbetar repliken uppdateringar.Uppdatera motsvarande servervariabler för att göra datareplikering säkrare (krävs endast för replikering utan GTID).
På grund av en intern replikeringsbegränsning i MariaDB måste du ange
sync_master_infovariabler och för replikering utansync_relay_log_infoGTID-scenariot.Kontrollera replikserverns och variablerna för att se
sync_master_infosync_relay_log_infotill att datareplikeringen är stabil och ange variablerna till1.
Andra lagrade procedurer
Stoppa replikering
Om du vill stoppa replikeringen mellan käll- och replikservern använder du följande lagrade procedur:
CALL mysql.az_replication_stop;
Ta bort replikeringsrelationen
Om du vill ta bort relationen mellan käll- och replikservern använder du följande lagrade procedur:
CALL mysql.az_replication_remove_master;
Hoppa över replikeringsfelet
Om du vill hoppa över ett replikeringsfel och tillåta replikering använder du följande lagrade procedur:
CALL mysql.az_replication_skip_counter;
Nästa steg
Läs mer om Datareplikering för Azure Database for MariaDB.