Vyhledávání na webu

Jak nastavit replikaci MySQL Master-Slave na Ubuntu 18.04


MySQL replikace master-slave je postup, který umožňuje replikaci nebo kopírování databázových souborů přes jeden nebo více uzlů v síti. Toto nastavení poskytuje redundanci a odolnost proti chybám, takže v případě selhání v hlavním uzlu lze databáze stále obnovit v podřízeném uzlu. To dává uživatelům jistotu, že v žádném případě nebude vše ztraceno, protože repliku databází lze stále získat z jiného serveru.

V této příručce se naučíte, jak provést replikaci Master-slave databáze MySQL v systému Ubuntu 18.04.

Předpoklady

V nastavení budeme mít dva servery se systémem Ubuntu 18.04 s následujícími IP adresami.

Master server: 10.128.0.28
Slave server: 10.128.0.29

Pojďme se nyní ponořit a podívat se, jak můžeme nakonfigurovat nastavení replikace Master-slave na Ubuntu.

Krok 1: Nainstalujte MySQL na hlavní a podřízené uzly

Úložiště Ubuntu obsahují verzi 5.7 MySQL. Chcete-li využít všech nových funkcí a vyhnout se potenciálním problémům, měli byste nainstalovat nejnovější verzi MySQL. Nejprve však aktualizujeme dva uzly pomocí následujícího příkazu apt.

sudo apt update

Chcete-li nainstalovat MySQL na oba uzly, spusťte příkaz.

sudo apt install mysql-server mysql-client

Dále otevřete konfigurační soubor mysql.

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

V hlavním uzlu přejděte a vyhledejte atribut bind-address, jak je znázorněno níže.

bind-address 	 =127.0.0.1

Změňte adresu zpětné smyčky tak, aby odpovídala adrese IP hlavního uzlu.

bind-address  	=10.128.0.28

Dále zadejte hodnotu pro atribut server-id v sekci [mysqld]. Číslo, které zvolíte, by se nemělo shodovat s žádným jiným číslem serveru. Přiřaďme hodnotu 1.

server-id	 =1

Na úplný konec konfiguračního souboru zkopírujte a vložte řádky níže.

log_bin = /var/log/mysql/mysql-bin.log
log_bin_index =/var/log/mysql/mysql-bin.log.index
relay_log = /var/log/mysql/mysql-relay-bin
relay_log_index = /var/log/mysql/mysql-relay-bin.index

Ukončete konfigurační soubor a restartujte službu MySQL, aby se změny projevily v hlavním uzlu.

sudo systemctl restart mysql

Chcete-li ověřit, zda server MySQL běží podle očekávání, zadejte příkaz.

sudo systemctl status mysql

Perfektní! MySQL server běží podle očekávání!

Krok 2: Vytvořte nového uživatele pro replikaci na hlavním uzlu

V této části vytvoříme uživatele replikace v hlavním uzlu. Chcete-li toho dosáhnout, přihlaste se k serveru MySQL podle obrázku.

sudo mysql -u root -p

Dále pokračujte a spusťte níže uvedené dotazy, abyste vytvořili uživatele repliky a udělili přístup podřízenému replikačnímu zařízení. Nezapomeňte použít svou IP adresu.

mysql> CREATE USER 'replication_user'@'10.128.0.29' IDENTIFIED BY 'replica_password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication_user '@'10.128.0.29';

Dále spusťte následující příkaz.

mysql> SHOW MASTER STATUS\G

Výstup by měl být podobný tomu, co můžete vidět níže.

Buďte nadšení a poznamenejte si hodnotu mysql-bin.000002 a ID pozice 1643. Tyto hodnoty budou klíčové při nastavování slave serveru.

Krok 3: Nakonfigurujte MySQL Slave Server

Vydejte se na podřízený server a stejně jako u hlavního serveru otevřete konfigurační soubor MySQL.

sudo vim  /etc/mysql/mysql.conf.d/mysqld.cnf

Stejně jako u hlavního serveru pokračujte v úpravách následujících řádků.

bind-address           = 10.128.0.29

Stejně jako dříve zadejte hodnotu pro atribut server-id v sekci [mysqld]. Tentokrát vyberte jinou hodnotu. Pojďme na 2.

server-id		=2 

Opět vložte řádky níže na úplný konec konfiguračního souboru.

log_bin = /var/log/mysql/mysql-bin.log
log_bin_index =/var/log/mysql/mysql-bin.log.index
relay_log = /var/log/mysql/mysql-relay-bin
relay_log_index = /var/log/mysql/mysql-relay-bin.index

Dále restartujte MySQL server na slave uzlu.

sudo systemctl restart mysql

Po dokončení uložte a ukončete textový editor

Dále se přihlaste do prostředí MySQL podle obrázku.

sudo mysql -u root -p

V tomto kroku budete muset provést nějakou konfiguraci, která umožní podřízenému serveru připojit se k hlavnímu serveru. Nejprve však zastavte podřízená vlákna, jak je znázorněno.

mysql> STOP SLAVE; 

Chcete-li povolit podřízenému serveru replikovat hlavní server, spusťte příkaz.

mysql> CHANGE MASTER TO MASTER_HOST ='10.128.0.28', MASTER_USER ='replication_user', MASTER_PASSWORD ='Saturn@1234', MASTER_LOG_FILE = 'mysql-bin.000002', MASTER_LOG_POS = 1643;

Pokud jste dostatečně zapálení, všimnete si, že jsme použili hodnotu mysql-bin.00002 a ID pozice 1643 dříve zobrazené po vytvoření uživatele slave replikace.

Kromě toho byla použita IP adresa hlavního serveru, uživatel replikace a heslo.

Později začněte vlákno, které jste předtím zastavili.

mysql> START SLAVE;

Krok 4: Ověřte replikaci MySQL Master-Slave

Chcete-li zkontrolovat, zda nastavení skutečně funguje podle očekávání, vytvoříme novou databázi na hlavním serveru a zkontrolujeme, zda byla replikována na serveru MySQL Slave.

Přihlaste se do MySQL na hlavním serveru.

sudo mysql -u root -p

Vytvoříme testovací databázi. V tomto případě vytvoříme databázi s názvem replication_db.

mysql> CREATE DATABASE replication_db;

Nyní se přihlaste ke své instanci MySQL na slave serveru.

sudo mysql -u root -p

Nyní vypište databáze pomocí dotazu.

mysql> SHOW DATABASES;

Všimnete si, že databáze, kterou jste vytvořili na master, byla replikována na slave. Skvělý ! Vaše replikace MySQL Master-Slave funguje podle očekávání! Nyní si můžete být jisti, že v případě jakéhokoli selhání budou kopie databázových souborů replikovány na podřízený server.

Závěr

V této příručce jste se naučili, jak nastavit nastavení replikace MySQL Master-slave na Ubuntu 18.04.