MariaDB (Master-Slave) -replicaation määrittäminen CentOS/RHEL 7:ssä ja Debian 8/9:ssä


Vaikka jotkut IT-henkilöt kuulevat lauseen "Tietokannan replikointi", he yhdistävät sen usein tarpeeseen saada useita kopioita samoista tiedoista, jotta vältytään tietojen katoamiselta laitteistovian tai tietojen vioittumisen yhteydessä. Vaikka tämä on jossain määrin totta, tietokannan replikaatiossa on paljon muutakin kuin yleinen käsite tietokannan varmuuskopioinnista ja tietojen saatavuudesta.

Tietokannan replikoinnin muista eduista master-slave-asetuksissa voimme mainita:

  1. Varmuuskopiot voidaan tehdä orjapalvelimelle vaikuttamatta (ja vaikuttamatta) isäntäpalvelimen kirjoitustoimintoihin.
  2. Resurssiintensiivisiä operaatioita (kuten data-analyysiä) voidaan suorittaa orjalle vaikuttamatta isäntälaitteen suorituskykyyn.

Tässä artikkelissa selitämme, kuinka master-slave-replikointi määritetään MariaDB 10.1:ssä. Toisin kuin perinteinen replikointi, MariaDB esitteli Global Transaction IDs (GTIDs) -konseptin v10.0:ssa, joka mahdollistaa orjan vaihtamisen muodostaa yhteyden eri isäntälaitteeseen ja kopioida siitä helposti. Tämän lisäksi orjan tila tallennetaan kaatumisturvallisella tavalla (tilan päivitykset tehdään samassa tapahtumassa kuin tietojen päivitykset).

Jos etsit MySQL-replikaatiota CentOS/RHEL 6:ssa, seuraa tätä opasta MySQL (Master-Slave) -replikoinnin määrittäminen CentOS/RHEL 6:ssa

MariaDB 10.1:n asentaminen CentOS/RHEL 7:ään ja Debian 8/9:ään

Testausympäristömme koostuu seuraavista koneista (molemmat ovat CentOS 7):

Master: 192.168.0.18
Slave: 192.168.0.19

MariaDB:n uusimman version asentamiseksi meidän on lisättävä niiden arkistot palvelimillemme. Jos käytät MariaDB:n vanhempaa versiota, esimerkiksi 5.5, harkitse päivittämistä uusimpaan versioon 10.1 alla olevan artikkelin avulla.

  1. Päivitä MariaDB 5.5 versioon MariaDB 10.1

CentOS/RHEL:ssä

Luo tiedosto nimeltä MariaDB.repo kohtaan /etc/yum.repos.d, jossa on seuraava sisältö sekä Master- että Slave<. järjestelmät:

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

Tallenna tiedosto ja asenna MariaDB molemmille palvelimille käyttämällä yumia:

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

Debianissa/Ubuntussa

Lisää avain pakettien ja MariaDB-tietovaraston todentamiseksi:

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'

Huomaa: korvaa jakelun nimi ja koodinimi yllä korostetulla rivillä.

Asenna apt-get-komennolla:

apt-get update
apt-get install mariadb-server

Kun olet asentanut MariaDB:n, suorita mysql_secure_installation-proseduuri sekä isäntä- että orjalaitteessa. Asetetaan sitten esimerkkitestitietokanta isäntäkoneeseen.

MySQL-mallitietokannan määrittäminen Masteriin

Määritämme nyt pääpalvelimelle Työntekijät-tietokannan osoitteesta https://github.com/datacharmer/test_db (joka tarjoaa 4 tietojoukon miljoonaa tietuetta kuuteen taulukkoon) kahdessa yksinkertaisessa vaiheessa:

Kloonaa arkisto ja tuo mallitietokanta sen avulla MariaDB-asennukseesi:

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

MySQL-palvelimen määrittäminen Masterissa

Voit määrittää isäntälaitteen seuraavasti:

VAIHE 1: Muokkaa /etc/my.cnf-tiedostoa. Lisää [mysqld]-osioon seuraavat neljä riviä:

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

ja käynnistä MariaDB uudelleen:

systemctl restart mariadb

VAIHE 2: Kirjaudu MariaDB-palvelimeen pääkäyttäjänä, luo käyttäjäorja ja määritä tarvittavat luvat:

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;

Viimeinen-komento (SHOW MASTER STATUS) palauttaa nykyisen sijainnin binäärilokissa (tarkat koordinaatit, jotka osoittavat tarkalleen, mistä pisteestä orjan tulee aloittaa replikointi:

VAIHE 3: Poistu MariaDB-kehotteesta (komennolla exit;) ja käytä seuraavaa komentoa ottaaksesi tilannekuvan työntekijöiden tietokannasta. Kun painat Enter-näppäintä, sinua pyydetään kirjoittamaan rootin salasana, jonka määritit aiemmin mysql_secure_installation-sovelluksella:

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

Kun vedos on valmis, muodosta yhteys tietokantapalvelimeen uudelleen avataksesi taulukoiden lukituksen ja poistu sitten:

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

VAIHE 4: Kopioi vedos orjaan:

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

VAIHE 5: Päivitä järjestelmätaulukot suorittamalla mysql_upgrade (sinua pyydetään antamaan MariaDB-pääkäyttäjän salasana):

mysql_upgrade -u root -p

VAIHE 6: Salli tietokantapalvelu palomuurin läpi:

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

Määritetään nyt orja.

MySQL-palvelimen määrittäminen orjalla

Määritä orja seuraavasti:

VAIHE 1: Luo tili suorittaaksesi replikointitehtävät. Yhdistä paikalliseen MariaDB-palvelimeen seuraavasti:

mysql -u root –p

ja anna aiemmin määrittämäsi salasana.

VAIHE 2: Kun olet muodostanut yhteyden tietokantapalvelimeen, luo käyttäjä ja tyhjä tietokanta ja myönnä käyttöoikeudet:

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

VAIHE 3: Poistu MariaDB-kehotteesta ja lataa pääpalvelimeen luotu vedos:

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

VAIHE 4: Muokkaa /etc/my.cnf-tiedostoa ja määritä palvelimen ID orjalle [mysqld] -osio. Huomaa, että sen on oltava eri kokonaisluku kuin 1, koska käytimme perusversiossa arvoa 1:

server_id=2
replicate-do-db=employees

Käynnistä tietokantapalvelin uudelleen:

systemctl restart mariadb

VAIHE 5: Päivitä järjestelmätaulukot suorittamalla mysql_upgrade (sinua pyydetään antamaan MariaDB-pääkäyttäjän salasana):

mysql_upgrade -u root -p

VAIHE 6: Kun dump on tuotu orjaan, on vain muutama vaihe aloittaaksesi replikoinnin. Kirjaudu tietokantaan ja suorita seuraavat komennot MariaDB-kehotteessa. Kiinnitä erityistä huomiota muuttujiin MASTER_LOG_FILE ja MASTER_LOG_POS, joiden tulee vastata SHOW MASTER STATUS -parametrin palauttamia arvoja VAIHEESSA 2 "Masterin määrittäminen" edellä.

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;

VAIHE 7: Käynnistä orja ja tarkista sen tila poistumatta MariaDB-kehotteesta:

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

Ei sillä, että tarvitset tätä nyt, mutta huomaa, että voit pysäyttää orjan seuraavasti:

MariaDB [(none)]> STOP SLAVE;

jos SHOW SLAVE STATUS\G;-komento palauttaa virheitä. Käytä näitä virheitä vianmääritykseen ja suorita sitten START SLAVE; testataksesi uudelleen.

Testaa MySQL/MariaDB-tietokannan replikointia

Lisätään tietue pääpalvelimen työntekijät-taulukkoon:

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');

Varmista sitten, että tämä muutos replikoitiin orjassa:

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

Kuten näet, replikointi toimii oikein isännältä orjaan.

Yhteenveto

Tässä artikkelissa olemme selostaneet, kuinka MariaDB:n uusin versio asennetaan CentOS/RHEL 7:ään ja Debian 8/9:ään, ja keskustelimme siitä, kuinka master-slave -replikointi määritetään GTID:illä. Saat lisätietoja MariaDB:n replikointioppaasta. Älä epäröi ottaa meihin yhteyttä alla olevalla lomakkeella, jos sinulla on kysyttävää tai kommentteja.