Oktatóanyagok > Hogyan konfigurálható a MySQL Slave adatbázist?

Hogyan konfigurálható a MySQL Slave adatbázist?

Közzétéve: 18 január 2020

Database MySQL

A MySQL replikáció lehetővé teszi, hogy ugyanazon adatbázis több példánya egyszerre több szerveren legyen, az adatok elsődleges kiszolgálóról történő automatikus másolásával a "slave" szerverre.

Ennek a mechanizmusnak köszönhetően az összes, a masteren végrehajtott utasítás, amely valahogy megváltoztatja az adatokat, rögzíthető, továbbítható és végrehajtható a replikált adatbázisokban.

Ez az útmutató segít a MySQL telepítésében, a replika megfelelő konfigurálásában és annak működésének teszt adatokkal történő ellenőrzésében.

Először csatlakozzon a szerverhez SSH kapcsolaton keresztül. Ha még nem tette meg, akkor ajánlott átböngésznie a Hogyan javítható az SSH biztonság az Ubuntu 18.04-en? útmutatónkat a folyamat megkezdése előtt. Helyi szerver esetén folytassa a következő lépéssel, és nyissa meg a szerver terminált.

A MySQL telepítése

A Master / Slave replikáció mindkét szerveren történő beállításához telepítse a MySQL valamely verzióját, majd futtassa a következő telepítési eljárást mindkét gépen, mielőtt továbblépne útmutatónk következő szakaszára.

Frissítse a disztribúciós repókat, hogy a MySQL legfrissebb verzióját töltse le:

$ sudo apt update

Ha már korábban elindította ezt a parancsot, folytassa a következő lépéssel.

Most folytassa a MySQL telepítést:

$ sudo apt install mysql-server

Annak érdekében, hogy a telepítés sikeres legyen, ellenőrizze a MySQL verziót:

$ mysqld --version

Ha az eljárást sikeresen végrehajtotta, a telepített MySQL verzió kijelzésre kerül a kijelzőn.

Folytassa a MySQL biztonságossá tételével a MySQL-ben található parancsfájl futtatásával, amely növeli a biztonságot és korlátozza az adatbázisokhoz való hozzáférést:

$ sudo mysql_secure_installation

Ezen a ponton egy vezetett eljárás végigvezeti Önt a MySQL biztonsági szint konfigurálásán.

Először megkérdezi, hogy engedélyezni szeretné-e a jelszó-ellenőrzési rendszert. Ha engedélyezve van, a felhasználó jelszavának beállításakor a jelszót kiértékelésre kerül, és ha nem felel meg a biztonsági kritériumoknak, hibával elutasítja.

Később megkérdezi, hogy megváltoztatja-e a root jelszót az Ön által választottra (ha engedélyezi a jelszóellenőrző rendszert, akkor a biztonsági feltételeknek megfelelő jelszót kell megadni).

Biztonságos jelszó létrehozásához számos bevált módszer tartozik. Ebbe beletartozik:

  • nagy- és kisbetűk használata,

  • betűk és számok együttes használata,

  • ​nem alfanumerikus karakterek használata, például @ # $% ˆ &!,
  • korábban soha nem használt jelszavak használata.

Végül válassza ki, hogy eltávolítja-e a névtelen felhasználókat, teszteli-e az adatbázisokat, és letiltja-e a távoli bejelentkezést a root felhasználóval. A megfelelő szintű biztonság érdekében ajánlatos megerősíteni ezeket a változásokat.

Ezen a ponton erősítse meg a megjelenített engedélytáblázat frissítéseit az összes új biztonsági feltétel alkalmazásához.

Végül indítsa újra a szolgáltatást a változtatások alkalmazásához:

$ sudo service mysql restart

A Master/Slave replikáció konfigurálása

Miután a telepítést elvégezte mindkét szerveren (Master és Slave), folytassa a Master szerver konfigurálásával.

Először szerkessze a /etc/mysql/mysql.conf.d/mysqld.cnf konfigurációs fájlt az alábbiak szerint:

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

Mivel a Slave kiszolgálónak szükségszerűen távolról kell csatlakoznia a Master kiszolgálóhoz, meg kell győződnie arról, hogy a MySQL szolgáltatás képes-e fogadni a külső kapcsolatokat, a bind-address megváltoztatásával az alábbiak szerint:

bind-address            = 0.0.0.0

Miután elkészült, indítsa újra a szolgáltatást a módosítások alkalmazásához:

$ sudo service mysql restart

Próbából és értékelési célokból hozzon létre egy tesztadatbázist a fő szerveren (itt nevezzük "oktatóanyagnak") egy "számok" táblázattal, fiktív adatokkal. A konfigurációs eljárás befejezése után ellenőrizze, hogy az itt megadott összes adat szinkronban van-e a Slave szerverrel:

$ 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

Győződjön meg arról, hogy az imént megadott értékek szerepelnek-e a teszttáblázatban:

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

A számtáblának 3 példa sort kell tartalmaznia, a fentiek szerint.

Ezután hozzon létre hozzáférési adatokat a felhasználó számára, amelyeket a Slave adatbázis használhat:

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

Mielőtt folytatná a Slave szerver konfigurálását, a Master aktuális állapota megjelenik a kijelzőn, és a következő információkat mentésre kerülnek:

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)

Szüksége lesz ezekre az adatokra a Slave szerver konfigurálásakor.

Folytassa a MySQL shellből való kilépéssel:

mysql> exit
	Bye

Ezután mentse a teljes adatbázis-dumpot, hogy később azt betölthesse a Slave szerverre:

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

Vigye át az újonnan létrehozott fájlt a Slave gépre, és folytassa annak konfigurálásával, módosítva az /etc/mysql/mysql.conf.d/mysqld.cnf fájlt:

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

Felhívjuk figyelmét, hogy a kiszolgáló azonosítóját megváltoztatta a 2-es számra, és ne felejtse el megváltoztatni az összekapcsolási címet is az alábbiak szerint:

bind-address            = 0.0.0.0

Most indítsa újra a Slave szervert a változtatások alkalmazásához:

$ sudo service mysql restart

Most folytassa az adatbázis létrehozásával azon a néven, ahogy a Master szerveren is létre lett hozva:

$ sudo mysql -u root -p

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

Most importálja az újonnan létrehozott biztonsági másolatot, és indítsa el a Slave szervert a Master adatbázis által korábban mentett információk felhasználásával (MASTER_LOG_FILE és 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)

Ettől a pillanattól kezdve az adatbázisok valós időben szinkronizálódnak, és kiléphet a MySQL shellből.

A replikáció helyes működésének ellenőrzése

A replikáció működésének ellenőrzéséhez megpróbálhat adatokat beilleszteni a Master-be és ellenőrizni, hogy azok megfelelően érkeznek-e a Slave adatbázisba. Kezdje azzal, hogy új adatokat ad meg a Master-en a következőképpen:

$ 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

Ezután folytassa a Slave adatbázis lekérdezésével:

$ 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)

Amint láthatja, az új értékek (4 és 5) megérkeztek a Slave adatbázisba, így a szinkronizálás megfelelően működik.