Zpět na blog

Nastavení replikace v MySQL na Ubuntu

Nastavení replikace v MySQL na Ubuntu

MySQL replikace je zajímavá funkce, která uživatelům umožňuje spravovat více kopií jedné nebo více databází MySQL. Data se automaticky kopírují ze zdrojových do replikačních databází. Může to být užitečné v mnoha situacích, jako je práce s daty bez ohrožení hlavní databáze, zálohování dat nebo škálování přístupu k databázi atd.

V této příručce projdeme kroky nastavení instance MySQL na jednom serveru jako zdrojové databáze a poté konfiguraci instance MySQL na jiném serveru, aby fungovala jako její replika.

Požadavky

Tato příručka ukáže velmi jednoduchý příklad replikace MySQL. Zahrnuje jednu zdrojovou a jednu replikační databázi. Zdrojová databáze je primární kopií databáze, zatímco replikační databáze bude replikou zdrojové databáze. Pro naši ukázku jsou nakonfigurovány dva servery s následujícími IP adresami:

  • Zdrojový server: 31.171.240.179
  • Replikační server: 31.171.250.139

Každý server je nakonfigurován s nejnovější konfigurací Ubuntu 20.04 server. Nejprve postupujte podle kroků v návodu, které ukazují, jak nastavit server Ubuntu. Všimněte si, že počet replikačních databází může být vyšší. Tato příručka předpokládá, že již máte MySQL nainstalované a nakonfigurované. Potřebujete pomoci s instalací MySQL? Tento návod podrobně ukazuje kroky instalace a základního použití MySQL.

Stručně řečeno, zde jsou balíčky, které potřebujete:

Brány firewall na obou systémech by měly být nakonfigurovány tak, aby povolovaly provoz z obou systémů na portu 3306. Je to výchozí port pro MySQL. Více se o základech UFW s ukázkou dozvíte v našem příspěvku na blogu.

Konfigurace zdrojové databáze

  • Úprava konfigurace MySQL

MySQL používá my.cnf jako primární konfigurační soubor. Aktualizujeme my.cnf pro označení serveru jako zdroj. Nejprve otevřete konfigurační soubor v textovém editoru:

Poté přidejte následující řádky pod sekci mysqld:

Replication in MySQL 4

Co tyto řádky znamenají?

  • bind-address: Toto je položka, která definuje asociaci mezi službou a IP adresou. Ve výchozím nastavení může být hodnota 127.0.0.1 (localhost). Novou hodnotou bude IP adresa serveru.
  • server-id: V replikaci MySQL musí mít každý server jedinečné ID serveru. Může to být jakékoli číslo. Pro zjednodušení je nastaveno na 1.
  • log_bin: Ukládá skutečné podrobnosti o replikaci. Replikační databáze bude kopírovat vše registrované v protokolu.
  • binlog_do_db: Tato položka určuje databázi, která bude předmětem replikace na replikačním serveru. Databází může být více než jedna. Zde je ukázková databáze newdatabase.

Po provedení změn uložte konfigurační soubor. MySQL vyžaduje restart, aby se načetly změny v my.cnf:

  • Udělení oprávnění uživateli repliky

Dalším krokem je vytvoření uživatele repliky a udělení příslušných oprávnění. To je třeba provést z prostředí MySQL. Nejprve spusťte prostředí MySQL:

Dále vytvořte vyhrazeného uživatele pro replikační databázi. Podle potřeby změňte uživatelské jméno a heslo:

Nyní udělte uživateli příslušná oprávnění:

Více se o uživatelích a oprávněních v MySQL dozvíte v našem příspěvku na blogu. Poté znovu načtěte tabulku oprávnění, aby se změny projevily:

FLUSH PRIVILEGES

  • Úprava databáze

Na replice potřebujeme kopii zdrojové databáze. Je sice možné strukturu vytvořit ručně, ale ve většině případů je to dosti nepohodlné. Proto je nejoptimálnějším řešením přímý export databáze. V tomto příkladu je zdrojová databáze newdatabase. Změňte aktuální databázi:

Následující příkaz uzamkne databázi a zabrání jakýmkoli novým změnám:

Poté zkontrolujte stav databáze:

Replication in MySQL 3

Z této pozice začne replika databáze replikovat ze zdroje. Tato čísla se budou hodit později, proto si je zaznamenejte. Pokud provedete jakékoli změny ze stejného okna, MySQL databázi automaticky odemkne. Doporučuje se proto provést následující kroky v jiné záložce nebo okně terminálu. Databáze je stále uzamčena. Exportujte ji do přenosného souboru SQL:

Úkol je nyní hotov. Dále databázi odemkněte:

Nakonec ukončete shell:

Replica Configuration

Nyní je čas nakonfigurovat repliku databáze.

  • Import zdrojové databáze

Na replikačním serveru potřebujeme kopii zdrojové databáze. K tomu použijeme dříve exportovaný SQL soubor. Spusťte MySQL shell:

Poté vytvořte prázdnou databázi se stejným názvem:

Dále ukončete shell:

Nyní importujte SQL soubor do databáze:

sudo mysql -u

  • Úprava konfigurace MySQL

V konfiguračním souboru MySQL je třeba deklarovat několik věcí. Otevřete konfigurační soubor v textovém editoru:

Následující položky budou patřit pod sekci mysqld. Jinak to nebude fungovat. První je ID serveru. Jak již bylo zmíněno, musí být jedinečné pro všechny servery v konfiguraci replikace zdroj-replika. Pro účely ukázky je nastaveno na 2:

Dále přidejte následující řádky:

Replication in MySQL 2

Zde je novou položkou pouze relay-log. Je to protokol, který replikační server vytváří během replikace. Formát protokolu je stejný jako u binárního protokolu. Uložte konfigurační soubor a restartujte MySQL:

  • Povolení replikace

Konečně jsme připraveni povolit replikaci přímo v MySQL. Spusťte MySQL shell:

Spusťte následující příkaz. Nejprve odpovídajícím způsobem změňte IP adresu, uživatelské jméno a hesla:

CHANGE MASTER TO MASTER_HOST

Příkaz provede následující:

  • Aktuální server je označen jako replika zdrojového serveru.
  • Replikační server má správné přihlašovací údaje.
  • Replikační server ví, odkud má začít replikovat. Pamatujete si stav databáze, který jsme kontrolovali na zdrojovém serveru? Zdrojový soubor protokolu a pozice protokolu pocházejí odtud.

Nakonec aktivujte replikační server:

START REPLICA

  • Různé

Potřebujete zkontrolovat podrobnosti o aktuálním stavu repliky? Spusťte v MySQL shellu následující příkaz. Znak \G na konci slouží k uspořádání textů tak, aby byly čitelnější:

Replication in MySQL 1

Pokud dojde k problému s připojením, zkuste spustit replikační server, abyste jej přeskočili:

Závěr

Replikace MySQL má mnoho důsledků. Jedná se pouze o stručnou ukázku její základní podoby. Lze ji však snadno rozšířit na konfigurace s více zdroji a replikami. Stejné kroky budou platit i pro jakékoli složitější konfigurace na vyšší úrovni. Vždy je dobré jakoukoli konfiguraci následně otestovat. Zkuste provést nějaké insertdelete nebo update příkazy na zdrojové databázi. Pokud nastavení funguje, měla by replika databáze vše správně převzít.

Kromě toho se můžete podívat na další zdroje na našem blogu, které se zabývají tím, co všechno můžete s MySQL dělat:

Příjemnou práci!

 

author

Hark Labs

Autor · CloudSigma

Preslav Dobrev je kreativní designér ve společnosti CloudSigma, který se zaměřuje na konzistentní firemní identitu prostřednictvím tradičních i inovativních marketingových kanálů. Je zdatný v propojování umělecké vize se strategickým marketingem za účelem vytváření působivých příběhů značky.

Komentáře

Zatím žádné komentáře. Buďte první.