Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek popisuje, jak nastavit replikaci dat do flexibilního serveru Azure Database for MySQL na flexibilním serveru Azure Database for MySQL konfigurací zdrojových serverů a serverů replik. Tento článek předpokládá, že máte zkušenosti se servery a databázemi MySQL.
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.
Pokud chcete vytvořit repliku v instanci flexibilního serveru Azure Database for MySQL, replikace dat do flexibilního serveru Azure Database for MySQL synchronizuje data ze zdrojového místního serveru MySQL, ve virtuálních počítačích nebo v cloudových databázových službách. Replikaci příchozích dat je možné nakonfigurovat pomocí replikace založené na pozici souboru binárního protokolu (binlog) NEBO replikace na základě GTID. Další informace o replikaci binlogu najdete v tématu Replikace MySQL.
Před provedením kroků v tomto článku si projděte omezení a požadavky replikace příchozích dat.
Vytvoření instance flexibilního serveru Azure Database for MySQL pro použití jako repliky
Vytvořte novou instanci flexibilního serveru Azure Database for MySQL (například
replica.mysql.database.azure.com). Projděte si Rychlý start: Vytvoření instance služby Azure Database for MySQL pomocí portálu Azure pro vytvoření serveru. Tento server je serverem repliky pro replikaci příchozích dat.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 máte v plánu poskytnout uživatelům přístup k serveru repliky, musíte na této nově vytvořené instanci flexibilního serveru Azure Database for MySQL vytvořit všechny účty a odpovídající oprávnění ručně.
Konfigurace zdrojového serveru MySQL
Následující kroky připraví a nakonfigurují server MySQL hostovaný místně, na virtuálním počítači nebo v databázové službě hostované jinými poskytovateli cloudu pro replikaci příchozích dat. Tento server je "zdrojem" pro replikaci příchozích dat.
Než budete pokračovat, zkontrolujte požadavky na zdrojový server.
Požadavky na síť
Ujistěte se, že zdrojový server umožňuje příchozí i odchozí provoz na portu 3306 a že má veřejnou IP adresu, DNS je veřejně přístupný nebo že má plně kvalifikovaný název domény (FQDN).
Pokud se používá privátní přístup (integrace virtuální sítě), ujistěte se, že máte připojení mezi zdrojovým serverem a virtuální sítí, ve které je server repliky hostovaný.
Ujistěte se, že zajišťujeme připojení typu site-to-site k místním zdrojovým serverům pomocí ExpressRoute nebo VPN. Další informace o vytváření virtuální sítě najdete v dokumentaci k virtuální síti a zejména v článcích rychlého startu s podrobnými podrobnostmi.
Pokud se používá privátní přístup (integrace VNet) na serveru replika a váš zdroj je Azure VM, ujistěte se, že je navázáno připojení mezi virtuálními sítěmi VNet. Podporuje se partnerský vztah virtuálních sítí. Můžete také použít jiné metody připojení ke komunikaci mezi virtuálními sítěmi v různých oblastech, jako je připojení VNet k VNet. Další informace najdete v tématu Brána VPN typu VNet-to-VNet
Ujistěte se, že pravidla skupiny zabezpečení sítě virtuální sítě neblokují odchozí port 3306 (příchozí taky v případě, že je mySQL spuštěný na virtuálním počítači Azure). Další podrobnosti o filtrování provozu pomocí skupin zabezpečení virtuální sítě najdete v článku Filtrování provozu sítě s použitím skupin zabezpečení sítě.
Nakonfigurujte pravidla brány firewall zdrojového serveru tak, aby umožňovala IP adresu serveru repliky.
Pokud chcete použít pozici bin-logu nebo replikaci dat založenou na GTID, postupujte podle příslušných kroků.
Spuštěním následujícího příkazu zkontrolujte, jestli je ve zdroji povolené binární protokolování:
SHOW VARIABLES LIKE 'log_bin';Pokud se proměnná
log_binvrátí s hodnotou ON, je na vašem serveru povolené binární protokolování.Pokud
log_binse vrátí hodnota OFF a váš zdrojový server běží místně nebo na virtuálních počítačích, kde máte přístup ke konfiguračnímu souboru (my.cnf), můžete postupovat následovně:Na zdrojovém serveru vyhledejte konfigurační soubor MySQL (my.cnf). Příklad: /etc/my.cnf
Otevřete konfigurační soubor, který chcete upravit, a vyhledejte v souboru oddíl mysqld .
V části mysqld přidejte následující řádek:
log-bin=mysql-bin.logRestartujte službu MySQL na zdrojovém serveru (nebo restartujte), aby se změny projevily.
Po restartování serveru ověřte, že je binární protokolování povolené spuštěním stejného dotazu jako předtím:
SHOW VARIABLES LIKE 'log_bin';
Nakonfigurujte nastavení zdrojového serveru.
Replikace příchozích dat vyžaduje, aby byl parametr
lower_case_table_nameskonzistentní mezi zdrojovými servery a servery replik. Tento parametr je ve výchozím nastavení 1 na flexibilním serveru Azure Database for MySQL.SET GLOBAL lower_case_table_names = 1;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. Můžete to provést pomocí příkazů SQL nebo nástroje, jako je MySQL Workbench. Zvažte, jestli plánujete replikaci pomocí PROTOKOLU SSL, protože při vytváření uživatele bude potřeba zadat tuto možnost. Informace o přidávání uživatelských účtů na zdrojovém serveru najdete v dokumentaci k MySQL.
V následujících příkazech má nová vytvořená role replikace přístup ke zdroji z libovolného počítače, nejen k počítači, který je hostitelem samotného zdroje. To se provádí zadáním "syncuser@"%" v příkazu create user. Další informace o zadávání názvů účtů najdete v dokumentaci k MySQL.
Replikace s využitím SSL
Pokud chcete vyžadovat protokol SSL pro všechna uživatelská připojení, vytvořte uživatele pomocí následujícího příkazu:
CREATE USER 'syncuser'@'%' IDENTIFIED BY 'yourpassword' REQUIRE SSL; GRANT REPLICATION SLAVE ON *.* TO ' syncuser'@'%';Replikace bez SSL
Pokud pro všechna připojení není vyžadován protokol SSL, vytvořte uživatele pomocí následujícího příkazu:
CREATE USER 'syncuser'@'%' IDENTIFIED BY 'yourpassword'; GRANT REPLICATION SLAVE ON *.* TO ' syncuser'@'%';Nastavte zdrojový server na režim jen pro čtení.
Než začnete s výpisem databáze, musí být server umístěn v režimu jen pro čtení. V režimu jen pro čtení nebude zdroj moct zpracovat žádné transakce zápisu. V případě potřeby vyhodnoťte dopad na vaši firmu a naplánujte okno jen pro čtení v době mimo špičku.
FLUSH TABLES WITH READ LOCK; SET GLOBAL read_only = ON;Získat název a posun binárního protokolového souboru.
Spusťte příkaz
show master statusk určení aktuálního názvu binárního log souboru a posunu v něm.show master status;Výsledky by se měly podobat následujícímu. Nezapomeňte si poznamenat název binárního souboru pro použití v pozdějších krocích.
Výpis a obnovení zdrojového serveru
Určete, které databáze a tabulky chcete replikovat na flexibilní server Azure Database for MySQL, a proveďte výpis ze zdrojového serveru.
K výpisu databází z primárního serveru můžete použít mysqldump. Podrobnosti najdete v tématu Výpis a obnovení. Není nutné vysunout knihovnu MySQL a testovací knihovnu.
Nastavte zdrojový server na režim čtení a zápisu.
Po výpisu databáze změňte zdrojový server MySQL zpět na režim čtení a zápisu.
SET GLOBAL read_only = OFF; UNLOCK TABLES;Poznámka:
Než se server nastaví zpět do režimu čtení a zápisu, můžete načíst informace GTID pomocí globální proměnné GTID_EXECUTED. Použije se v pozdější fázi k nastavení GTID na serveru repliky.
Obnovte soubor s výpisem paměti na nový server.
Obnovte soubor s výpisem dat na server vytvořený v Azure Database for MySQL Flexible Server. Odkazuje na
Dump & Restore , kde najdete informace o obnovení souboru s výpisem na server MySQL. 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 ji z virtuálního počítače do instance flexibilního serveru Azure Database for MySQL.
Poznámka:
Pokud se chcete vyhnout nastavení databáze jen pro čtení při výpisu a obnovení, můžete použít mydumper/myloader.
Nastavení GTID na serveru repliky
Vynechte tento krok, pokud používáte replikaci založenou na pozicích bin-logu.
Informace GTID ze souboru výpisu paměti převzaté ze zdroje se vyžadují k resetování historie GTID cílového serveru (repliky).
Pomocí těchto informací GTID ze zdroje spusťte resetování GTID na serveru repliky pomocí následujícího příkazu rozhraní příkazového řádku:
az mysql flexible-server gtid reset --resource-group <resource group> --server-name <replica server name> --gtid-set <gtid set from the source server> --subscription <subscription id>
Další podrobnosti najdete v tématu OBNOVENÍ GTID.
Poznámka:
Na serveru s povoleným zálohováním geografické redundance nelze provést resetování GTID. Zakažte geografickou redundanci a proveďte resetování GTID na serveru. Možnost geografické redundance můžete znovu povolit po resetování GTID. Akce resetování GTID zneplatní všechny dostupné zálohy, a proto po opětovném povolení geografické redundance může trvat den před provedením geografického obnovení na serveru.
Propojení zdrojových serverů a serverů replik za účelem spuštění replikace příchozích dat
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 Database for MySQL a nastavte externí instanci jako zdrojový server. To se provádí pomocí
mysql.az_replication_change_masternebomysql.az_replication_change_master_with_gtiduložené procedury na serveru Azure Database for MySQL.CALL mysql.az_replication_change_master('<master_host>', '<master_user>', '<master_password>', <master_port>, '<master_log_file>', <master_log_pos>, '<master_ssl_ca>');CALL mysql.az_replication_change_master_with_gtid('<master_host>', '<master_user>', '<master_password>', <master_port>,'<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_port: číslo portu, na kterém zdrojový server naslouchá připojení. (3306 je výchozí port, na kterém MySQL naslouchá)
- master_log_file: název binárního souboru protokolu při spuštění
show master status - master_log_pos: Pozice binárního logu od spuštění
show master status - master_ssl_ca: Kontext certifikátu certifikační autority. Pokud nepoužíváte SSL, předejte prázdný řetězec.
Tento parametr se doporučuje předat jako proměnnou. Další informace najdete v následujících příkladech.
Poznámka:
- Pokud je zdrojový server hostovaný na virtuálním počítači Azure, nastavte možnost "Povolit přístup ke službám Azure" na "ZAPNUTO", aby mezi sebou mohly komunikovat zdrojové servery a servery repliky. Toto nastavení lze změnit z možností zabezpečení připojení. Další informace najdete v tématu Správa pravidel brány firewall pro flexibilní server Azure Database for MySQL pomocí webu Azure Portal.
- Pokud jste k výpisu databáze použili mydumper/myloader, můžete získat master_log_file a master_log_pos ze souboru /backup/metadata .
Příklady
Replikace s využitím SSL
Proměnná
@certse vytvoří spuštěním následujících příkazů MySQL: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 na flexibilním serveru Azure Database for MySQL. Tato uložená procedura se spouští na replice.
CALL mysql.az_replication_change_master('master.companya.com', 'syncuser', 'P@ssword!', 3306, 'mysql-bin.000002', 120, @cert);CALL mysql.az_replication_change_master_with_gtid('master.companya.com', 'syncuser', 'P@ssword!', 3306, @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 na flexibilním serveru Azure Database for MySQL. Uložená procedura se spouští na této replice.
CALL mysql.az_replication_change_master('master.companya.com', 'syncuser', 'P@ssword!', 3306, 'mysql-bin.000002', 120, '');CALL mysql.az_replication_change_master_with_gtid('master.companya.com', 'syncuser', 'P@ssword!', 3306, '');Spusťte replikaci.
Zavolejte uloženou proceduru
mysql.az_replication_start, aby se spustila replikace.CALL mysql.az_replication_start;Zkontrolujte stav replikace.
Stav replikace zobrazíte voláním
show slave statuspříkazu na serveru repliky.show slave status;Informace o správném stavu replikace najdete v metrikách replikace – Stav V/V repliky a Stav SQL repliky na stránce monitorování.
Pokud je hodnota
Seconds_Behind_Master0, replikace funguje dobře.Seconds_Behind_Masteroznačuje, jak velké je zpoždění repliky. Pokud hodnota není 0, znamená to, že replika zpracovává aktualizace.
Další užitečné uložené procedury pro operace replikace příchozích dat
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 pokračovat, použijte následující uloženou proceduru:
CALL mysql.az_replication_skip_counter;
SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos][LIMIT [offset,] row_count]