MariaDB Galera je multimaster cluster pro MariaDB. Od MariaDB 10.1 byly balíčky MariaDB Server a MariaDB Galera Server zkombinovány a balíčky Galera a jejich závislosti se instalují automaticky při instalaci MariaDB. V současné době MariaDB Galera Cluster podporuje pouze úložiště InnoDB/XtraDB. V MariaDB 10.0 a 5.5 si ji budete muset stáhnout samostatně. MariaDB Galera přidává redundanci pro databázi webu. V MariaDB Galera Cluster je více databázových serverů vzájemně propojeno a synchronizováno.
MariaDB Galera poskytuje spoustu funkcí, některé z nich jsou uvedeny níže:
- Synchronní replikace.
- Automatické spojení uzlů.
- Aktivní-aktivní multi-master topologie.
- Opravdová paralelní replikace na úrovni řádků.
- Škálovatelnost čtení a zápisu, menší latence klientů.
- Nezdařené uzly, automatické vyřazení z clusteru.
V tomto tutoriálu vysvětlíme, jak nastavit MariaDB Galera Cluster 10.1 se 3 uzly běžícími na serveru Ubuntu 16.04. Budeme také testovat replikaci databáze mezi všemi uzly.
Požadavky
- Tři uzly se serverem Ubuntu 16.04.
- Uzel1 se statickou IP adresou 192.168.0.102, Uzel2 se statickou IP adresou 192.168.0.103 a Uzel3 se statickou IP adresou 192.168.0.104 konfigurujte na vašem serveru.
- Uživatel bez oprávnění root s oprávněními sudo nastavenými na všech uzlech.
Začínáme
Nejprve budete muset aktualizovat všechny uzly na nejnovější verzi. Všechny je můžete aktualizovat pomocí následujícího příkazu:
sudo apt-get update -y
sudo apt-get upgrade -y
Poté restartujte všechny uzly, aby se tyto změny uplatnily. Poté se přihlaste jako uživatel sudo a přejděte k dalšímu kroku.
Nainstalovat MariaDB Galera
Balíčky MariaDB Server a MariaDB Galera Server jsou kombinovány ve verzi MariaDB 10.1. Ve výchozím nastavení není MariaDB 10.1 k dispozici ve výchozích úložištích Ubuntu, takže budete muset přidat úložiště MariaDB do všech uzlů.
Nejprve přidejte klíč úložiště MariaDB pomocí následujícího příkazu:
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
Dále přidejte úložiště a aktualizujte mezipaměť APT pomocí následujícího příkazu:
sudo add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://ftp.utexas.edu/mariadb/repo/10.1/ubuntu xenial main'
sudo apt-get update - y
Jakmile je úložiště aktualizováno, nainstalujte MariaDB pomocí následujícího příkazu:
sudo apt-get install mariadb-server rsync -y
Výše uvedený příkaz nainstaluje MariaDB s Galerou a několika závislostmi. Díly Galera zůstávají nečinné, dokud nejsou nakonfigurovány, jako plugin nebo úložný modul. Jakmile je MariaDB nainstalována na všech uzlech, můžete pokračovat v zabezpečení MariaDB.
Ve výchozím nastavení není instalace MariaDB zabezpečena, takže budete muset instalaci MariaDB zabezpečit. Můžete to provést spuštěním skriptu mysql_secure_installation:
sudo mysql_secure_installation
V tomto procesu budete požádáni o nastavení hesla uživatele root, odebrání anonymních uživatelů, zakázání vzdáleného přihlášení uživatele root a odstranění testovací databáze. Odpovězte na všechny otázky, jak je uvedeno níže:
Zadejte aktuální heslo pro uživatele root (zadejte pro žádné):Změnit heslo uživatele root? [A/n] nOdebrat anonymní uživatele? [A/n] YZakázat vzdálené přihlášení root? [A/N] YOdebrat testovací databázi a získat k ní přístup? [A/n] YNačíst nyní tabulky oprávnění? [A/n] A
Jakmile je MariaDB zabezpečena na všech uzlech, můžete přejít k dalšímu kroku.
Nastavení klastru MariaDB na Node1
Nejprve přejděte na Node1 a vytvořte konfigurační soubor pro Galera. Ve výchozím nastavení MariaDB čte konfiguraci z adresáře /etc/mysql/conf.d/. Chcete-li tak učinit, spusťte následující příkaz:
sudo nano /etc/mysql/conf.d/galera.cnf
Přidejte následující řádky:
[mysqld]binlog_format=ROWdefault-storage-engine=innodbinnodb_autoinc_lock_mode=2bind-address=0.0.0.0# Konfigurace poskytovatele Galerawsrep_on=ONwsrep_provider=/usr/lib/galera/libgalera_smmster_dress_cluster_cluster_name=libgalera_smmlerwpgalup "gcomm://192.168.0.102,192.168.0.103,192.168.0.104"# Konfigurace synchronizace Galerawsrep_sst_method=rsync# Konfigurace uzlu Galerywsrep_node_address="192.162"wsrep_10>nameAž budete hotovi, uložte soubor.
Poznámka: 192.168.0.102 je IP adresa uzlu 1
Přidat Node2 do Galera Cluster
Dále přejděte na Node2 a vytvořte konfigurační soubor pro Galera:
sudo nano /etc/mysql/conf.d/galera.cnfPřidejte následující řádky:
[mysqld]binlog_format=ROWdefault-storage-engine=innodbinnodb_autoinc_lock_mode=2bind-address=0.0.0.0# Konfigurace poskytovatele Galerawsrep_on=ONwsrep_provider=/usr/lib/galera/libgalera_smmster_dress_cluster_cluster_name=libgalera_smmlerwpgalup "gcomm://192.168.0.102,192.168.0.103,192.168.0.104"# Konfigurace synchronizace Galerawsrep_sst_method=rsync# Konfigurace uzlu Galerawsrep_node_address="192.1638.0.10>name"192.1638.0.10>Až budete hotovi, uložte soubor.
Poznámka: 192.168.0.103 je IP adresa uzlu 2.
Přidat Node3 do Galera Cluster
Dále přejděte na Node3 a vytvořte konfigurační soubor pro Galera:
sudo nano /etc/mysql/conf.d/galera.cnfPřidejte následující řádky:
[mysqld]binlog_format=ROWdefault-storage-engine=innodbinnodb_autoinc_lock_mode=2bind-address=0.0.0.0# Konfigurace poskytovatele Galerawsrep_on=ONwsrep_provider=/usr/lib/galera/libgalera_smmster_dress_cluster_cluster_name=libgalera_smmlerwpgalup "gcomm://192.168.0.102,192.168.0.103,192.168.0.104"# Konfigurace synchronizace Galerawsrep_sst_method=rsync# Konfigurace uzlu Galerawsrep_node_address="192.164"3node_0.10>NameAž budete hotovi, uložte soubor.
Poznámka: 192.168.0.104 je IP adresa uzlu 3.
Konfigurovat bránu firewall
Galera Cluster používá čtyři porty 3306 pro připojení klienta MySQL, 4444 pro State Snapshot Transfer, 4567 pro provoz replikace Galera Cluster a 4568 pro Incremental State Transfer. Budete tedy muset povolit všechny tyto porty pomocí brány firewall UFW. Můžete to provést spuštěním následujícího příkazu na všech uzlech:
Nejprve povolte UFW firewall pomocí následujícího příkazu:
povolit sudo ufwDále povolte všechny porty pomocí následujícího příkazu:
sudo ufw povolit 3306/tcp
sudo ufw povolit 4444/tcp
sudo ufw povolit 4567/tcp
sudo ufw povolit 4568/tcp
sudo ufw povolit 4567/udpPoté můžete zkontrolovat stav brány firewall pomocí následujícího příkazu:
stav sudo ufwJakmile je UFW firewall nakonfigurován na všech uzlech, můžete přejít k dalšímu kroku.
Spustit MariaDB Galera Cluster
Po úspěšné konfiguraci všech uzlů přejděte na Node1 a spusťte Galera Cluster.
Než bude možné spustit Galera, musíte zajistit, aby byla služba MariaDB zastavena na všech uzlech.
Spusťte následující příkaz na všech uzlech:
sudo systemctl stop mysqlNyní spusťte Galera Cluster na Node1 následujícím příkazem:
sudo galera_new_clusterNyní zkontrolujte, zda cluster běží nebo ne, pomocí následujícího příkazu:
mysql -u root -p -e "zobrazit stav jako 'wsrep_cluster_size'"Pokud je vše v pořádku, měli byste vidět následující výstup:
+--------------------+-------+| Název_proměnné | Hodnota |+--------------------+-------+| wsrep_cluster_size | 1 |+--------------------+-------+Na Node2 spusťte službu MariaDB:
sudo systemctl spustit mysqlMůžete zkontrolovat stav služby MariaDB, zda funguje nebo ne, pomocí následujícího příkazu:
sudo systemctl status mysqlPokud je vše v pořádku, měli byste vidět následující výstup:
?? mariadb.service - databázový server MariaDB Načteno:načteno (/lib/systemd/system/mariadb.service; povoleno; přednastaveno dodavatelem:povoleno) Aktivní:aktivní (běží) od ne 2017-09-17 10:11:20 EDT; před 10 minutami Proces:715 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (kód=ukončeno, stav=0/ÚSPĚCH) Proces:713 ExecStartPost=/etc/mysql/debian-start (kód=0 ukončeno, stav=0 /SUCCESS) Proces:545 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] &&VAR=|| VAR=`/usr/bin/galera_recovery`; [ $? -eq 0 ] &&systemctl set Proces:535 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (kód=ukončeno, stav=0/ÚSPĚCH) Proces:514 ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld (kód=ukončeno, stav=0/ÚSPĚCH) Hlavní PID:661 (mysqld) Stav:„Teď se berou vaše požadavky SQL...“ Úkoly:26 (limit:4915) CGroup:/system.slice/mariadb.service ??????661 /usr/sbin/mysqldSep 17 10:11:11 debian systemd[1]:Spouštění databázového serveru MariaDB... 17. září 10:11:15 debian mysqld[661]:2017-09-17 10:11:15 140287134630464 [Poznámka] /usr/sbin/mysqld (mysqld 10.1.26-MariaDB-0+deb90u1) začínající jako process[10Sep:21d system:system ]:Spuštěn databázový server MariaDB.Nyní by se váš druhý uzel měl automaticky propojit s clusterem. Můžete to ověřit pomocí následujícího příkazu:
mysql -u root -p -e "zobrazit stav jako 'wsrep_cluster_size'"Pokud vše funguje dobře, měla by být velikost clusteru nastavena na dvě:
+--------------------+-------+| Název_proměnné | Hodnota |+--------------------+-------+| wsrep_cluster_size | 2 |+--------------------+-------+Na Node3 spusťte službu MariaDB:
sudo systemctl start mysql
mysql -u root -p -e "zobrazit stav jako 'wsrep_cluster_size'"Pokud vše funguje dobře, měla by být velikost clusteru nastavena na tři:
+--------------------+-------+| Název_proměnné | Hodnota |+--------------------+-------+| wsrep_cluster_size | 3 |+--------------------+-------+Váš cluster nyní funguje a vzájemně komunikujete.
Test replikace databáze
Nyní, když jsou všechny uzly online, je čas otestovat replikaci databáze napříč Galera Clusterem. Začněme vytvořením databáze na Node1 a zkontrolujeme, zda je replikována na všechny uzly.
Nejprve se přihlaste ke konzoli MariaDb pomocí následujícího příkazu:
mysql -u root -pZadejte své root heslo a vytvořte databázi s názvem test_db:
MariaDB [(none)]> vytvořit databázi test_db;
MariaDB [(none)]> zobrazit databáze;+---------------------+| Databáze |+---------------------+| test_db |+--------------------+Nyní přejděte na Node2 a Node3 a zkontrolujte, zda replikace funguje nebo ne:
mysql -u root -p
MariaDB [(none)]> zobrazit databáze;+---------------------+| Databáze |+---------------------+| test_db |+--------------------+Gratulujeme! úspěšně jste nainstalovali a nakonfigurovali MariaDB Galera Cluster na serveru Ubuntu 16.04.
Závěr
Doufám, že nyní máte dostatek znalostí k instalaci a konfiguraci MariaDB Galera Cluster na Ubuntu 16.04. Nyní můžete snadno škálovat až na několik nebo dokonce desítky různých uzlů. Máte-li jakékoli pochybnosti nebo další dotazy, přejděte na odkaz Galera Cluster Doc
Ubuntu