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

Jak nasadit MariaDB Cluster 10.5 pro vysokou dostupnost

 

Nasazení MariaDB Cluster 10.5 je v ClusterControl podporováno od verze 1.8.1.

MariaDB 10.5 je vybavena:

  • Více podrobnějších oprávnění

  • Vylepšení výkonu InnoDB

  • Plná podpora GTID pro Galera Cluster

  • Další metadata pro replikaci a binární protokoly

  • Další příkazy syntaxe SQL (příkaz RETURNING na INSERT, EXCEPT ALL a INTERSECT ALL, …)

  • Aktualizace schématu výkonu tak, aby odpovídala MySQL 5.7

  • S3 Storage Engine

Další informace můžete zkontrolovat v našem předchozím blogu 

Další podrobnosti o této konkrétní verzi najdete v tom, co je nového v MariaDB 10.5? Některé z nejvýznamnějších změn od verze 10.4 do 10.5 zahrnují:

  • Konzistence GTID 

  • Nekonzistence/chyba při hlasování v klastru 

  • neblokující operace DDL (dostupné pouze u podnikové verze)

  • Černá skříňka (dostupná pouze u podnikové verze) 

  • Upgradovala knihovnu Galera wsrep, pro kterou je nejnovější verzí 26.4.6

Zpočátku se pro toto vydání očekávala podpora transakcí XA (nenechte se zmást, protože transakce XA jsou podporovány serverem MariaDB, ale ne Galera Cluster). Kvůli určitým dopadům na výkon však MariaDB Galera Cluster nepodporuje transakce XA.

V tomto blogu probereme, jak nasadit MariaDB Cluster 10.5 pro vysokou dostupnost.

MariaDB Cluster pro vysokou dostupnost

Cluster MariaDB je v podstatě cluster Galera, který používá implementaci MariaDB jako databázovou vrstvu pro rozhraní s enginem InnoDB nebo XtraDB. MariaDB Galera Cluster je prakticky synchronní multi-master cluster pro MariaDB. Je k dispozici pouze na Linuxu a podporuje úložné stroje XtraDB/InnoDB (ačkoli existuje experimentální podpora pro MyISAM — viz systémová proměnná wsrep_replicate_myisam). Při použití Galera Cluster lze čtení a zápis databáze směrovat do libovolného uzlu. Jakýkoli jednotlivý uzel lze ztratit bez přerušení provozu a bez použití složitých procedur převzetí služeb při selhání.

S povahou Galery přizpůsobenou v rámci MariaDB Cluster jde o řešení s vysokou dostupností se synchronní replikací, převzetím služeb při selhání a resynchronizací. Přináší výhody bez ztráty dat, bez zpoždění slave, škálovatelnosti čtení a zápisu a vysoké dostupnosti v různých datových centrech.

Nasazení MariaDB Cluster 10.5

MariaDB poskytuje přímočaré a snadné nastavení pro instalaci vašeho MariaDB Cluster 10.5. Ruční proces může být zdlouhavý, ale s automatickými skripty poskytovanými MariaDB lze úložiště nastavit v souladu s vaší cílovou verzí databáze, typem OS a verzí OS.

Pro toto cvičení mám následující 3-uzlové nastavení Galera Cluster s následujícími IP adresami:192.168.40.210, 192.168.40.220, 192.168.40.230.

Nastavení úložiště

Jak již bylo zmíněno, MariaDB má skript s názvem mariadb_repo_setup a jeho použití je snadné. Můžete zadat cílovou verzi databáze, typ operačního systému a verzi operačního systému.

Například instaluji pomocí EL 8:

curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup |  sudo bash -s -- --mariadb-server-version="mariadb-10.5" --os-type=rhel --os-version=8

nebo instalaci v Ubuntu Focal Fossa,

curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup |  sudo bash -s -- --mariadb-server-version="mariadb-10.5" --os-type=ubuntu --os-version=focal

Uvědomte si, že při použití skriptu mariadb_repo_setup vyžaduje jako závislost balíček apt-transport-https. Takže nejprve nainstalujte tento balíček, než budete moci využít výhod skriptu mariadb_repo_setup.

apt update

apt install apt-transport-https

Nyní spusťte příkaz do svých tří uzlů podle jejich OS. Verze MariaDB samozřejmě musí být 10.5.

Nastavení konfigurace MySQL

Konfigurační soubor závisí na prostředcích vašeho serveru, typu serverového prostředí a přidělené IP adrese. Pro tento blog můžete použít toto konfigurační nastavení MariaDB Cluster/PXC připravené pro produkci, které jsme použili k nasazení v našich databázích Percona XtraDB Cluster/MariaDB Cluster pomocí ClusterControl. Pozoruhodné proměnné, které potřebujete nebo které se mohou změnit, jsou následující:

  • innodb_buffer_pool_size — Nastavte fond vyrovnávacích pamětí od 70 % do 80 % dostupné paměti RAM vašeho serveru

  • wsrep_provider — zkompilovaná knihovna Path of the Galera. Pro Enterprise Linux musí být cesta  /usr/lib64/galera-4/libgalera_smm.so. Zatímco Debian/Ubuntu je v /usr/lib/galera/libgalera_smm.so.

  • wsrep_node_address — Toto je IP adresa uzlu

  • wsrep_sst_method — Buď to můžete změnit, ale doporučujeme použít mariabackup. Možné hodnoty, které si můžete vybrat, jsou rsync, mysqldump, xtrabackup, xtrabackup-v2, mariabackup.

  • wsrep_cluster_name — Název vašeho clusteru MariaDB. Musí být identický se všemi vašimi uzly v jediném clusteru MariaDB.

  • wsrep_cluster_address — Obsahuje adresy vašich uzlů v rámci clusteru. Musí to být platná IP adresa, název hostitele nebo FQDN.

  • wsrep_node_name — Název vašeho uzlu. Jméno lze použít v wsrep_sst_donor jako preferovaného dárce. Všimněte si, že více uzlů v clusteru může mít stejný název.

Pro provádění SST se uživatel a heslo pro následující sekce [mysqldump], [xtrabackup] a [mysqld] mohou změnit, pokud chcete. U tohoto cvičení to zjednodušíme a hodnoty můžete nechat tak, jak jsou.

Nyní zkopírujte konfigurační soubor a umístěte jej do /etc/my.cnf. Udělejte to se všemi svými třemi uzly Galera.

Instalace požadovaných balíčků

Nainstalujte balíčky pro všechny tři uzly Galera. Postupujte podle níže uvedeného příkazu podle prostředí cílového operačního systému.

Pro RHEL/Rocky/AlmaLinux:

sudo yum install MariaDB-server MariaDB-client galera-4 MariaDB-backup

Pro Debian/Ubuntu:

sudo apt update

sudo apt-get install mariadb-server galera-4 mariadb-client libmariadb3 mariadb-backup mariadb-common

Po dokončení instalace zastavte proces MariaDB a inicializujte cluster jako jeden uzel. Toto spustí váš Galera Cluster. V této fázi jej spouštím na uzlu 192.168.40.210.

$ /usr/bin/galera_new_cluster

Vytvořit uživatele SST/IST

Vytvořte záložního uživatele, který bude použit pro SST nebo IST. Následující příkazy SQL spouštějte pouze na prvním uzlu, ve kterém jste spustili cluster. V této fázi jsem to provedl v uzlu 192.168.40.210.

CREATE USER [email protected] IDENTIFIED BY 'backuppassword';

GRANT PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'backupuser'@'localhost';

V tuto chvíli jsme již nastaveni a připraveni připojit zbývající uzly.

Spusťte server MariaDB

Nyní jsme již nastavili první uzel. Jsme připraveni připojit zbývající uzly. Jednoduše, stačí spustit službu MariaDB. Stačí spustit příkaz níže:

systemctl start mariadb

Spusťte příkaz pro zbývající uzly jeden po druhém. V tomto okamžiku jsou všechny uzly synchronizovány.

Přidání steroidů pro váš MariaDB Cluster 10.5 pro vysokou dostupnost

Pravděpodobně nasazení MariaDB Cluster 10.5 pro vysokou dostupnost nemusí stačit vašim potřebám v produkčním nastavení. Přidání dalších steroidů, jako je instalace HAProxy společně s Keepalived pro vaši redundanci, přinese vyšší dostupnost pro vaše databázové prostředí.

Nastavení HAProxy a Keepalived pro získání požadované topologie a prostředí může přinést další potíže. Pomocí ClusterControl to však můžete automatizovat. Pomocí ClusterControl můžete nasadit svůj MariaDB Cluster 10.5 a přidat další řešení pro vyrovnávání zátěže, jako je ProxySQL, MaxScale nebo garbd. Ke svému clusteru můžete přidat Keepalived, abyste přidali redundanci a řešení automatického přepnutí při selhání v případě katastrofy.

Můžete si stáhnout bezplatnou zkušební verzi ClusterControl, která vám umožní nasadit tato řešení HA a spravovat celé vaše databázové operace z jediné tabule. Projdeme si, jak nasadit váš MariaDB 10.5 Cluster s ClusterControl.

Nasazení MariaDB 10.5 Cluster s ClusterControl

Jakmile nainstalujete ClusterControl, klikněte na ikonu v pravém horním rohu a zobrazí se průvodce nasazením jako níže.

Nastavíte to snadno. Postupujte podle série kroků založených na toku uživatelského rozhraní.

Nasazení HAProxy pro správu vyrovnávání zátěže

V tuto chvíli bych předpokládal, že máte svůj MariaDB Cluster 10.5 celý nastavený. Nyní nasadíme HAProxy:

Případně můžete přejít na Spravovat → Vyrovnávání zatížení → HAProxy.

Poté vyberte nebo zadejte adresu, kam se má HAProxy nainstalovat, a vyberte uzly Galera, které bude HAProxy monitorovat. Viz příklad níže:

Přidejte alespoň dvě nasazení HAProxy, abyste zvýšili dostupnost. Kdykoli dojde k výpadku jednoho z vašich HAProxy, vaše aplikace se přesměruje na druhý uzel, který je stále dostupný nebo online. To je velmi důležité, zvláště při řešení upgradů databáze nebo systému, kromě katastrofických nebo katastrofických událostí.

Nasadit Keepalived

Pro nasazení Keepalived použijete stejný postup, jak je znázorněno níže:

Pokud jste si všimli, mám dvě instance HAProxy, pro které nainstaluji Keepalived , který musí být přítomen v každém uzlu, kde běží HAProxy.

Dokončení vašeho MariaDB Cluster 10.5 s vysokou dostupností

Teď, když máme vše nastaveno, měli byste mít prostředí, které vypadá takto:

Zabalení

Toto nastavení pro váš cluster MariaDB 10.5 vám poskytuje výhody dosažení vysoké dostupnosti s několika devítkami. HAProxy vám poskytuje více možností vyvažování zátěže díky oddělení čtení a zápisu a Keepalived zajišťuje, že v případě, že jeden z vašich HAProxy zemře, přejde při selhání na další dostupný uzel. Vaše aplikace se připojí pouze k virtuální IP adrese (která následuje po VRRP) a nebude vyžadovat další konfiguraci nebo nastavení.

Chcete-li přidat ještě větší flexibilitu a oddělení čtení/zápisu pouhým hraním pouze na jednom portu, můžete nahradit HAProxy ProxySQL. Dosažení dokonalého nastavení pro vysokou dostupnost může být obtížné a každý má své nevýhody. Nejdůležitější však je, že je dosaženo nízkých až žádných prostojů.

Další tipy na vytvoření vysoce dostupného nastavení MariaDB najdete v tomto článku o nasazení replikace MariaDB.

Pokud chcete mít aktuální informace o databázových trendech a osvědčených postupech, přihlaste se k odběru našeho zpravodaje a sledujte nás na Twitteru a LinkedIn.


  1. Dynamické maskování dat v SQL Server pro pokročilé uživatele

  2. Externí tabulky Oracle

  3. Jak najít názvy sloupců pro všechny tabulky ve všech databázích na SQL Server

  4. SQL Jak aktualizovat SUM sloupce přes skupinu ve stejné tabulce