I když někteří IT lidé slyší frázi „Replikace databáze “, často to spojují s potřebou mít více kopií stejných informací, aby se zabránilo ztrátě dat v případě selhání hardwaru nebo poškození dat. I když je to do určité míry pravda, replikace databáze obsahuje mnohem více než běžný koncept zálohování databáze a dostupnosti dat.
Mezi další výhody replikace databáze v nastavení master-slave můžeme zmínit:
- Zálohování lze provádět na podřízeném serveru, aniž by to ovlivnilo (a bylo ovlivněno) operace zápisu na hlavním serveru.
- Na podřízeném zařízení lze provádět operace náročné na zdroje (jako je analýza dat), aniž by to ovlivnilo výkon hlavního zařízení.
V tomto článku vysvětlíme, jak nastavit replikaci master-slave v MariaDB 10.1 . Na rozdíl od klasické replikace zavedla MariaDB koncept globálních ID transakcí (GTID ) ve v10.0 , který umožňuje snadno změnit slave, aby se mohl připojit a replikovat z jiného masteru. Kromě toho se stav podřízeného zařízení zaznamenává způsobem bezpečným při havárii (aktualizace stavu se provádějí ve stejné transakci jako aktualizace dat).
Pokud hledáte MySQL replikace pod CentOS/RHEL 6 , postupujte podle tohoto průvodce Nastavení replikace MySQL (Master-Slave) na CentOS/RHEL 6
Instalace MariaDB 10.1 v CentOS/RHEL 7 a Debian 8/9
Naše testovací prostředí se skládá z následujících počítačů (oba jsou CentOS 7 ):
Hlavní:192.168.0.18Slave:192.168.0.19
Abychom mohli nainstalovat nejnovější verzi MariaDB, budeme muset přidat jejich úložiště na naše servery. Pokud používáte starší verzi MariaDB, řekněme 5.5, zvažte upgrade na nejnovější verzi 10.1 pomocí níže uvedeného článku.
- Upgrade MariaDB 5.5 na MariaDB 10.1
V CentOS/RHEL
Vytvořte soubor s názvem MariaDB.repo
uvnitř /etc/yum.repos.d s následujícím obsahem na obou Master a Slave systémy:
# Seznam repozitářů MariaDB 10.1 CentOS – vytvořeno 23.01.2016 14:16 UTC# http://mariadb.org/mariadb/repositories/[mariadb]name =MariaDBbaseurl =http://yum.mariadb.org/ 10.1/centos7-amd64gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDBgpgcheck=1
Uložte soubor a nainstalujte MariaDB na oba servery pomocí yum:
# yum update &&yum install MariaDB-server MariaDB-client
V Debian/Ubuntu
Přidejte klíč pro ověřování balíčků a úložiště MariaDB:
# 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 hlavní'
Poznámka :Nahradit distribuční název a kódové jméno ve výše zvýrazněném řádku.
Nainstalujte pomocí apt-get příkaz:
# apt-get update# apt-get install mariadb-server
Jakmile nainstalujete MariaDB, spusťte mysql_secure_installation
postup na hlavním i podřízeném zařízení, nastavíme vzorovou testovací databázi na hlavním počítači.
Nastavení ukázkové databáze MySQL na Master
Nyní na hlavním serveru nastavíme Employees
databázi z https://github.com/datacharmer/test_db (který poskytuje datovou sadu 4 milionů záznamů rozmístěných v šesti tabulkách) ve dvou jednoduchých krocích:
Naklonujte úložiště a použijte jej k importu ukázkové databáze do vaší instalace MariaDB:
# git clone https://github.com/datacharmer/test_db# cd test_db# mysqlKonfigurace serveru MySQL na hlavním serveru
Chcete-li nakonfigurovat hlavní server, postupujte takto:
KROK 1: Upravte
/etc/my.cnf
soubor. Pod[mysqld]
přidejte následující čtyři řádky:log-binserver_id=1replicate-do-db=employeesbind-address=192.168.0.18a restartujte MariaDB:
# systemctl restart mariadbKROK 2: Přihlaste se k serveru MariaDB jako root, vytvořte uživatelského otroka a přidělte potřebná povolení:
MariaDB [(none)]> VYTVOŘIT UŽIVATELE 'slave'@'localhost' IDENTIFIKOVANÉ PODLE 'SlavePassword';MariaDB [(none)]> UDĚLEJTE REPLIKACI SLAVE NA *.* SLAVE IDENTIFIKOVANÉ PODLE 'SlavePassword' S MOŽNOSTÍ UDĚLENÍ;MariaDB [(none)]> FLUSH PRIVILEGES;MariaDB [(none)]> SPLACHOVACÍ STOLY SE ZÁMEKEM ČTENÍ;MariaDB [(none)]> ZOBRAZIT STAV HLAVNÍHO;Poslední příkaz (ZOBRAZIT STAV HLAVNÍHO STAVU ) vrátí aktuální pozici v binárním protokolu (přesné souřadnice, které přesně označují, od kterého bodu by měl slave začít replikaci:
KROK 3: Ukončete výzvu MariaDB (pomocí
exit;
) a pomocí následujícího příkazu pořiďte snímek databáze zaměstnanců. Když stisknete Enter , budete vyzváni k zadání hesla pro root, které jste dříve nastavili prostřednictvímmysql_secure_installation
:# mysqldump -u root -p zaměstnanci> zaměstnanci-dump.sqlPo dokončení výpisu se znovu připojte k databázovému serveru, abyste odemkli tabulky, a poté ukončete:
MariaDB [(none)]> ODEMKNOUT TABULKY;MariaDB [(none)]> exit;KROK 4: Zkopírujte výpis do podřízeného:
# scp staff-dump.sql [email protected]:/root/KROK 5: Spusťte
mysql_upgrade
postup pro upgrade systémových tabulek (budete vyzváni k zadání hesla root MariaDB):# mysql_upgrade -u root -pKROK 6: Povolit databázovou službu přes bránu firewall:
# firewall-cmd --add-service=mysql# firewall-cmd --add-service=mysql --permanent# firewall-cmd --reloadNyní nakonfigurujeme slave.
Konfigurace serveru MySQL na Slave
Chcete-li nakonfigurovat podřízenou jednotku, postupujte takto:
KROK 1: Vytvořte účet pro provádění úloh replikace. Připojte se k místnímu serveru MariaDB pomocí:
# mysql -u root –pa zadejte heslo, které jste nastavili dříve.
KROK 2: Po připojení k databázovému serveru vytvořte uživatele a prázdnou databázi a udělte oprávnění:
MariaDB [(none)]> VYTVOŘIT DATABÁZI zaměstnanci;MariaDB [(none)]> UDĚLEJTE VŠECHNA VÝHODY ZAMĚSTNANCŮM.* TOMU 'slave'@'localhost' S MOŽNOSTÍ UDĚLENÍ;MariaDB [(none)]> FLUSH PRIVILEGES;KROK 3: Ukončete výzvu MariaDB a načtěte výpis vytvořený na hlavním serveru:
# mysql -u root -p zaměstnanciKROK 4: Upravte
/etc/my.cnf
souboru k přiřazení ID serveru na slave pod[mysqld]
sekce. Všimněte si, že to musí být jiné celé číslo než 1 , jak jsme použili 1 v předloze:id_serveru=2replicate-do-db=zaměstnanciRestartujte databázový server:
# systemctl restart mariadbKROK 5: Spusťte
mysql_upgrade
postup pro upgrade systémových tabulek (budete vyzváni k zadání hesla root MariaDB):# mysql_upgrade -u root -pKROK 6: Jakmile byl výpis importován do podřízeného zařízení, zbývá nám jen pár kroků k zahájení replikace. Přihlaste se k databázi a spusťte následující příkazy ve výzvě MariaDB. Zvláštní pozornost věnujte
MASTER_LOG_FILE
aMASTER_LOG_POS
proměnné, které by měly odpovídat hodnotám vráceným funkcí ZOBRAZIT STAV HLAVNÍHO STAVU v KROKU 2 v části „Konfigurace hlavního zařízení“ výše.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_1_POS_CONRYD=31_4 /před>KROK 7: Spusťte slave a zkontrolujte jeho stav, aniž byste opustili výzvu MariaDB:
MariaDB [(none)]> START SLAVE;MariaDB [(none)]> ZOBRAZIT STAV SLAVE\G;Ne, že byste to teď potřebovali, ale nezapomeňte, že otroka můžete zastavit pomocí:
MariaDB [(none)]> STOP SLAVE;pokud
SHOW SLAVE STATUS\G;
příkaz vrátí všechny chyby. Tyto chyby použijte k odstraňování problémů a poté spusťteSTART SLAVE;
znovu otestovat.Testování replikace databáze MySQL/MariaDB
Pojďme přidat záznam k zaměstnancům tabulky na hlavním serveru:
MariaDB [(none)]> INSERT INTO zaměstnanců (emp_no, born_date, first_name, last_name, gender, recruit_date) VALUES (500000, '1983-07-12', 'Dave', 'Null', 'M', '2014-12-12');Poté ověřte, že tato změna byla replikována v podřízeném zařízení:
MariaDB [(none)]> USE zaměstnanci;MariaDB [(none)]> SELECT * FROM zaměstnanců WHERE emp_no=500000;Jak můžete vidět, replikace funguje správně od hlavního k podřízenému.
Shrnutí
V tomto článku jsme vysvětlili, jak nainstalovat nejnovější verzi MariaDB v CentOS/RHEL 7 a Debian 8/9 a diskutovali o tom, jak nastavit replikaci master-slave s GTID. Pro více informací se můžete podívat do MariaDB Replication Guide a v případě dotazů nebo připomínek nás neváhejte kontaktovat pomocí níže uvedeného formuláře.