Konfigurace replikace příchozích dat ve službě Azure Database for MariaDB

Důležité

Azure Database for MariaDB je na cestě vyřazení. Důrazně doporučujeme migrovat do služby Azure Database for MySQL. Další informace o migraci na Azure Database for MySQL najdete v tématu Co se děje se službou Azure Database for MariaDB?.

Tento článek popisuje, jak nastavit replikaci dat ve službě Azure Database for MariaDB konfigurací zdrojových serverů a serverů replik. Tento článek předpokládá, že máte zkušenosti se servery a databázemi MariaDB.

Pokud chcete vytvořit repliku ve službě Azure Database for MariaDB, synchronizuje replikace dat ze zdrojového místního serveru MariaDB, ve virtuálních počítačích nebo v cloudových databázových službách. Replikace vstupních dat je založená na replikaci na základě pozice v souboru binárního protokolu (binlog) nativní pro MariaDB. Další informace o replikaci binlogu najdete v přehledu replikace binlogu.

Před provedením kroků v tomto článku si projděte omezení a požadavky replikace příchozích dat.

Poznámka:

Pokud je zdrojový server verze 10.2 nebo novější, doporučujeme nastavit replikaci příchozích dat pomocí globálního ID transakce.

Poznámka:

Tento článek obsahuje odkazy na termín slave (podřízený) , což je termín, který už Microsoft nepoužívá. Když se termín odebere ze softwaru, odebereme ho z tohoto článku.

Vytvoření serveru MariaDB, který se použije jako replika

  1. Vytvořte nový server Azure Database for MariaDB (například replica.mariadb.database.azure.com). Server je server repliky v replikaci dat.

    Další informace o vytvoření serveru najdete v tématu Vytvoření serveru Azure Database for MariaDB pomocí webu Azure Portal.

    Důležité

    Server Azure Database for MariaDB musíte vytvořit v cenových úrovních Pro obecné účely nebo Optimalizováno pro paměť.

  2. Vytvořte stejné uživatelské účty a odpovídající oprávnění.

    Uživatelské účty se nereplikují ze zdrojového serveru na server repliky. Pokud chcete uživatelům poskytnout přístup k serveru repliky, musíte ručně vytvořit všechny účty a odpovídající oprávnění na nově vytvořeném serveru Azure Database for MariaDB.

  3. Přidejte IP adresu zdrojového serveru do pravidel brány firewall repliky.

    Pomocí webu Azure Portal nebo Azure CLI aktualizujte pravidla brány firewall.

Konfigurace zdrojového serveru

Následující kroky připraví a nakonfigurují server MariaDB hostovaný místně, na virtuálním počítači nebo v cloudové databázové službě pro replikaci dat. Server MariaDB je zdrojem v replikaci dat.

  1. Než budete pokračovat, projděte si požadavky na primární server.

  2. Ujistěte se, že zdrojový server umožňuje příchozí i odchozí provoz na portu 3306 a že zdrojový server má veřejnou IP adresu, DNS je veřejně přístupný nebo má plně kvalifikovaný název domény (FQDN).

    Otestujte připojení ke zdrojovému serveru tak, že se pokusíte připojit z nástroje, jako je příkazový řádek MySQL hostovaný na jiném počítači nebo z Azure Cloud Shellu dostupného na webu Azure Portal.

    Pokud má vaše organizace přísné zásady zabezpečení a nepovolí všem IP adresám na zdrojovém serveru povolit komunikaci z Azure se zdrojovým serverem, můžete k určení IP adresy serveru Azure Database for MariaDB použít následující příkaz.

    1. Přihlaste se ke službě Azure Database for MariaDB pomocí nástroje, jako je příkazový řádek MySQL.

    2. Spusťte následující dotaz.

      SELECT @@global.redirect_server_host;
      

      Níže je uveden ukázkový výstup:

      +-----------------------------------------------------------+
      | @@global.redirect_server_host                             |
      +-----------------------------------------------------------+
      | e299ae56f000.tr1830.westus1-a.worker.database.windows.net |
       +-----------------------------------------------------------+
      
    3. Ukončete příkazový řádek MySQL.

    4. Spuštěním následujícího příkazu v nástroji ping získejte IP adresu.

      ping <output of step 2b>
      

      Příklad:

      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. Nakonfigurujte pravidla brány firewall zdrojového serveru tak, aby zahrnovala výstupní IP adresu předchozího kroku na portu 3306.

    Poznámka:

    Tato IP adresa se může změnit kvůli operacím údržby nebo nasazení. Tato metoda připojení je určená jenom pro zákazníky, kteří si nemohou dovolit povolit všechny IP adresy na portu 3306.

  3. Zapněte binární protokolování.

    Pokud chcete zjistit, jestli je na primárním serveru povolené binární protokolování, zadejte následující příkaz:

    SHOW VARIABLES LIKE 'log_bin';
    

    Pokud proměnná log_bin vrátí hodnotu ON, je na vašem serveru povolené binární protokolování.

    Pokud log_bin vrátí hodnotu OFF, upravte soubor my.cnf tak, aby log_bin=ON se zapíná binární protokolování. Restartujte server, aby se změna projevila.

  4. Nakonfigurujte nastavení zdrojového serveru.

    Replikace příchozích dat vyžaduje, aby byl parametr lower_case_table_names konzistentní mezi zdrojovými servery a servery repliky. Parametr lower_case_table_names je ve výchozím nastavení nastavený 1 ve službě Azure Database for MariaDB.

    SET GLOBAL lower_case_table_names = 1;
    
  5. Vytvořte novou roli replikace a nastavte oprávnění.

    Na zdrojovém serveru, který je nakonfigurovaný s oprávněními replikace, vytvořte uživatelský účet. Účet můžete vytvořit pomocí příkazů SQL nebo aplikace MySQL Workbench. Pokud se chystáte replikovat pomocí protokolu SSL, musíte ho zadat při vytváření uživatelského účtu.

    Informace o přidání uživatelských účtů na zdrojový server najdete v dokumentaci k MariaDB.

    Pomocí následujících příkazů má nová role replikace přístup ke zdroji z libovolného počítače, nejen k počítači, který je hostitelem samotného zdroje. Pro tento přístup zadejte v příkazu syncuser@ %, který vytvoří uživatele.

    Další informace o dokumentaci k MariaDB najdete v tématu Zadání názvů účtů.

    Příkaz SQL

    • Replikace s využitím SSL

      Pokud chcete vyžadovat protokol SSL pro všechna uživatelská připojení, zadejte následující příkaz, který uživatele vytvoří:

      CREATE USER 'syncuser'@'%' IDENTIFIED BY 'yourpassword';
      GRANT REPLICATION SLAVE ON *.* TO ' syncuser'@'%' REQUIRE SSL;
      
    • Replikace bez SSL

      Pokud pro všechna připojení není vyžadován protokol SSL, vytvořte uživatele zadáním následujícího příkazu:

      CREATE USER 'syncuser'@'%' IDENTIFIED BY 'yourpassword';
      GRANT REPLICATION SLAVE ON *.* TO ' syncuser'@'%';
      

    MySQL Workbench

    Pokud chcete vytvořit roli replikace v aplikaci MySQL Workbench, vyberte v podokně Správa možnost Uživatelé a oprávnění. Pak vyberte Přidat účet.

    Users and Privileges

    Do pole Přihlašovací jméno zadejte uživatelské jméno.

    Sync user

    Vyberte panel Správa istrativních rolí a potom v seznamu globálních oprávnění vyberte Replikační slave. Výběrem možnosti Použít vytvořte roli replikace.

    Replication Slave

  6. Nastavte zdrojový server na režim jen pro čtení.

    Před výpisem databáze musí být server umístěn v režimu jen pro čtení. V režimu jen pro čtení nemůže zdroj zpracovat žádné transakce zápisu. Abyste se vyhnuli obchodním dopadům, naplánujte okno jen pro čtení v době mimo špičku.

    FLUSH TABLES WITH READ LOCK;
    SET GLOBAL read_only = ON;
    
  7. Získejte aktuální název a posun souboru binárního protokolu.

    Pokud chcete určit aktuální název a posun souboru binárního protokolu, spusťte příkaz show master status.

    show master status;
    

    Výsledky by měly být podobné následující tabulce:

    Master Status Results

    Poznamenejte si název binárního souboru, protože se použije v dalších krocích.

  8. Získejte pozici GTID (volitelné, potřebné pro replikaci s GTID).

    Spuštěním funkce BINLOG_GTID_POS získejte pozici GTID pro odpovídající název a posun souboru binlogu.

    select BINLOG_GTID_POS('<binlog file name>', <binlog offset>);
    

Výpis a obnovení zdrojového serveru

  1. Vysadí všechny databáze ze zdrojového serveru.

    Pomocí nástroje mysqldump vysadíte všechny databáze ze zdrojového serveru. Není nutné vysunout knihovnu MySQL a testovací knihovnu.

    Další informace najdete v tématu Výpis a obnovení.

  2. Nastavte zdrojový server na režim čtení a zápisu.

    Po výpisu databáze změňte zdrojový server MariaDB zpět do režimu čtení a zápisu.

    SET GLOBAL read_only = OFF;
    UNLOCK TABLES;
    
  3. Obnovte soubor s výpisem paměti na nový server.

    Obnovte soubor výpisu paměti na server vytvořený ve službě Azure Database for MariaDB. Informace o obnovení souboru s výpisem paměti na server MariaDB najdete v tématu Výpis a obnovení .

    Pokud je soubor s výpisem paměti velký, nahrajte ho do virtuálního počítače v Azure ve stejné oblasti jako server repliky. Obnovte ho z virtuálního počítače na server Azure Database for MariaDB.

  1. Nastavte zdrojový server.

    Všechny funkce replikace příchozích dat se provádějí uloženými procedurami. Všechny postupy najdete v uložených procedurách replikace příchozích dat. Uložené procedury je možné spustit v prostředí MySQL nebo MySQL Workbench.

    Pokud chcete propojit dva servery a spustit replikaci, přihlaste se k cílovému serveru repliky ve službě Azure DB for MariaDB. Dále nastavte externí instanci jako zdrojový server pomocí mysql.az_replication_change_master nebo mysql.az_replication_change_master_with_gtid uložené procedury na serveru Azure DB for MariaDB.

    CALL mysql.az_replication_change_master('<master_host>', '<master_user>', '<master_password>', 3306, '<master_log_file>', <master_log_pos>, '<master_ssl_ca>');
    

    nebo

    CALL mysql.az_replication_change_master_with_gtid('<master_host>', '<master_user>', '<master_password>', 3306, '<master_gtid_pos>', '<master_ssl_ca>');
    
    • master_host: název hostitele zdrojového serveru
    • master_user: uživatelské jméno zdrojového serveru
    • master_password: heslo pro zdrojový server
    • master_log_file: Spuštění názvu binárního souboru protokolu show master status
    • master_log_pos: Pozice binárního protokolu od spuštění show master status
    • master_gtid_pos: Pozice GTID ze spuštění select BINLOG_GTID_POS('<binlog file name>', <binlog offset>);
    • master_ssl_ca: Kontext certifikátu certifikační autority. Pokud nepoužíváte SSL, předejte prázdný řetězec.*

    *Doporučujeme předat parametr master_ssl_ca jako proměnnou. Další informace najdete v následujících příkladech.

    Příklady

    • Replikace s využitím SSL

      Vytvořte proměnnou @cert spuštěním následujících příkazů:

      SET @cert = '-----BEGIN CERTIFICATE-----
      PLACE YOUR PUBLIC KEY CERTIFICATE\'S CONTEXT HERE
      -----END CERTIFICATE-----'
      

      Replikace s protokolem SSL se nastavuje mezi zdrojovým serverem hostovaným v doméně companya.com a serverem repliky hostovaným ve službě Azure Database for MariaDB. Tato uložená procedura se spouští na replice.

      CALL mysql.az_replication_change_master('master.companya.com', 'syncuser', 'P@ssword!', 3306, 'mariadb-bin.000016', 475, @cert);
      
    • Replikace bez SSL

      Replikace bez PROTOKOLU SSL je nastavená mezi zdrojovým serverem hostovaným v doméně companya.com a serverem repliky hostovaným ve službě Azure Database for MariaDB. Tato uložená procedura se spouští na replice.

      CALL mysql.az_replication_change_master('master.companya.com', 'syncuser', 'P@ssword!', 3306, 'mariadb-bin.000016', 475, '');
      
  2. Spusťte replikaci.

    Zavolejte uloženou proceduru mysql.az_replication_start , aby se spustila replikace.

    CALL mysql.az_replication_start;
    
  3. Zkontrolujte stav replikace.

    Stav replikace zobrazíte voláním show slave status příkazu na serveru repliky.

    show slave status;
    

    Pokud Slave_IO_Running jsou a Slave_SQL_Running jsou ve stavu yesa hodnota Seconds_Behind_Master je 0, replikace funguje. Seconds_Behind_Master označuje, jak pozdě je replika. Pokud hodnota není 0, replika zpracovává aktualizace.

  4. Aktualizujte odpovídající proměnné serveru, aby byla replikace v datech bezpečnější (vyžadována pouze pro replikaci bez GTID).

    Kvůli omezení nativní replikace v MariaDB je nutné nastavit sync_master_info a sync_relay_log_info proměnné replikace bez scénáře GTID.

    Zkontrolujte server repliky sync_master_info a sync_relay_log_info proměnné, abyste se ujistili, že replikace příchozích dat je stabilní, a nastavte proměnné na 1.

Další uložené procedury

Zastavení replikace

Pokud chcete zastavit replikaci mezi zdrojovým serverem a serverem repliky, použijte následující uloženou proceduru:

CALL mysql.az_replication_stop;

Odebrání vztahu replikace

Pokud chcete odebrat vztah mezi zdrojovým serverem a serverem repliky, použijte následující uloženou proceduru:

CALL mysql.az_replication_remove_master;

Přeskočit chybu replikace

Pokud chcete přeskočit chybu replikace a povolit replikaci, použijte následující uloženou proceduru:

CALL mysql.az_replication_skip_counter;

Další kroky

Přečtěte si další informace o replikaci dat pro Azure Database for MariaDB.