Konfigurace Replikace vstupních dat v Azure Database for MariaDB

Tento článek popisuje, jak nastavit Replikace vstupních dat Azure Database for MariaDB pomocí konfigurace zdrojového serveru a serveru repliky. Tento článek předpokládá, že máte předchozí zkušenosti se servery a databázemi MariaDB.

Pokud chcete vytvořit repliku ve službě Azure Database for MariaDB, Replikace vstupních dat synchronizuje data ze zdrojového serveru MariaDB místně, 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 protokolu binlog najdete v přehledu replikace protokolu binlog.

Před provedením kroků v tomto článku si prohlédněte omezení a požadavky replikace ing.

Poznámka

Pokud je váš zdrojový server verze 10.2 nebo novější, doporučujeme nastavit Replikace vstupních dat pomocí GLOBÁLNÍHO ID transakce.

Poznámka

Tento článek obsahuje odkazy na termín podřízený, termín, který Microsoft už použí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ý Azure Database for MariaDB serveru (například replica.mariadb.database.azure.com). Serverem je server repliky v Replikace vstupních dat.

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

    Důležité

    Server úložiště musíte Azure Database for MariaDB cenových úrovních Pro obecné účely nebo Optimalizováno pro paměť.

  2. Vytvořte identické 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živateli 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 Azure Database for MariaDB serveru.

  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 Replikace vstupních dat. Server MariaDB je zdrojem v Replikace vstupních dat.

  1. Než budete pokračovat, zkontrolujte 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 , že dns je veřejně přístupný nebo má plně kvalifikovaný název domény (FQDN).

    Otestujte připojení ke zdrojovému serveru tím, že se pokusíte připojit z nástroje, jako je například příkazový řádek MySQL hostovaný na jiném počítači nebo z Azure Cloud Shell dostupného v 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 vašeho Azure Database for MariaDB serveru použít následující příkaz.

    1. Přihlaste se ke svému Azure Database for MariaDB pomocí nástroje, jako je například příkazový řádek MySQL.

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

      mysql> 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>
      

      Napří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í. Tento způsob připojení je pouze 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 zobrazit, 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 , binární protokolování se povolí na vašem ON serveru.

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

  4. Nakonfigurujte nastavení zdrojového serveru.

    Replikace vstupních dat vyžaduje, aby byl parametr mezi zdrojovým serverem a serverem lower_case_table_names repliky konzistentní. Parametr lower_case_table_names je ve výchozím nastavení v 1 Azure Database for MariaDB.

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

    Vytvořte na zdrojovém serveru uživatelský účet, který má nakonfigurovaná oprávnění k replikaci. Účet můžete vytvořit pomocí příkazů SQL nebo MySQL Workbench. Pokud plánujete replikaci s protokolem SSL, musíte ji zadat při vytváření uživatelského účtu.

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

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

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

    SQL příkazu

    • Replikace s protokolem SSL

      Pokud chcete pro všechna připojení uživatelů vyžadovat 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'@'%' REQUIRE SSL;
      
    • Replikace bez SSL

      Pokud se protokol SSL pro všechna připojení nevyžaduje, 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 Add Account (Přidat účet).

    Uživatelé a oprávnění

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

    Synchronizace uživatele

    Vyberte panel Správní role a pak v seznamu Globální oprávnění vyberte Podřízený replikační server. Výběrem možnosti Použít vytvořte roli replikace.

    Podřízený server replikace

  6. Nastavte zdrojový server do režimu jen pro čtení.

    Před výpisem paměti 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 dopadu na firmu, naplánujte si okno jen pro čtení v době mimo špičku.

    FLUSH TABLES WITH READ LOCK;
    SET GLOBAL read_only = ON;
    
  7. Získejte název a posun aktuálního binárního souboru 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:

    Výsledky hlavního stavu

    Poznamenejte si název binárního souboru, protože ho použijete v pozdějších krocích.

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

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

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

Výpis a obnovení zdrojového serveru

  1. Vy výpis všech databází ze zdrojového serveru.

    K výpisu všech databází ze zdrojového serveru použijte mysqldump. Knihovnu MySQL a testovací knihovnu není nutné vy výpisem paměti.

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

  2. Nastavte zdrojový server do režimu č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 s výpisem paměti na server vytvořený v Azure Database for MariaDB systému. Informace o obnovení & výpisu paměti na server MariaDB najdete v tématu Obnovení výpisu stavu systému.

    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 na Azure Database for MariaDB serveru z virtuálního počítače.

  1. Nastavte zdrojový server.

    Všechny Replikace vstupních dat se provádí pomocí uložených procedur. Všechny procedury najdete v Replikace vstupních dat uložené procedury. Uložené procedury je možné spustit v prostředí MySQL nebo v aplikaci 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 serveru. Potom nastavte externí instanci jako zdrojový server pomocí uložené procedury nebo na Azure DB for MariaDB mysql.az_replication_change_master mysql.az_replication_change_master_with_gtid serveru.

    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 pro zdrojový Server
    • master_password: heslo pro zdrojový Server
    • master_log_file: název souboru binárního protokolu se spustí. show master status
    • master_log_pos: binární umístění protokolu se spouští. 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 protokol 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 protokolem 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 je nastavená mezi zdrojovým serverem hostovaným v doméně companya.com a serverem repliky hostovaným v 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 SSL je nastavená mezi zdrojovým serverem hostovaným v doméně companya.com a serverem repliky hostovaným v 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.

    mysql.az_replication_startPro spuštění replikace zavolejte uloženou proceduru.

    CALL mysql.az_replication_start;
    
  3. Zkontroluje stav replikace.

    Voláním show slave status příkazu na serveru repliky zobrazte stav replikace.

    show slave status;
    

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

  4. Aktualizujte odpovídající proměnné serveru pro zajištění bezpečnější replikace dat (vyžaduje se jenom pro replikaci bez GTID).

    Z důvodu nativního omezení replikace v MariaDB je nutné nastavit sync_master_info a sync_relay_log_info proměnné pro replikaci bez scénáře GTID.

    Zkontrolujte proměnné serveru repliky sync_master_info a ujistěte se sync_relay_log_info , že je replikace dat stabilní, a nastavte proměnné na 1 .

Jiné 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;

Odebrat vztah replikace

Pokud chcete odebrat relaci 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 povolení replikace, použijte následující uloženou proceduru:

CALL mysql.az_replication_skip_counter;

Další kroky

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