sql >> Database teknologi >  >> RDS >> Mysql

Installation af Percona XtraDB Cluster på CentOS 7

Velkommen til en anden blog. Denne gang er jeg her for at vise jer, hvordan man opsætter percona XtraDB cluster. Ok, så hvad er percona XtraDB? XtraDB er en MySQL klyngeløsning, den sikrer høj tilgængelighed, forhindrer nedetid og datatab og giver lineær skalerbarhed til et voksende miljø. Når du udfører en forespørgsel, udføres den lokalt på noden. Alle data er tilgængelige lokalt, ingen behov for fjernadgang. En god løsning til at skalere en læst arbejdsbyrde. Du kan sætte læseforespørgsler til enhver af noderne. Når du har installeret percona XtraDB, behøver du ikke installere MySQL separat, XtraDB henter det fra percona-lageret, og du vil være i stand til at gøre klyngen klar efter at have gennemgået denne artikel.

forudsætning:

For at konfigurere en percona XtraDB-klynge på Linux-servere har vi brug for tre servere, information er som følgende:

server percona1:192.168.56.110

server percona2:192.168.56.113

Server percona3:192.168.56.114

OS:CentOS 7

du kan også gå med to servere, men det officielle dokument anbefaler et ulige antal servere. fx 3,5,7 og så videre. bare ikke gå efter et lige antal noder, de kalder det split-brain. En split-brain er en tilstand, hvor noderne mister kontakten med hinanden og derefter begge forsøger at tage kontrol over delte ressourcer eller samtidig levere klyngetjenesten

BEMÆRK:Vi har brug for root-adgang på den node, hvor vi skal installere Percona XtraDB Cluster
(enten logget ind som bruger med root-rettigheder eller være i stand til at køre kommandoer med Sudo

Forhåndskontrol:

Tilføj nedenstående poster i din /etc/hosts-fil ——> på alle servere (percona1,percona2,percona3)

192.168.56.110 percona1.localdomain percona1
192.168.56.113 percona2.localdomain percona2
192.168.56.114 percona3.localdomain percona3

Åbn firewall-porte:

Vi skal åbne nedenstående porte på alle servere (percona1,percona2,percona3)
3306
4444
4567
4568

firewall-cmd --zone=public --add-service=mysql --permanent
firewall-cmd --zone=public --add-port=3306/tcp --permanentfirewall-cmd --zone=public --add-port=4567/tcp --permanentfirewall-cmd --zone=public - -add-port=4568/tcp --permanentfirewall-cmd --zone=public --add-port=4444/tcp --permanentfirewall-cmd --zone=public --add-port=4567/udp --permanentfirewall- cmd --reloadfirewall-cmd --list-all
[[email protected] ~]# firewall-cmd --list-allpublic (active)target:defaulticmp-block-inversion:nointerfaces:enp0s3 enp0s8sources:services:ssh dhcpv6-client mysqlports:3306/tcp 4567/t 4568/tcp 4444/tcp 4567/udpprotocols:masquerade:noforward-ports:source-ports:icmp-blocks:rige regler

Deaktiver SELinux:——->på alle servere(percona1,percona2,percona3)

[[email protected] ~]# setenforce 0

Dette vil sætte SELinux i tilladelig tilstand for den aktuelle session, men vi er nødt til at deaktivere den permanent.
rediger /etc/sysconfig/selinux filsæt selinux variabel som deaktiveret på alle servere (percona1,percona2,percona3):
vi /etc/sysconfig/selinux
SELINUX=deaktiveret

Alle servere skal være tilgængelige for hinanden, for at kontrollere tilgængeligheden ping hver server.

Installer under forudgående RPM:——->på alle servere(percona1,percona2,percona3)

epel-release
libev
socat

[[email protected] ~]# yum -y install epel-release Installed:epel-release.noarch 0:7-11[[email protected] yum.repos.d]# yum -y install libev Installed :libev.x86_64 0:4.15-7.el7[[email protected] Desktop]# yum -y install socat Installed:socat.x86_64 0:1.7.3.2-2.el7

Tilføj Percona Repository:——->på alle servere(percona1,percona2,percona3)

Nu vil vi tilføje percona-lageret i alle de tre servere (percona1, percona2, percona3):

[[email protected] ~]# sudo yum -y install https://repo.percona.com/yum/percona-release-latest.noarch.rpmInstalled:percona-release.noarch 0:1.0-13 Complete !

Installer Percona-XtraDB-Cluster:——->på alle servere(percona1,percona2,percona3)

[[email protected] ~]# yum install -y Percona-XtraDB-Cluster-57Loaded plugins:fastestmirror, langpacksIndlæser spejlhastigheder fra cachelagret værtsfil...Installeret:Percona-XtraDB-Cluster-57.x86_74 0:5. .27-31.39.1.el7 Percona-XtraDB-Cluster-shared-57.x86_64 0:5.7.27-31.39.1.el7 Percona-XtraDB-Cluster-shared-compat-57.x86_64 0:5.7.397-31. .1.el7Dependency installeret:Percona-XtraDB-Cluster-client-57.x86_64 0:5.7.27-31.39.1.el7 Percona-XtraDB-Cluster-server-57.x86_64 0:5.7.27-31.1.39. percona-xtrabackup-24.x86_64 0:2.4.17-1.el7 perl-DBD-MySQL.x86_64 0:4.023-6.el7 perl-Digest.noarch 0:1.17-245.el7 perl-Digest-MD64.x086 :2.52-3.el7 qpress.x86_64 0:11-1.el7Replaced:mariadb-libs.x86_64 1:5.5.60-1.el7_5Complete!

Lad os se, om Percona XtraDB er installeret eller ej.

[[email protected] ~]# yum-søgning Percona-XtraDBBEMÆRK: Indtil her skal alle ovenstående trin udføres på alle servere (percona1, percona2, percona3)
Konfiguration af noder til skrivesætreplikering
TIL Percona1:

Lad kun MySQL-serveren starte og skift root-adgangskoden på percona1-serveren

[[email protected] ~]# systemctl start mysql[[email protected] ~]# grep password /var/log/mysqld.log2019-12-11T10:35:12.135133Z 1 [Bemærk] En midlertidig adgangskode genereres for [email protected]:hJ(l8ySe>f>BEmærk:kopier adgangskoden "hJ(l8ySe>f>E" vi skal ændre denne adgangskode:[[email protected] ~]# mysql_secure_installation --- ---->på alle servere(percona1,percona2,percona3)Sikring af MySQL-serverinstallationen.Indtast adgangskode for brugerrod:Den eksisterende adgangskode til brugerkontoroden er udløbet. Indstil venligst en ny adgangskode.Ny adgangskode:Genindtast ny adgangskode:VALIDATE PASSWORD PLUGIN kan bruges til at teste adgangskoder og forbedre sikkerheden. Det kontrollerer adgangskodens styrke og giver brugerne mulighed for kun at indstille de adgangskoder, der er sikre nok. Vil du konfigurere VALIDATE PASSWORD plugin? Tryk på y|Y for Ja, evt. anden nøgle for Nej:Brug af eksisterende adgangskode til root. Skift adgangskode for root? ((Tryk på y|Y for Ja, enhver anden nøgle for Nej) :... skipping.Som standard, en MySQL-installation ation har en anonym bruger, hvilket giver enhver mulighed for at logge på MySQL uden at skulle have oprettet en brugerkonto til dem. Dette er kun beregnet til testning og for at få installationen til at forløbe en smule mere smidig. Du bør fjerne dem, før du flytter ind i et produktionsmiljø. Vil du fjerne anonyme brugere? (Tryk på y|Y for Ja, enhver anden tast for Nej) :yesSuccess. Normalt skal root kun have lov til at oprette forbindelse fra 'localhost'. Dette sikrer, at nogen ikke kan gætte root-adgangskoden fra netværket. Vil du ikke tillade root-login eksternt? (Tryk på y|Y for Ja, enhver anden tast for Nej) :yesSuccess. Som standard leveres MySQL med en database ved navn 'test', som alle kan få adgang til. Dette er også kun beregnet til test, og bør fjernes, før du flytter ind i et produktionsmiljø. Vil du fjerne testdatabase og få adgang til den? (Tryk på y|Y for Ja, enhver anden tast for Nej) :... springer over. Genindlæsning af privilegietabellerne vil sikre, at alle ændringer, der er foretaget indtil nu, træder i kraft med det samme. Genindlæse privilegietabeller nu? (Tryk på y|Y for Ja, enhver anden tast for Nej) :yesSuccess.All done!

Stop nu MySQL-serveren på percona1.

[[email protected] ~]# systemctl stop mysql

Nu vil vi konfigurere vores replikering, vi tilføjer replikeringsoplysninger i filen my.cnf.

Konfigurer replikeringsindstillinger på percona1:
cat>>/etc/my.cnf<
 

Initialiser nu klyngen ved at bootstrapping den første node. Dette skal være noden med din hoveddatabase, som vil blive brugt som datakilde for klyngen i vores tilfælde er det percona1 server

[[email protected] ~]# systemctl start [email protected]ør du konfigurerer replikering, skal vi oprette en separat bruger til replikering, som vil blive brugt til replikeringsprocessen. hvorfor har vi brug for replikeringsbruger? når du tilføjer en ny node til klyngen, dumper den den aktuelle nodekonfiguration og overfører den til den anden node, af den grund har vi brug for en separat bruger.

BEMÆRK: Sørg for, at brugeren skal være den samme som nævnt mod variablen "wsrep_sst_auth" i replikeringskonfigurationen, der bruges i filen my.cnf.

[[email protected] ~]#mysql -u root -p mysql>opret bruger [email protected]'%' identificeret ved 'perconapasswd';mysql>giv alle på *.* til [email protected] '%';mysql>skyllerettigheder;
TIL Percona2:

Konfigurer replikeringsindstillinger på percona2:

cat>>/etc/my.cnf<
 Start nu mysql, og dette vil tilføje denne node til klyngen.

[[email protected] ~]# systemctl start mysql
TIL Percona3:

Konfigurer replikeringsindstillinger på percona3:

cat>>/etc/my.cnf<
 Start nu mysql, og dette vil tilføje denne node til klyngen.

[[email protected] ~]# systemctl start mysql

du vil observere sådanne beskeder i mysql log (var/log/mysqld.log)

(percona2):Tilstandsoverførsel fra 0,0 (percona1) fuldført

1.0 (percona3):Tilstandsoverførsel fra 0.0 (percona1) fuldført

For at sikre, at klyngen er blevet initialiseret, skal du køre følgende:

mysql> vis status som 'wsrep%';+----------------------------------------+- -------------------------------------------------- ----------+| Variabelnavn | Værdi |+----------------------------------------+------------ ----------------------------------------------------------+ | wsrep_local_state_uuid | 6d95cd36-1c1a-11ea-999a-83631204f6e3 || wsrep_protocol_version | 9 || wsrep_last_applied | 6 |...| wsrep_flow_control_recv | 0 || wsrep_flow_control_interval | [ 173, 173 ] || wsrep_flow_control_interval_low | 173 || wsrep_flow_control_interval_high | 173 || wsrep_flow_control_status | FRA |..| wsrep_local_state | 4 || wsrep_local_state_comment | Synkroniseret || wsrep_cert_index_size | 1 || wsrep_cert_bucket_count | 22 || wsrep_gcache_pool_size | 2384 |..| wsrep_incoming_addresses | 192.168.56.110:3306,192.168.56.114:3306,192.168.56.113:3306 || wsrep_cluster_weight | 3 || wsrep_desync_count | 0 || wsrep_evs_delayed | || wsrep_evs_evict_list | || wsrep_evs_repl_latency | 0/0/0/0/0 || wsrep_evs_state | OPERATIONEL || wsrep_gcomm_uuid | 1d16f574-1c1b-11ea-b5dd-574c9a653584 || wsrep_cluster_conf_id | 3 || wsrep_cluster_size  | 3 || wsrep_cluster_state_uuid | 6d95cd36-1c1a-11ea-999a-83631204f6e3 || wsrep_cluster_status | Primær || wsrep_connected | TIL || wsrep_local_bf_aborts | 0 || wsrep_local_index | 0 || wsrep_provider_name | Galera || wsrep_provider_vendor | Codership Oy  || wsrep_provider_version | 3.39(rb3295e6) || wsrep_ready | TIL |+-----------------------------------+---------------- ----------------------------------------------------------+ 71 rækker i sæt (0,00 sek.)

Som du kan se, er klyngestørrelsen 3 “wsrep_cluster_size | 3" og du kan også se IP'en for vores tre noder
wsrep_incoming_addresses | 192.168.56.110:3306,192.168.56.114:3306,192.168.56.113:3306

Test vores klynge:

Jeg er ved at oprette en database på percona 1, og så kontrollerer vi på percoan 3, at den er blevet replikeret.

mysql> vis databaser;+---------------------+| Database |+---------------------+| informationsskema || mysql || performance_skema || sys |+--------------------+4 rækker i sæt (0,03 sek.)mysql> CREATE DATABASE perconatest;Forespørgsel OK, 1 række påvirket (0,03 sek.) 

Lad os nu tjekke på percona3, vi vil se, at 'perconatest' DB vil blive oprettet

[[email protected] ~]# mysql -uroot -p -e "vis databaser" Indtast adgangskode:+--------------------+| Database |+---------------------+| informationsskema || mysql || perconatest || performance_skema || sys |+----------------------------+

  1. SQL Server CTE og rekursion eksempel

  2. Arbejder med Salesforce.com i Alpha Anywhere

  3. Hurtigste måde at udføre indlejrede masseindsættelser med anvendelse af scope_identity()?

  4. Databaseautomatisering bag Sveriges nye elektroniske identitet Freja eID