sql >> Databáze >  >> RDS >> MariaDB

Jak nastavit replikaci MariaDB (Master-Slave) v CentOS/RHEL 7 a Debian 8/9

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:

  1. 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.
  2. 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.

  1. 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# mysql  

Konfigurace 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.18

a restartujte MariaDB:

# systemctl restart mariadb

KROK 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ím mysql_secure_installation :

# mysqldump -u root -p zaměstnanci> zaměstnanci-dump.sql

Po 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 -p

KROK 6: Povolit databázovou službu přes bránu firewall:

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

Nyní 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 –p

a 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ěstnanci  

KROK 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ěstnanci

Restartujte databázový server:

# systemctl restart mariadb

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 -p

KROK 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 a MASTER_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ťte START 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.


  1. Proč používat Select Top 100 Percent?

  2. CHYBA:oprávnění odepřeno pro schéma user1_gmail_com na znaku 46

  3. dbms_lob.getlength() vs. length() k nalezení velikosti blob v oracle

  4. Jak zjistit, zda je MySQLnd aktivním ovladačem?