sql >> Database teknologi >  >> RDS >> MariaDB

Implementering af MySQL Galera Cluster 4.0 på Amazon AWS EC2

Galera Cluster er en af ​​de mest populære løsninger med høj tilgængelighed til MySQL. Det er en praktisk talt synkron klynge, som hjælper med at holde replikeringsforsinkelsen under kontrol. Takket være flowkontrollen kan Galera-klyngen selv drosle og tillade flere belastede noder at indhente resten af ​​klyngen. Den seneste udgivelse af Galera 4 bragte nye funktioner og forbedringer. Vi dækkede dem i et blogindlæg, hvor vi talte om MariaDB 10.4 Galera Cluster og et blogindlæg, der diskuterede eksisterende og kommende funktioner i Galera 4.

Hvordan klarer Galera 4 sig, når den bruges i Amazon EC2? Som du sikkert ved, tilbyder Amazon Relational Database Services, som er designet til at give brugerne en nem måde at implementere højt tilgængelig MySQL-database. Min kollega, Ashraf Sharif, sammenlignede failover-tider for RDS MySQL og RDS Aurora i sit blogindlæg. Fejltider for Aurora ser virkelig godt ud, men der er men. Først og fremmest er du tvunget til at bruge RDS. Du kan ikke implementere Aurora på de forekomster, du administrerer. Hvis de eksisterende funktioner og muligheder, der er tilgængelige i Aurora, ikke er nok for dig, har du ingen anden mulighed end at implementere noget på egen hånd. Her kommer Galera ind. Galera er i modsætning til Aurora ikke en proprietær sort boks. Det er derimod en open source-software, som frit kan bruges på alle understøttede miljøer. Du kan installere Galera Cluster på AWS Elastic Computing Cloud (EC2) og derigennem bygge et meget tilgængeligt miljø, hvor failover næsten er øjeblikkeligt:​​Så snart du kan opdage nodens fejl, kan du genoprette forbindelsen til den anden Galera-node. Hvordan implementerer man Galera 4 i EC2? I dette blogindlæg vil vi tage et kig på det, og vi vil give dig en trin-for-trin guide, der viser, hvad der er den enkleste måde at opnå det på.

Installation af en Galera 4-klynge på EC2

Første trin er at skabe et miljø, som vi vil bruge til vores Galera-klynge. Vi vil gå med Ubuntu 18.04 LTS virtuelle maskiner.

Vi vil gå med t2.medium instansstørrelse til formålet med denne blog stolpe. Du bør skalere dine forekomster baseret på den forventede belastning.

Vi skal installere tre noder i klyngen. Hvorfor tre? Vi har en blog, der forklarer, hvordan Galera opretholder høj tilgængelighed.

Vi vil konfigurere lagring for disse forekomster.

Vi vil også vælge den rigtige sikkerhedsgruppe til noderne. Igen, i vores tilfælde er sikkerhedsgruppen ret åben. Du bør sikre dig, at adgangen er begrænset så meget som muligt - kun noder, der skal have adgang til databaser, skal have lov til at oprette forbindelse til dem.

Til sidst vælger vi enten et eksisterende nøglepar eller opretter et nyt. Efter dette trin vil vores tre forekomster blive lanceret.

Når de er oppe, kan vi oprette forbindelse til dem via SSH og begynde at konfigurere databasen.

Vi besluttede at gå med 'node1, node2, node3' navngivningskonvention, derfor var vi nødt til at redigere /etc/hosts på alle noder og liste dem sammen med deres respektive lokale IP'er. Vi lavede også ændringen i /etc/hostname for at bruge det nye navn til noder. Når dette er gjort, kan vi begynde at opsætte vores Galera-klynge. I skrivende stund er den eneste leverandør, der leverer GA-version af Galera 4, MariaDB med sin 10.4, derfor vil vi bruge MariaDB 10.4 til vores klynge. Vi vil fortsætte med installationen ved hjælp af forslagene og guiderne fra MariaDB-webstedet.

Installation af en MariaDB 10.4 Galera Cluster

Vi starter med at forberede repositories:

wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup

bash ./mariadb_repo_setup

Vi downloadede script, som er beregnet til at konfigurere lagrene, og vi kørte det for at sikre, at alt er konfigureret korrekt. Dette konfigurerede arkiver til at bruge den seneste MariaDB-version, som i skrivende stund er 10.4.

[email protected]:~# apt update

Hit:1 http://eu-central-1.ec2.archive.ubuntu.com/ubuntu bionic InRelease

Hit:2 http://eu-central-1.ec2.archive.ubuntu.com/ubuntu bionic-updates InRelease

Hit:3 http://eu-central-1.ec2.archive.ubuntu.com/ubuntu bionic-backports InRelease

Hit:4 http://downloads.mariadb.com/MariaDB/mariadb-10.4/repo/ubuntu bionic InRelease

Ign:5 http://downloads.mariadb.com/MaxScale/2.4/ubuntu bionic InRelease

Hit:6 http://downloads.mariadb.com/Tools/ubuntu bionic InRelease

Hit:7 http://downloads.mariadb.com/MaxScale/2.4/ubuntu bionic Release

Hit:8 http://security.ubuntu.com/ubuntu bionic-security InRelease

Reading package lists... Done

Building dependency tree

Reading state information... Done

4 packages can be upgraded. Run 'apt list --upgradable' to see them.

Som du kan se, er repositories til MariaDB 10.4 og MaxScale 2.4 blevet konfigureret. Nu kan vi fortsætte og installere MariaDB. Vi vil gøre det trin for trin, node for node. MariaDB giver guide til, hvordan du skal installere og konfigurere klyngen.

Vi skal installere pakker:

apt-get install mariadb-server mariadb-client galera-4 mariadb-backup

Denne kommando installerer alle nødvendige pakker for at MariaDB 10.4 Galera kan køre. MariaDB opretter et sæt konfigurationsfiler. Vi tilføjer en ny, som vil indeholde alle de nødvendige indstillinger. Som standard vil det være inkluderet i slutningen af ​​konfigurationsfilen, så alle tidligere indstillinger for de variabler, vi indstiller, vil blive overskrevet. Ideelt set ville du bagefter redigere eksisterende konfigurationsfiler for at fjerne de indstillinger, vi har lagt i galera.cnf for at undgå forvirring, hvor en given indstilling er konfigureret.

[email protected]:~# cat /etc/mysql/conf.d/galera.cnf

[mysqld]

bind-address=10.0.0.103

default_storage_engine=InnoDB

binlog_format=row

innodb_autoinc_lock_mode=2



# Galera cluster configuration

wsrep_on=ON

wsrep_provider=/usr/lib/galera/libgalera_smm.so

wsrep_cluster_address="gcomm://10.0.0.103,10.0.0.130,10.0.0.62"

wsrep_cluster_name="Galera4 cluster"

wsrep_sst_method=mariabackup

wsrep_sst_auth='sstuser:pa55'



# Cluster node configuration

wsrep_node_address="10.0.0.103"

wsrep_node_name="node1"

Når konfigurationen er klar, kan vi starte.

[email protected]:~# galera_new_cluster

Dette burde starte den nye klynge på den første node. Dernæst bør vi fortsætte med lignende trin på de resterende noder:Installer nødvendige pakker og konfigurer dem med tanke på, at den lokale IP ændres, så vi er nødt til at ændre galera.cnf-filen i overensstemmelse hermed.

Når konfigurationsfilerne er klar, skal vi oprette en bruger, som skal bruges til Snapshot State Transfer (SST):

MariaDB [(none)]> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'pa55';

Query OK, 0 rows affected (0.022 sec)

MariaDB [(none)]> GRANT PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';

Query OK, 0 rows affected (0.022 sec)

Vi bør gøre det på den første node. De resterende noder vil slutte sig til klyngen, og de vil modtage et øjebliksbillede af fuld tilstand, så brugeren vil blive overført til dem. Nu er det eneste, vi skal gøre, at starte de resterende noder:

[email protected]:~# service mysql start

[email protected]:~# service mysql start

og bekræft, at klyngen faktisk er blevet dannet:

MariaDB [(none)]> show global status like 'wsrep_cluster_size';

+--------------------+-------+

| Variable_name      | Value |

+--------------------+-------+

| wsrep_cluster_size | 3     |

+--------------------+-------+

1 row in set (0.001 sec)

Alt er godt, klyngen er oppe, og den består af tre Galera-noder. Det lykkedes os at implementere MariaDB 10.4 Galera Cluster på Amazon EC2.


  1. Sådan opdateres forbundne tabeller i Access 2016, efter at backend-databasen er flyttet til en ny placering

  2. Sådan fungerer OCTET_LENGTH()-funktionen i MySQL

  3. Beskytter mysql_real_escape_string() FULDSTÆNDIG mod SQL-injektion?

  4. TO_CHAR(datotid) Funktion i Oracle