Konfigurera datareplikering i Azure Database for MariaDB
Viktigt!
Azure Database for MariaDB är på väg att dras tillbaka. Vi rekommenderar starkt att du migrerar till Azure Database for MySQL. Mer information om hur du migrerar till Azure Database for MySQL finns i Vad händer med 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.
För att skapa en replik i Azure Database for MariaDB-tjänsten synkroniserar Data-in Replication data från en mariaDB-källserver lokalt, på virtuella datorer eller i molndatabastjänster. Datareplikering baseras på positionsbaserad replikering med en binär loggfil (binlog) som är inbyggd i MariaDB. Mer information om binlogreplikering finns i översikten över binlogreplikering.
Granska begränsningarna och kraven för datareplikering innan du utför stegen i den här artikeln.
Kommentar
Om källservern är version 10.2 eller senare rekommenderar vi att du konfigurerar datareplikering med hjälp av globalt transaktions-ID.
Kommentar
Den här artikeln innehåller referenser till termen slav, 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 replik
Skapa en ny Azure Database for MariaDB-server (till exempel replica.mariadb.database.azure.com). Servern är replikservern i Data-in Replication.
Mer information om hur du skapar en server finns i Skapa en Azure Database for MariaDB-server med hjälp av Azure-portalen.
Viktigt!
Du måste skapa Azure Database for MariaDB-servern på prisnivåerna Generell användning eller Minnesoptimerad.
Skapa identiska användarkonton och motsvarande behörigheter.
Användarkonton replikeras inte från källservern till replikservern. För att ge användaren åtkomst till replikservern måste du manuellt skapa alla konton och motsvarande behörigheter på den nyligen skapade 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 lokalt, på en virtuell dator eller i en molndatabastjänst för datareplikering. MariaDB-servern är källan i Data-in Replication.
Granska de primära serverkraven innan du fortsätter.
Kontrollera 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änglig eller har ett fullständigt kvalificerat domännamn (FQDN).
Testa anslutningen till källservern genom att försöka ansluta från ett verktyg, till exempel MySQL-kommandoraden som finns på en annan dator eller från Azure Cloud Shell som är tillgängligt i Azure-portalen.
Om din organisation har strikta säkerhetsprinciper och inte tillåter att alla IP-adresser på källservern aktiverar kommunikation från Azure till källservern kan du 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.
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>
Till 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 den innehåller det föregående stegets utdata-IP-adress på port 3306.
Kommentar
Den här IP-adressen kan ändras på grund av underhåll/distributionsåtgärder. Den här anslutningsmetoden är endast avsedd 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 filen anger du följande kommando:
SHOW VARIABLES LIKE 'log_bin';
Om variabeln
log_bin
returnerar värdetON
aktiveras binär loggning på servern.Om
log_bin
returnerar värdetOFF
redigerar du filen my.cnf så attlog_bin=ON
binär loggning aktiveras. Starta om servern för att ändringen ska börja gälla.Konfigurera källserverinställningar.
Datareplikering kräver att parametern
lower_case_table_names
är konsekvent mellan käll- och replikservrarna. Parameternlower_case_table_names
är inställd1
på som standard i Azure 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 replikeringsprivilegier. Du kan skapa ett konto med hjälp av 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.
Genom att använda följande kommandon kan den nya replikeringsrollen komma åt källan från valfri dator, 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-dokumentation 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 privilegier. Välj sedan Lägg till konto.
Ange ett användarnamn i fältet Inloggningsnamn .
Välj panelen Administrativa roller och välj sedan Replikeringsslav i listan med globala privilegier. Välj Använd för att skapa replikeringsrollen.
Ställ in källservern i skrivskyddat läge.
Innan du dumpar en databas måste servern placeras i skrivskyddat läge. I skrivskyddat läge kan källan inte bearbeta några skrivtransaktioner. För att undvika påverkan på verksamheten schemalägger du det skrivskyddade fönstret under en låg belastning.
FLUSH TABLES WITH READ LOCK; SET GLOBAL read_only = ON;
Hämta det aktuella binära loggfilens namn och förskjutning.
Kör kommandot
show master status
för att fastställa det aktuella binära loggfilens namn och förskjutning.show master status;
Resultatet bör likna följande tabell:
Observera namnet på den binära filen eftersom det kommer att användas i senare steg.
Hämta GTID-positionen (valfritt, som behövs för replikering med GTID).
Kör funktionen
BINLOG_GTID_POS
för att hämta GTID-positionen för motsvarande binlogfilnamn och förskjutning.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. Det är inte nödvändigt att dumpa MySQL-biblioteket och testbiblioteket.
Mer information finns i Dumpa och återställa.
Ställ in källservern i läs-/skrivläge.
När databasen har dumpats ändrar du tillbaka MariaDB-källservern till läs- och skrivläge.
SET GLOBAL read_only = OFF; UNLOCK TABLES;
Återställ dumpfilen till den nya servern.
Återställ dumpfilen till servern som skapades i Azure Database for MariaDB-tjänsten. Se Dumpa och återställa för att återställa en dumpfil till en MariaDB-server.
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-servern från den virtuella datorn.
Länka käll- och replikservrarna för att starta datareplikering
Ange källservern.
Alla datareplikeringsfunktioner utförs av lagrade procedurer. Du hittar alla procedurer i Lagrade procedurer för datareplikering. 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 den
mysql.az_replication_change_master
ellermysql.az_replication_change_master_with_gtid
den lagrade proceduren på Azure 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: namn på binär loggfil från körning
show master status
- master_log_pos: binär loggposition från körning
show master status
- master_gtid_pos: GTID-position från körning
select BINLOG_GTID_POS('<binlog file name>', <binlog offset>);
- master_ssl_ca: CA-certifikatets kontext. Om du inte använder SSL skickar du in en tom sträng.*
*Vi rekommenderar att du skickar in parametern master_ssl_ca som en variabel. Mer information finns i följande exempel.
Exempel
Replikering med SSL
Skapa variabeln
@cert
genom 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änen 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änen 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_start
lagrade proceduren för att starta replikeringen.CALL mysql.az_replication_start;
Kontrollera replikeringsstatus.
show slave status
Anropa kommandot på replikservern för att visa replikeringsstatusen.show slave status;
Om
Slave_IO_Running
ochSlave_SQL_Running
är i tillståndetyes
, och värdetSeconds_Behind_Master
för är0
, fungerar replikeringen.Seconds_Behind_Master
anger hur sent repliken är. Om värdet inte0
är bearbetar repliken uppdateringar.Uppdatera motsvarande servervariabler för att göra datareplikeringen 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_info
ochsync_relay_log_info
variabler för replikering utan GTID-scenariot.Kontrollera replikserverns
sync_master_info
ochsync_relay_log_info
variablerna för att kontrollera 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.