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.