Někdy můžeme potřebovat replikovat data z jednoho serveru MySQL DB na jeden nebo více serverů MySQL DB automaticky. Správci databází v zásadě provádějí úlohy související s databázemi, jako je replikace, shlukování a automatické přepnutí při selhání. Správa databázových serverů MySQL a provádění úloh replikace jsou odpovědností databázových expertů. V tomto článku se naučíme, jak nastavit replikaci master-slave databáze MySQL v Ubuntu 20.04. V tomto článku budeme pro replikaci používat MySQL 8.
Předpoklady
- Dva servery ubuntu
- Kořenový privilegovaný uživatelský účet
- Připojení k internetu pro stahování balíčků
V tomto příkladu jsou použity následující servery.
- Hlavní – 192.168.178.135
- Slave – 192.168.178.137
Nainstalujte server MySQL 8 na oba uzly
Instalace MySQL je jednoduchý a přímočarý proces. V systému Ubuntu lze MySQL nainstalovat pomocí úložiště balíčků APT. Před instalací aktualizujte index balíčků Ubuntu pomocí následujícího příkazu.
Aktualizace $apt
Nainstalujte balíček serveru MySQL pomocí příkazu níže.
$apt install mysql-server -y
Čerstvá instalace serveru MySQL jej ponechá nezabezpečený. Spusťte skript „mysql_secure_installation ” pro změnu některých méně bezpečných výchozích možností, jako jsou vzdálené přihlášení root, testovací databáze, vzorové uživatele atd.
$ mysql_secure_installation
Spusťte a povolte službu MySQL
$ systemctl spustit mysql
$ systemctl povolit mysql
Konfigurace hlavního DB serveru
Nyní musíme provést nějaké změny na hlavním serveru pro replikaci. Upravte soubor mysqld.conf soubor v adresáři /etc/mysql/mysql.conf.d a přidejte následující řádky. Nezapomeňte přidat konfigurační proměnné pod [mysqld] sekce.
$ vi /etc/mysql/mysql.conf.d/mysqld.conf
[mysqld]soubor pid =/var/run/mysqld/mysqld.pidsocket =/var/run/mysqld/mysqld.sockdatadir =/var/lib/mysqllog-error =/var/log/mysql/error. logserver-id =1log-bin =/var/log/mysql/mysql-bin.logtmpdir =/tmpbinlog_format =ROWmax_binlog_size =800Msync_binlog =1expire-logs-days =5slow_query_log=1slow_query/libmyqs/slow.
Kde:
- server-id – Jedinečné ID serveru MySQL. Toto ID nelze znovu použít v žádném uzlu v clusteru.
- log-bin – Toto je soubor, ve kterém jsou uloženy všechny informace o replikaci.
- max_binlog_size – velikost souboru binlog.
Zakomentujte také adresu vazby jako:
#bind-address =127.0.0.1
Restartujte službu mysql
$systemctl restart mysql
Vytvořte nového uživatele pro službu replikace na hlavním uzlu
Nyní potřebujeme vytvořit databázového uživatele v hlavním uzlu, kterého budou používat slave při připojování. Přihlaste se do databáze pomocí uživatele root a vytvořte uživatele.
$ mysql -u root -p
$ mysql> VYTVOŘIT UŽIVATELE [chráněno e-mailem] IDENTIFIKOVANÉ PODLE '[chráněno e-mailem]';
Poznámka:Zadání IP adresy při vytváření uživatele bude akceptovat připojení MySQL pouze ze zadaného hostitele. Spojení z jiných hostitelů budou odmítnuta. V tomto příkladu jsem použil IP adresu mého podřízeného serveru MySQL. Možná budete muset odpovídajícím způsobem změnit tuto IP adresu na vaše prostředí.
Uživatel potřebuje oprávnění REPLICATION SLAVE, aby mohl replikovat data MySQL. K udělení oprávnění použijte následující dotaz.
mysql> GRANT REPLICATION SLAVE dne *.* uživateli [email protected];
Ověřte udělená oprávnění pomocí následujícího dotazu.
mysql> ZOBRAZIT GRANTY PRO [chráněno e-mailem];
Konfigurace podřízeného DB uzlu
MySQL server jsme již nainstalovali v předchozím kroku. Nyní změníme některé konfigurační soubory, abychom umožnili proces replikace. Upravte soubor mysqld.conf soubor pod /etc/mysql/mysql.conf.d adresář a přidejte následující obsah.
$vi /etc/mysql/mysql.conf.d/mysqld.conf
Obsah konfiguračního souboru:
[mysqld]log_bin =/var/log/mysql/mysql-bin.logserver-id =2read_only =1tmpdir =/tmpbinlog_format =ROWmax_binlog_size =800Msync_binlog =1expire-logs-days =5pre_logslow =2>Kde,
- ID serveru – Jedinečné ID serveru MySQL.
- pouze pro čtení – Slave uzel je nastaven do režimu pouze pro čtení
- log_bin – Umožňuje binární protokolování v podřízeném uzlu
- slow_query_log – Umožňuje pomalý protokol dotazů
Zakomentujte také řádek bind-address.
# bind-address =127.0.0.1
Nyní restartujte službu MySQL
$ systemctl restart mysql
Připojit podřízený server k hlavnímu serveru
Před konfigurací podřízeného serveru přejděte na hlavní server a zkontrolujte stav.
$ mysql -u root -p
mysql> ZOBRAZIT STAV MASTER\G
Poznamenejte si následující příznaky, které použijeme na podřízeném serveru.
- Soubor:mysql-bin.000002
- Pozice:156
Nyní nakonfigurujte parametry na podřízeném serveru, který bude použit pro připojení hlavního serveru. Postupujte podle níže uvedených kroků.
- Přihlaste se k serveru MySQL pomocí přihlašovacích údajů root
$ mysql -u root -p
- Zastavit vlákna Slave
mysql> STOP SLAVE;
- Nastavte podřízený server tak, aby replikoval hlavní server
mysql> ZMĚNIT MASTER NA MASTER_HOST='192.168.178.137', MASTER_USER='replication_user', MASTER_PASSWORD='[e-mail chráněný]', MASTER_LOG_FILE='mysql-bin.000003',003', 100003 MASTER_5
Kde,
- 192.168.178.137 – IP adresa hlavního serveru
- replication_user – Uživatel MySQL hlavního serveru
- heslo – Uživatelské heslo replikace
- mysql-bin.000002 – Soubor protokolu hlavního serveru
- 156 – Zaznamenat pozici hlavního serveru
Nyní aktivujte podřízený server.
mysql> START SLAVE;
Ověřte stav slave pomocí následujícího dotazu
mysql> ZOBRAZIT STAV SLAVE\G
Všimněte si stavu následujícího příznaku.
- Slave_IO_Running:Připojování
- Slave_IO_Running:Připojování
Ověřte replikaci master-slave
Master a slave jsou nakonfigurovány pro replikaci. Můžeme ověřit, zda replikace master-slave funguje nebo ne. Na hlavním serveru se přihlaste do prostředí MySQL a vytvořte testovací databázi.
$ mysql -u root -p
mysql> CREATE DATABASE example_db;
Ověřte vytvořenou databázi.
mysql> ZOBRAZIT DATABÁZE;
Nyní se přihlaste k podřízenému serveru
$ mysql -u root -p
Spuštěním následujícího dotazu zobrazíte seznam databází.
mysql> ZOBRAZIT DATABÁZE;
Můžete vidět, že databáze vytvořená na hlavním serveru je replikována na podřízený server.
Závěr
V tomto článku jsme se naučili, jak nastavit hlavní a podřízený uzel MySQL na Ubuntu 20.04. Podle tohoto článku můžete také nastavit replikaci MySQL master-slave na Ubunutu 18.04.