Weboldal keresés

A MariaDB (Master-Slave) replikáció beállítása CentOS/RHEL 7 és Debian 8/9 rendszerben


Még akkor is, ha egyes informatikusok meghallják az „Adatbázis replikáció” kifejezést, gyakran arra asszociálnak, hogy ugyanabból az információból több másolatot kell készíteni, hogy elkerüljék az adatvesztést hardverhiba vagy adatsérülés esetén. Bár ez bizonyos mértékig igaz, az adatbázis-replikáció sokkal többet jelent, mint az adatbázis biztonsági mentésének és az adatok elérhetőségének általános koncepciója.

Az adatbázis-replikáció egyéb előnyei között a master-slave beállításban megemlíthetjük:

  1. A biztonsági mentések elvégezhetők a szolga kiszolgálón anélkül, hogy ez befolyásolná (és befolyásolná) a master írási műveleteit.
  2. Erőforrás-igényes műveletek (például adatelemzés) végrehajthatók a slave-en anélkül, hogy befolyásolnák a master teljesítményét.

Ebben a cikkben elmagyarázzuk, hogyan kell beállítani a mester-szolga replikációt a MariaDB 10.1-ben. A klasszikus replikációval szemben a MariaDB bevezette a globális tranzakcióazonosítók (GTID-k) koncepcióját a v10.0 verzióban, amely lehetővé teszi a slave cseréjét könnyen csatlakozhat egy másik mesterhez és replikálhat onnan. Ráadásul a slave állapotát összeomlásbiztos módon rögzíti (az állapot frissítése ugyanabban a tranzakcióban történik, mint az adatok frissítése).

Ha MySQL replikációt keres a CentOS/RHEL 6 alatt, kövesse ezt az útmutatót A MySQL (Master-Slave) replikáció beállítása CentOS/RHEL 6 rendszeren

A MariaDB 10.1 telepítése CentOS/RHEL 7 és Debian 8/9 rendszerben

Tesztelési környezetünk a következő gépekből áll (mindkettő CentOS 7):

Master: 192.168.0.18
Slave: 192.168.0.19

A MariaDB legújabb verziójának telepítéséhez hozzá kell adnunk a lerakataikat a szervereinkhez. Ha a MariaDB régebbi verzióját használja, mondjuk az 5.5-öt, fontolja meg a frissítést a legújabb 10.1-es verzióra az alábbi cikk segítségével.

  1. Frissítse a MariaDB 5.5-öt MariaDB 10.1-re

CentOS/RHEL-ben

Hozzon létre egy MariaDB.repo nevű fájlt az /etc/yum.repos.d fájlban a következő tartalommal a Master és a Slave< oldalon egyaránt rendszerek:

MariaDB 10.1 CentOS repository list - created 2016-01-23 14:16 UTC
http://mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Mentse el a fájlt, és telepítse a MariaDB-t mindkét szerverre a yum használatával:

yum update && yum install MariaDB-server MariaDB-client

Debian/Ubuntu alatt

Adja hozzá a kulcsot a csomagok és a MariaDB tárhely hitelesítéséhez:

apt-get install software-properties-common
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
add-apt-repository 'deb [arch=amd64,i386] http://mirror.edatel.net.co/mariadb/repo/10.1/debian jessie main'

Megjegyzés: Cserélje ki a disztribúció név és kódnév elemét a fenti kiemelt sorban.

Telepítés az apt-get paranccsal:

apt-get update
apt-get install mariadb-server

Miután telepítette a MariaDB-t, futtassa a mysql_secure_installation eljárást mind a mesteren, mind a slaven, és állítsunk be egy minta tesztadatbázist a fő gépen.

Minta MySQL-adatbázis beállítása a mesteren

Most beállítjuk a főszerveren az Alkalmazottak adatbázist a https://github.com/datacharmer/test_db webhelyről (amely 4 adatkészletet biztosít millió rekord hat táblán elosztva) két egyszerű lépésben:

Klónozza a tárat, és használja a mintaadatbázis importálásához a MariaDB-telepítésbe:

git clone https://github.com/datacharmer/test_db
cd test_db
mysql < employees.sql

A MySQL Server konfigurálása a Master rendszeren

A mester konfigurálásához kövesse az alábbi lépéseket:

1. LÉPÉS: Szerkessze az /etc/my.cnf fájlt. A [mysqld] szakaszban adja hozzá a következő négy sort:

log-bin
server_id=1
replicate-do-db=employees
bind-address=192.168.0.18

és indítsa újra a MariaDB-t:

systemctl restart mariadb

2. LÉPÉS: Jelentkezzen be a MariaDB szerverre root felhasználóként, hozza létre a felhasználói szolgát, és rendelje hozzá a szükséges engedélyeket:

MariaDB [(none)]> CREATE USER 'slave'@'localhost' IDENTIFIED BY 'SlavePassword';
MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO slave IDENTIFIED BY 'SlavePassword' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> FLUSH TABLES WITH READ LOCK;
MariaDB [(none)]> SHOW MASTER STATUS;

Az utolsó parancs (SHOW MASTER STATUS) visszaadja az aktuális pozíciót a bináris naplóban (a pontos koordinátákat, amelyek pontosan jelzik, hogy a slave melyik ponttól kezdje el a replikációt:

3. LÉPÉS: Lépjen ki a MariaDB promptból (az exit;-val), és a következő paranccsal készítsen pillanatképet az alkalmazottak adatbázisáról. Amikor lenyomja az Enter billentyűt, a rendszer kéri, hogy írja be a root jelszót, amelyet korábban a mysql_secure_installation segítségével állított be:

mysqldump -u root -p employees > employees-dump.sql

A dump befejezése után csatlakozzon újra az adatbázis-kiszolgálóhoz a táblák zárolásának feloldásához, majd lépjen ki:

MariaDB [(none)]> UNLOCK TABLES;
MariaDB [(none)]> exit;

4. LÉPÉS: Másolja a kiíratást a slave-re:

scp employees-dump.sql [email :/root/ 

5. LÉPÉS: Futtassa a mysql_upgrade eljárást a rendszertáblázatok frissítéséhez (a rendszer kéri a MariaDB root jelszó megadását):

mysql_upgrade -u root -p

6. LÉPÉS: Engedélyezze az adatbázis-szolgáltatást a tűzfalon keresztül:

firewall-cmd --add-service=mysql
firewall-cmd --add-service=mysql --permanent
firewall-cmd --reload

Most konfiguráljuk a szolgát.

A MySQL Server konfigurálása slave-en

A slave konfigurálásához kövesse az alábbi lépéseket:

1. LÉPÉS: Hozza létre a fiókot a replikációs feladatok végrehajtásához. Csatlakozzon a helyi MariaDB szerverhez:

mysql -u root –p

és írja be a korábban beállított jelszót.

2. LÉPÉS: Miután csatlakozott az adatbázis-kiszolgálóhoz, hozza létre a felhasználót és egy üres adatbázist, és adjon engedélyeket:

MariaDB [(none)]> CREATE DATABASE employees;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON employees.* TO 'slave'@'localhost' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;

3. LÉPÉS: Lépjen ki a MariaDB promptból, és töltse be a főkiszolgálón létrehozott kiíratást:

mysql -u root -p employees < employees-dump.sql

4. LÉPÉS: Szerkessze az /etc/my.cnf fájlt, és rendeljen hozzá egy kiszolgálóazonosítót a slave-hez a [mysqld] alatt szakaszban. Vegye figyelembe, hogy az 1-től eltérő egész számnak kell lennie, mivel az 1-et használtuk a főben:

server_id=2
replicate-do-db=employees

Indítsa újra az adatbázis-kiszolgálót:

systemctl restart mariadb

5. LÉPÉS: Futtassa a mysql_upgrade eljárást a rendszertáblázatok frissítéséhez (a rendszer kéri a MariaDB root jelszó megadását):

mysql_upgrade -u root -p

6. LÉPÉS: Miután a kiíratást importáltuk a slave-be, már csak néhány lépésünk van a replikálás megkezdéséhez. Jelentkezzen be az adatbázisba, és futtassa a következő parancsokat a MariaDB promptban. Különös figyelmet kell fordítani a MASTER_LOG_FILE és MASTER_LOG_POS változókra, amelyeknek meg kell egyeznie a SHOW MASTER STATUS által visszaadott értékekkel a „Master konfigurálása” 2. LÉPÉSÉBEN. felett.

MariaDB [(none)]> CHANGE MASTER TO
  MASTER_HOST='192.168.0.18',
  MASTER_USER='slave',
  MASTER_PASSWORD='SlavePassword',
  MASTER_PORT=3306,
  MASTER_LOG_FILE='master-bin.000001',
  MASTER_LOG_POS=314,
  MASTER_CONNECT_RETRY=10,
  MASTER_USE_GTID=current_pos;

7. LÉPÉS: Indítsa el a slave-et, és ellenőrizze állapotát anélkül, hogy kilépne a MariaDB promptból:

MariaDB [(none)]> START SLAVE;
MariaDB [(none)]> SHOW SLAVE STATUS\G;

Nem mintha erre most szüksége lenne, de vegye figyelembe, hogy leállíthatja a szolgát a következőkkel:

MariaDB [(none)]> STOP SLAVE;

ha a SHOW SLAVE STATUS\G; parancs bármilyen hibát ad vissza. Használja ezeket a hibákat a hibaelhárításhoz, majd futtassa a START SLAVE; parancsot az újbóli teszteléshez.

Tesztelje a MySQL/MariaDB adatbázis-replikációt

Adjunk hozzá egy rekordot a főszerver alkalmazottak táblájához:

MariaDB [(none)]> INSERT INTO employees (emp_no, birth_date, first_name, last_name, gender, hire_date) VALUES (500000, '1983-07-12', 'Dave', 'Null', 'M', '2014-12-12');

Ezután ellenőrizze, hogy ezt a változtatást megismételték-e a slave-ben:

MariaDB [(none)]> USE employees;
MariaDB [(none)]> SELECT * FROM employees WHERE emp_no=500000;

Mint látható, a replikáció megfelelően működik a mestertől a szolgáig.

Összegzés

Ebben a cikkben elmagyaráztuk, hogyan kell telepíteni a MariaDB legújabb verzióját CentOS/RHEL 7 és Debian 8/9 rendszerben, és megvitattuk, hogyan állíthat be mester-szolga replikációt GTID-kkel. További információkért tekintse meg a MariaDB replikációs útmutatót, és ne habozzon kapcsolatba lépni velünk az alábbi űrlap segítségével, ha kérdései vagy megjegyzései vannak.