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

  1. 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.

  2. 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.

  3. 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.

  1. Granska de primära serverkraven innan du fortsätter.

  2. 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.

    1. Logga in på Azure Database for MariaDB med ett verktyg som MySQL-kommandoraden.

    2. 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 |
       +-----------------------------------------------------------+
      
    3. Avsluta från MySQL-kommandoraden.

    4. 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.
      
    5. 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.

  3. 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_bin returnerar värdet ON är binär loggning aktiverat på servern.

    Om log_bin returnerar värdet OFF redigerar du filen my.cnf så att log_bin=ON aktiverar binär loggning. Starta om servern för att ändringen ska börja gälla.

  4. Konfigurera källserverinställningar.

    Datareplikering kräver att lower_case_table_names parametern är konsekvent mellan käll- och replikservrarna. Parametern lower_case_table_names anges till som standard i 1 Azure Database for MariaDB.

    SET GLOBAL lower_case_table_names = 1;
    
  5. 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.

    Användare och behörigheter

    Ange ett användarnamn i fältet Inloggningsnamn.

    Synkronisera användare

    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.

    Replikeringsreplikeringsreplik

  6. 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;
    
  7. 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 status

    show master status;
    

    Resultatet bör likna följande tabell:

    Resultat av huvudstatus

    Anteckna det binära filnamnet eftersom det kommer att användas i senare steg.

  8. Hämta GTID-positionen (valfritt, krävs för replikering med GTID).

    Kör funktionen för BINLOG_GTID_POS att 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

  1. 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).

  2. 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;
    
  3. Å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.

  1. 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_master den eller lagrade proceduren på mysql.az_replication_change_master_with_gtid 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: 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 @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ä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, '');
      
  2. Starta replikeringen.

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

    CALL mysql.az_replication_start;
    
  3. Kontrollera replikeringsstatus.

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

    show slave status;
    

    Om Slave_IO_Running Slave_SQL_Running och är i tillståndet , och värdet yes för är , fungerar Seconds_Behind_Master 0 replikeringen. Seconds_Behind_Master anger hur försenad repliken är. Om värdet inte är 0 bearbetar repliken uppdateringar.

  4. 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_info variabler och för replikering utan sync_relay_log_info GTID-scenariot.

    Kontrollera replikserverns och variablerna för att se sync_master_info sync_relay_log_info till att datareplikeringen är stabil och ange variablerna till 1 .

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.