GNU/Linux >> Znalost Linux >  >> Linux

Jak nakonfigurovat databázi MySQL Slave

Replikace MySQL umožňuje, aby více kopií stejné databáze bylo na více serverech současně, a to automatickým kopírováním dat z primárního serveru na "slave" server.

Díky tomuto mechanismu mohou být všechny příkazy prováděné na hlavním serveru, které nějakým způsobem mění data, zaznamenány, přeneseny a provedeny v replikovaných databázích.

Tato příručka vám pomůže nainstalovat MySQL na váš server, správně nakonfigurovat repliku a ověřit její fungování pomocí testovacích dat.

Nejprve se připojte k serveru prostřednictvím připojení SSH. Pokud jste tak ještě neučinili, doporučujeme se podle našeho průvodce bezpečně připojit pomocí protokolu SSH. V případě lokálního serveru přejděte k dalšímu kroku a otevřete svůj serverový terminál.

Instalace MySQL

Chcete-li nastavit replikaci Master / Slave na obou serverech, nainstalujte verzi MySQL a poté spusťte následující instalační postup na obou počítačích, než budete pokračovat k další kapitole.

Aktualizujte distribuční repozitáře, abyste měli jistotu, že si stáhnete nejaktuálnější verzi MySQL:

$ sudo apt update

Pokud jste tento příkaz již spustili dříve, přejděte k dalšímu kroku.

Nyní pokračujte v instalaci MySQL:

$ sudo apt install mysql-server

Abyste se ujistili, že instalace proběhla úspěšně, zkontrolujte verzi MySQL:

$ mysqld --version

Pokud byl postup úspěšně proveden, na obrazovce se vytiskne nainstalovaná verze MySQL.

Pokračujte v zabezpečení MySQL spuštěním skriptu obsaženého v MySQL, který zvýší zabezpečení a omezí přístup k vašim databázím:

$ sudo mysql_secure_installation

V tomto bodě vás řízený postup provede konfigurací úrovně zabezpečení MySQL.

Nejprve budete dotázáni, zda chcete povolit systém ověřování hesla. Pokud je povoleno, při nastavování hesla uživatele se heslo vyhodnotí a pokud nesplňuje bezpečnostní kritéria, je odmítnuto s chybou.

Později budete dotázáni, zda chcete změnit heslo uživatele root pomocí některého z vašich možností (pokud povolíte systém ověřování hesla, musíte zadat heslo, které splňuje bezpečnostní kritéria).

Doporučujeme se řídit několika doporučenými postupy pro vytvoření bezpečného hesla. To zahrnuje:

  • použití velkých i malých písmen

  • použití písmen i číslic

  • použití nealfanumerických znaků jako @ # $% ˆ &!

  • používání hesel, která nebyla nikdy předtím použita.

Nakonec vyberte, zda chcete odebrat anonymní uživatele, testovat databáze a zda zakázat vzdálené přihlášení uživatele root. Pro odpovídající úroveň zabezpečení se doporučuje potvrdit všechny tyto změny.

V tomto okamžiku potvrďte aktualizace zobrazené tabulky oprávnění, abyste mohli použít všechna nová bezpečnostní kritéria.

Pro použití změn nakonec restartujte službu:

$ sudo service mysql restart

Konfigurace replikace Master/Slave

Po instalaci na oba servery (Master a Slave) pokračujte konfigurací hlavního serveru.

Nejprve upravte konfigurační soubor v /etc/mysql/mysql.conf.d/mysqld.cnf následovně:

server-id               = 1
	
	log_bin                 = /var/log/mysql/mysql-bin.log
	
	expire_logs_days        = 10
	
	max_binlog_size   = 100M

Vzhledem k tomu, že se podřízený server bude nutně muset vzdáleně připojit k hlavnímu serveru, musíte se ujistit, že služba MySQL může přijímat externí připojení, a to změnou adresy vazby následovně:

bind-address            = 0.0.0.0

Po dokončení restartujte službu, aby se změny projevily:

$ sudo service mysql restart

Pro účely demonstrace a hodnocení vytvořte na hlavním serveru testovací databázi (zde nazvanou „výukový program“) s tabulkou s názvem „čísla“ s fiktivními daty. Po dokončení konfiguračního postupu zkontrolujte, zda jsou všechna zde zadaná data synchronizována se Slave serverem:

$ sudo mysql -u root -p
mysql> CREATE DATABASE tutorial;
	Query OK, 1 row affected (0.00 sec)
	
	mysql> USE tutorial;
	Database changed
	
	mysql> CREATE TABLE numbers ( value REAL );
	Query OK, 0 rows affected (0.09 sec)
	
	mysql> INSERT INTO numbers VALUES ( 1 ), ( 2 ), ( 3 );
	Query OK, 3 rows affected (0.04 sec)
	
	Records: 3  Duplicates: 0  Warnings: 0

Ujistěte se tedy, že hodnoty, které jste právě zadali, jsou přítomny v testovací tabulce:

mysql> SELECT * FROM numbers;
		
	+-------+
	| value |
	+-------+
	|     1 |
	|     2 |
	|     3 |
	+-------+
	3 rows in set (0.00 sec)

Tabulka čísel by měla obsahovat 3 vzorové řádky, jak je uvedeno výše.

Poté pokračujte vytvořením přístupových údajů pro uživatele, které bude používat Slave databáze:

mysql> GRANT REPLICATION SLAVE ON *.* TO 'usr_replica'@'%' IDENTIFIED BY 'SMDipmf#23$42';
	mysql> FLUSH PRIVILEGES;

Než budete pokračovat s konfigurací Slave serveru, bude na obrazovce vytištěn aktuální stav Master a budou uloženy následující informace:

mysql> SHOW MASTER STATUS;
	
	+------------------+----------+--------------+------------------+-------------------+
	
	| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
	
	+------------------+----------+--------------+------------------+-------------------+
	
	| mysql-bin.000001 |     1238 | |               | |
	
	+------------------+----------+--------------+------------------+-------------------+
	
	1 row in set (0.00 sec)

Tato data budete potřebovat při konfiguraci Slave serveru.

Pokračujte k ukončení prostředí MySQL:

mysql> exit
	Bye

Potom uložte kompletní výpis databáze, abyste jej mohli později načíst na podřízený server:

$ sudo mysqldump -u root -p --opt tutorial > slave-init.sql
	Enter password:

Přeneste nově vytvořený soubor na podřízený počítač a pokračujte v jeho konfiguraci, upravte soubor /etc/mysql/mysql.conf.d/mysqld.cnf:

server-id               = 2
	
	log_bin                 = /var/log/mysql/mysql-bin.log
	
	expire_logs_days        = 10
	
	max_binlog_size   = 100M

Upozorňujeme, že ID serveru bylo změněno pomocí čísla 2 a také nezapomeňte změnit adresu vazby, jak je znázorněno zde:

bind-address            = 0.0.0.0

Nyní restartujte Slave, aby se změny projevily:

$ sudo service mysql restart

Nyní pokračujte vytvořením databáze se stejným názvem jako hlavní server:

$ sudo mysql -u root -p

	mysql> create database tutorial;
	
	Query OK, 1 row affected (0.00 sec)
	mysql> exit
	
	Bye

Nyní importujte nově vytvořenou zálohu a spusťte Slave pomocí informací dříve uložených v hlavní databázi (MASTER_LOG_FILE a MASTER_LOG_POS):

$ sudo mysql -u root tutorial < /root/slave.sql
	$ sudo mysql -u root -p 
	mysql> CHANGE MASTER TO MASTER_HOST='195.231.4.201', MASTER_USER='usr_replica', MASTER_PASSWORD='SMDipmf#23$42', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS= 1238;
	
	Query OK, 0 rows affected, 2 warnings (0.10 sec)
	mysql> START SLAVE;
	
	Query OK, 0 rows affected (0.00 sec)

Od této chvíle jsou databáze synchronizovány v reálném čase a můžete opustit prostředí MySQL.

Ověření správného fungování replikace

Chcete-li ověřit fungování replikace, můžete zkusit vložit data do Master a zkontrolovat, zda správně dorazí do Slave databáze. Začněte zadáním nových dat na Master následovně:

$ sudo mysql -u root -p
mysql> use tutorial;
	Reading table information for completion of table and column names 
	Turn off this feature to get a quicker startup with -A   
	Database changed 
	
	mysql> INSERT INTO numbers VALUES ( 4 ) , ( 5 );
	
	Query OK, 2 rows affected (0.03 sec)
	Records: 2 
	Duplicates: 0 
	Warnings: 0

Potom pokračujte dotazem na Slave databázi:

$ sudo mysql -u root -p

	mysql> use tutorial;
	
	Reading table information for completion of table and column names
	
	Turn off this feature to get a quicker startup with -A
	  changed
	
	mysql> SELECT * FROM numbers;
	
	+-------+
	| value |
	+-------+
	|     1 |
	|     2 |
	|     3 |
	|     4 |
	|     5 |
	+-------+
	
	5 rows in set (0.00 sec)

Jak vidíte, nové hodnoty (4 a 5) dorazily do Slave databáze, takže synchronizace funguje správně.


Linux
  1. Jak nakonfigurovat webový server Apache

  2. Jak zkopírovat databázi MySQL

  3. Jak vytvořit databázi v MySQL pomocí MySQL Workbench

  1. Jak nainstalovat databázový server MySQL 8 na CentOS 8

  2. Jak nainstalovat databázový server MySQL na CentOS

  3. Jak nainstalovat Mtop (MySQL Database Server Monitoring) na CentOS 6

  1. Jak zálohovat a obnovit databázi MySQL

  2. Jak nainstalovat WordPress na Ubuntu 18.04 a nakonfigurovat jej pro použití vzdálené databáze

  3. Jak povolit vzdálené připojení k databázovému serveru MySQL