A mai cikkünkben egy MySQL replika készítésének lépéseit fogom röviden leírni. A cikkben található tutorial egy megbízásom miatt készült, melyben Ubuntu 16.04 LTS szerver alapokon kellett egy master-slave MySQL replikát összerakni.
A master-slave MySQL replika esetén a külső alkalmazások a master szerveren lévő MySQL adatbázisokhoz csatlakoznak, az azokon végzett módosítások pedig automatikusan szinkronizációra kerülnek a slave szerverre. A master-slave felállás előnye, hogy az adatbázisokról real time másolat készül, amit a master szerver kiesése esetén kézzel egy-két perc alatt használhatóvá lehet tenni. A slave szerver ideiglenes kiesése esetén a szinkronizálás annak újra elérhetővé válása után folytatódik. Üzemeltetési szempontból azért is hasznos, mert az adatbázismentéseket lehet futtatni a slave szerveren, ezzel tehermentesítve a mastert. Némely alkalmazásfejlesztő az alkalmazása gyorsítása érdekében úgy írja meg szoftverét, hogy azon read only query-ket, ahol egy-két rekord eltérésnyi hiba elfogadható, a slave szerveren futtatják, ezzel tehermentesítve a master szervert, és gyorsítva a szoftvert.
Először is, mindkét Ubuntura feltelepítjük a MySQL szervert:
apt install mysql-server mysql-client -y
Ezután a master szerveren elvégzünk egy-két konfigurációt:
service mysql stop
vi /etc/mysql/mysql.conf.d/mysqld.cnf # végére alábbi négy sor hozzáadása:
server-id = 250 # beállítunk egy egyedi szerver azonosítót - nálam ez az IP cím utolsó tagja lett
binlog_ignore_db = mysql
log-error = /var/log/mysql/mysql.err
log-bin = /var/log/mysql/mysql-replication.log
Fentieket kívül kommentezzük ki a bind-address sort is a mysqld.cnf-ből.
TODO: érdemes tűzfallal védeni ez esetben a szervert, hogy ne lehessen bárhonnan elérni a MySQL portokat (pl. iptables + fail2ban kombinációval). Erre nekem most nem volt szükségem, mivel egy komplett tűzfal volt a szerverek előtt.
service mysql restart
mysql # alábbi három parancs futtatása
CREATE USER masterslave@'%' IDENTIFIED BY 'IdeJonATavoliKapcsolodastBiztositoFelhasznaloJelszava';
GRANT SELECT, PROCESS, FILE, SUPER, REPLICATION CLIENT, REPLICATION SLAVE, RELOAD ON *.* TO masterslave@'%';
FLUSH PRIVILEGES;
Most következik a slave szerver konfigurációja:
service mysql stop
vi /etc/mysql/mysql.conf.d/mysqld.cnf # végére alábbi sor hozzáadása:
server-id = 251 # beállítunk egy egyedi szerver azonosítót - nálam ez az IP cím utolsó tagja lett
A fenti műveletek elvégzése után feltöltjük ugyanazt a teszt adatbázist mindkét szerverre. (Nem vagyok biztos benne, hogy ez a művelet szükséges - az általam kiindulási alapnak vett dokumentációkban szerepelt. Mindenesetre a replika beállítása után alapértelmezetten az újonnan létrehozott adatbázisok is automatikusan replikálásra kerülnek a slavere.)
Ezután a master szerveren lekérünk egy-két egyedi információt, ami szükséges lesz ahhoz, hogy később párosítsuk a slave szerverrel.
Fontos! A művelet alatt LOCK-oljuk a master szerveren az adatbázist, így az nem lesz írható!
mysql # alábbi két parancs kimenetét jegyezzük fel (file és position érték fog kelleni)
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
Ezután a slave szervert párosítjuk a master szerverrel:
mysql
CHANGE MASTER TO MASTER_HOST='192.168.1.250', MASTER_USER='masterslave', MASTER_PASSWORD='IdeJonATavoliKapcsolodastBiztositoFelhasznaloJelszava', MASTER_LOG_FILE='mysql-replication.000001', MASTER_LOG_POS=8794; # ennél a parancsnál a mysql-replication.000001 és a 8794 sztringeket cseréljük ki az előző bekezdésben lekérdezett információkkal, valamint a 192.168.1.250 részt a master IP címével
START SLAVE;
SHOW SLAVE STATUS; # akkor sikerült megfelelően a párosítás, ha a "Waiting for master to send event." üzenet fogad
Végezetül a master szerveren feloldjuk a lockolást:
mysql
UNLOCK TABLES;
A fenti konfiguráció után van egy működő mysql replikánk.
Legutóbbi bejegyzések
Kulcsszavak
#HA #acer #adattárolás #android #api #apple #apt #aszinkron #authenticator #backup #bareos #bash #big data #biztonság #bookstack #cisco #citrix #cli #cloud #cms #crypt #debian #desktop #dump #duplikált #előadás #expect #fstab #fájl #generáció #gif #github #gmail #google #google digital workshop #gépház #helpdesk #hibajavítás #hálózat #imagick #installer #iphone #iscsi #iso #ispconfig #it #jelszó #joomla #jpeg #konvertálás #kpartx #képzés #könyv #könyvajánló #lightdm #linux #locale #lubuntu #luks #lvm #maian support #megacli #memória #mentés #mikrotik #mount #munkacsoport #mysql #nextcloud #nfs #openvz #perl #php #png #pv #raid #raw #samba #sftp #shell #smartctl #smartmontools #snapshot #soho #ssh #ssl #storage #swap #switch #szoftver #szolgálati közlemény #team #telefon #thor #tool #ubuntu #unifi #vernee #vezetés #vg #vhd #virtualizáció #webhoszting #while #wifi #wiki #wordpress #xen #xenserver