Så här konfigurerar du datareplikering för Azure Database for MySQL – flexibel server

[GÄLLER FÖR: Azure Database for MySQL – flexibel server

Den här artikeln beskriver hur du konfigurerar datareplikering i Azure Database for MySQL – flexibel server genom att konfigurera käll- och replikservrarna. Den här artikeln förutsätter att du har viss tidigare erfarenhet av MySQL-servrar och -databaser.

Anteckning

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.

För att skapa en replik i Azure Database for MySQL – flexibel tjänst synkroniserar datareplikering data från en mySQL-källserver lokalt, på virtuella datorer (VM) eller i molndatabastjänster. Datareplikering baseras på position baserad på binär loggfil (binlog). Mer information om binlogreplikering finns i översikten över Replikering av MySQL-binlog.

Granska begränsningarna och kraven för datareplikering innan du utför stegen i den här artikeln.

Skapa en Azure Database for MySQL – flexibel serverinstans som ska användas som replik

  1. Skapa en ny instans av Azure Database for MySQL – flexibel server (till exempel replica.mysql.database.azure.com). Se Skapa en Azure Database for MySQL – flexibel server med hjälp av Azure-portalen för att skapa servern. Den här servern är replikservern för datareplikering.

  2. Skapa samma användarkonton och motsvarande behörigheter.

    Användarkonton replikeras inte från källservern till replikservern. Om du planerar att ge användare åtkomst till replikservern måste du skapa alla konton och motsvarande behörigheter manuellt på den här nyligen skapade Azure Database for MySQL – flexibel server.

Konfigurera MySQL-källservern

Följande steg förbereder och konfigurerar MySQL-servern som finns lokalt, på en virtuell dator eller i en databastjänst som hanteras av andra molnleverantörer för datareplikering. Den här servern är "källan" för datareplikering.

  1. Granska källserverkraven innan du fortsätter.

  2. Nätverkskrav

    • Kontrollera att källservern tillåter både inkommande och utgående trafik på port 3306 och att den har en offentlig IP-adress, att DNS är offentligt tillgänglig eller att den har ett fullständigt kvalificerat domännamn (FQDN).

    • Om privat åtkomst används kontrollerar du att du har en anslutning mellan källservern och det virtuella nätverk där replikservern finns.

    • Se till att vi tillhandahåller plats-till-plats-anslutning till dina lokala källservrar med hjälp av ExpressRoute eller VPN. Mer information om hur du skapar ett virtuellt nätverk finns i dokumentationen om virtuella nätverk, särskilt snabbstartsartiklarna med stegvis information.

    • Om privat åtkomst används i replikservern och källan är virtuell Azure-dator kontrollerar du att anslutningen mellan virtuella nätverk har upprättats. VNet-Vnet peering stöds. Du kan också använda andra anslutningsmetoder för att kommunicera mellan virtuella nätverk i olika regioner, till exempel VNet-till-VNet-anslutning. Mer information finns i VNet-till-VNet VPN-gateway

    • Se till att reglerna för nätverkssäkerhetsgruppen för det virtuella nätverket inte blockerar den utgående porten 3306 (även inkommande om MySQL körs på en virtuell Azure-dator). Mer information om NSG-trafikfiltrering för virtuella nätverk finns i artikeln Filtrera nätverkstrafik med nätverkssäkerhetsgrupper.

    • Konfigurera källserverns brandväggsregler så att replikserverns IP-adress tillåts.

  3. Aktivera binär loggning.

    Kontrollera om binär loggning har aktiverats på källan genom att köra följande kommando:

    SHOW VARIABLES LIKE 'log_bin';
    

    Om variabeln log_bin returneras med värdet "ON" aktiveras binär loggning på servern.

    Om log_bin returneras med värdet "OFF" och källservern körs lokalt eller på virtuella datorer där du kan komma åt konfigurationsfilen (my.cnf) kan du följa stegen nedan:

    1. Leta upp mySQL-konfigurationsfilen (my.cnf) på källservern. Exempel: /etc/my.cnf

    2. Öppna konfigurationsfilen för att redigera den och leta upp avsnittet mysqld i filen.

    3. I avsnittet mysqld lägger du till följande rad:

      log-bin=mysql-bin.log
      
    4. Starta om MySQL-tjänsten på källservern (eller Starta om) för att ändringarna ska börja gälla.

    5. När servern har startats om kontrollerar du att binär loggning är aktiverat genom att köra samma fråga som tidigare:

      SHOW VARIABLES LIKE 'log_bin';
      
  4. Konfigurera källserverinställningarna.

    Datareplikering kräver att parametern lower_case_table_names är konsekvent mellan käll- och replikservrarna. Den här parametern är 1 som standard i Azure Database for MySQL – flexibel server.

    SET GLOBAL lower_case_table_names = 1;
    
  5. Skapa en ny replikeringsroll och konfigurera behörighet.

    Skapa ett användarkonto på källservern som har konfigurerats med replikeringsbehörighet. Detta kan göras via SQL-kommandon eller ett verktyg som MySQL Workbench. Överväg om du planerar att replikera med SSL, eftersom detta måste anges när du skapar användaren. Information om hur du lägger till användarkonton på källservern finns i MySQL-dokumentationen.

    I följande kommandon kan den nya replikeringsrollen som skapas komma åt källan från valfri dator, inte bara den dator som är värd för själva källan. Detta görs genom att ange "syncuser@'%'" i kommandot skapa användare. Mer information om hur du anger kontonamn finns i MySQL-dokumentationen.

    SQL-kommando

    Replikering med SSL

    Om du vill kräva SSL för alla användaranslutningar använder 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 använder 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 öppnar du panelen Användare och privilegier från panelen Hantering och väljer sedan Lägg till konto.

    Users and Privileges

    Ange användarnamnet i fältet Inloggningsnamn .

    Sync user

    Välj panelen Administrativa roller och välj sedan Replikeringsslav i listan över globala privilegier. Välj sedan Använd för att skapa replikeringsrollen.

    Replication Slave

  6. Ställ in källservern på skrivskyddat läge.

    Innan du börjar dumpa databasen måste servern placeras i skrivskyddat läge. I skrivskyddat läge kan källan inte bearbeta några skrivtransaktioner. Utvärdera påverkan på verksamheten och schemalägg det skrivskyddade fönstret under låg belastning om det behövs.

    FLUSH TABLES WITH READ LOCK;
    SET GLOBAL read_only = ON;
    
  7. Hämta binär loggfilsnamn och förskjutning.

    show master status Kör kommandot för att fastställa namnet på den aktuella binära loggfilen och förskjutningen.

     show master status;
    

    Resultatet bör se ut ungefär så här. Anteckna namnet på den binära filen för användning i senare steg.

    Master Status Results

Dumpa och återställa källservern

  1. Ta reda på vilka databaser och tabeller du vill replikera till Azure Database for MySQL – flexibel server och utför dumpen från källservern.

    Du kan använda mysqldump för att dumpa databaser från din primära server. Mer information finns i Dumpningsåterställning&. Det är onödigt att dumpa MySQL-biblioteket och testbiblioteket.

  2. Ställ in källservern på läs-/skrivläge.

    När databasen har dumpats ändrar du tillbaka MySQL-källservern till läs- och skrivläge.

    SET GLOBAL read_only = OFF;
    UNLOCK TABLES;
    
  3. Återställ dumpfilen till den nya servern.

    Återställ dumpfilen till den server som skapades i tjänsten Azure Database for MySQL – flexibel server. Information om hur du återställer en dumpfil till en MySQL-server finns i Dumpa & återställning . 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 MySQL – flexibel server från den virtuella datorn.

Anteckning

  • Om du vill undvika att ställa in databasen på skrivskyddad när du dumpar och återställer kan du använda mydumper/myloader.
  1. 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 Tjänsten Azure DB for MySQL och anger den externa instansen som källserver. Detta görs med hjälp av den mysql.az_replication_change_master lagrade proceduren på Azure DB for MySQL-servern.

    CALL mysql.az_replication_change_master('<master_host>', '<master_user>', '<master_password>', <master_port>, '<master_log_file>', <master_log_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_port: portnummer på vilken källserver som lyssnar efter anslutningar. (3306 är standardporten där MySQL lyssnar)

    • master_log_file: namn på binär loggfil från att köras show master status

    • master_log_pos: binär loggposition från körning show master status

    • master_ssl_ca: CA-certifikatets kontext. Om du inte använder SSL skickar du en tom sträng.

      Vi rekommenderar att du skickar in den här parametern som en variabel. Mer information finns i följande exempel.

    Anteckning

    • Om källservern finns på en virtuell Azure-dator anger du "Tillåt åtkomst till Azure-tjänster" till "PÅ" så att käll- och replikservrarna kan kommunicera med varandra. Den här inställningen kan ändras från alternativen för anslutningssäkerhet . Mer information finns i Hantera brandväggsregler med hjälp av portalen.
    • Om du använde mydumper/myloader för att dumpa databasen kan du hämta master_log_file och master_log_pos från filen /backup/metadata .

    Exempel

    Replikering med SSL

    Variabeln @cert skapas genom att köra följande MySQL-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 MySQL – flexibel server. Den här lagrade proceduren körs på repliken.

    CALL mysql.az_replication_change_master('master.companya.com', 'syncuser', 'P@ssword!', 3306, 'mysql-bin.000002', 120, @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 MySQL – flexibel server. Den här lagrade proceduren körs på repliken.

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

    Anropa den mysql.az_replication_start lagrade proceduren för att starta replikeringen.

    CALL mysql.az_replication_start;
    
  3. Kontrollera replikeringsstatus.

    show slave status Anropa kommandot på replikservern för att visa replikeringsstatusen.

    show slave status;
    

    Om tillståndet Slave_IO_Running för och Slave_SQL_Running är "ja" och värdet Seconds_Behind_Master för är "0" fungerar replikeringen bra. Seconds_Behind_Master anger hur sent repliken är. Om värdet inte är "0" innebär det att repliken bearbetar uppdateringar.

Andra användbara lagrade procedurer för datareplikeringsåtgärder

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 replikeringsrelation

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 replikeringsfel

Om du vill hoppa över ett replikeringsfel och tillåta att replikeringen fortsätter använder du följande lagrade procedur:

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

Show binary log results

Nästa steg

  • Läs mer om datareplikering för Azure Database for MySQL – flexibel server.