sql >> Databasteknik >  >> RDS >> Mysql

Installera Percona XtraDB Cluster på CentOS 7

Välkommen till en annan blogg. Den här gången är jag här för att visa er hur man ställer in percona XtraDB-kluster. Ok, så vad är percona XtraDB? XtraDB är en MySQL-klustringslösning, den säkerställer hög tillgänglighet, förhindrar driftstopp och dataförlust och ger linjär skalbarhet för en växande miljö. När du kör en fråga exekveras den lokalt på noden. All data är tillgänglig lokalt, inget behov av fjärråtkomst. En bra lösning för att skala en läsarbetsbelastning. Du kan lägga läsfrågor till någon av noderna. När du väl har installerat percona XtraDB behöver du inte installera MySQL separat, XtraDB hämtar det från percona-förvaret och du kommer att kunna göra klustret klart efter att ha gått igenom den här artikeln.

förutsättning:

För att konfigurera ett percona XtraDB-kluster på Linux-servrar behöver vi tre servrar, informationen är som följer:

server percona1:192.168.56.110

server percona2:192.168.56.113

Server percona3:192.168.56.114

OS:CentOS 7

du kan också gå med två servrar men det officiella dokumentet rekommenderar ett udda antal servrar. t.ex. 3,5,7 och så vidare. gå bara inte på ett jämnt antal noder, de kallar det split-brain. En split-brain är ett tillstånd där noderna tappar kontakten med varandra och sedan båda försöker ta kontroll över delade resurser eller samtidigt tillhandahålla klustertjänsten

OBS:Vi behöver root-åtkomst på noden där vi kommer att installera Percona XtraDB Cluster
(antingen inloggad som en användare med root-privilegier eller kunna köra kommandon med Sudo

Förkontroller:

Lägg till nedanstående poster i din /etc/hosts-fil ——> på alla servrar (percona1,percona2,percona3)

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

Öppna brandväggsportar:

Vi måste öppna nedanstående portar på alla servrar (percona1,percona2,percona3)
3306
4444
4567
4568

brandvägg-cmd --zone=public --add-service=mysql --permanent
brandvägg-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:rich rules

Inaktivera SELinux:——->på alla servrar(percona1,percona2,percona3)

[[email protected] ~]# setenforce 0

Detta kommer att sätta SELinux i tillåtande läge för den aktuella sessionen men vi måste inaktivera den permanent.
redigera /etc/sysconfig/selinux filuppsättning selinux variabel som inaktiverad på alla servrar (percona1,percona2,percona3):
vi /etc/sysconfig/selinux
SELINUX=disabled

Alla servrar bör vara tillgängliga för varandra, för att kontrollera tillgängligheten pinga varje server.

Instll under prereq RPM:——->på alla servrar(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

Lägg till Percona Repository:——->på alla servrar(percona1,percona2,percona3)

Nu kommer vi att lägga till percona-förvaret i alla de tre servrarna (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 Komplett !

Installera Percona-XtraDB-Cluster:——->på alla servrar(percona1,percona2,percona3)

[[email protected] ~]# yum install -y Percona-XtraDB-Cluster-57Laddade plugins:fastestmirror, langpacksLaddar spegelhastigheter från cachad värdfil...Installerad: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.39-31. .1.el7Dependency Installed: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.79. 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.x06 :2.52-3.el7 qpress.x86_64 0:11-1.el7Replaced:mariadb-libs.x86_64 1:5.5.60-1.el7_5Complete!

Låt kolla om Percona XtraDB är installerad eller inte.

[[email protected] ~]# yum search Percona-XtraDBOBS: Till här bör alla ovanstående steg utföras på alla servrar (percona1, percona2, percona3)
Konfigurera noder för skrivuppsättningsreplikering
PÅ Percona1:

Låt starta MySQL-servern och ändra root-lösenordet endast på percona1-servern

[[email protected] ~]# systemctl start mysql[[email protected] ~]# grep lösenord /var/log/mysqld.log2019-12-11T10:35:12.135133Z 1 [Notera] Ett tillfälligt lösenord genereras till [email protected]:hJ(l8ySe>f>ENObs! kopiera lösenordet "hJ(l8ySe>f>E" vi kommer att ändra detta lösenord:[[email protected] ~]# mysql_secure_installation --- ---->på alla servrar(percona1,percona2,percona3)Säkring av MySQL-serverinstallationen. Ange lösenord för användarrot:Det befintliga lösenordet för användarkontoroten har upphört att gälla. Vänligen ange ett nytt lösenord.Nytt lösenord:Ange igen nytt lösenord:VALIDATE PASSWORD PLUGIN kan användas för att testa lösenord och förbättra säkerheten. Det kontrollerar lösenordets styrka och låter användarna endast ställa in de lösenord som är tillräckligt säkra. Vill du ställa in plugin-appen VALIDATE PASSWORD? Tryck på y|Y för Ja, valfri annan nyckel för Nej:Använder befintligt lösenord för root. Ändra lösenordet för root? ((Tryck på y|Y för Ja, valfri annan nyckel för Nej) :... skipping.Som standard, en MySQL-installation ation har en anonym användare, vilket gör att vem som helst kan logga in på MySQL utan att behöva ha ett användarkonto skapat för dem. Detta är endast avsett för testning och för att få installationen att gå lite smidigare. Du bör ta bort dem innan du flyttar in i en produktionsmiljö. Ta bort anonyma användare? (Tryck på y|Y för Ja, vilken annan tangent som helst för Nej) :yesSuccess. Normalt bör root endast tillåtas att ansluta från 'localhost'. Detta säkerställer att någon inte kan gissa root-lösenordet från nätverket. Vill du inte tillåta root-inloggning på distans? (Tryck på y|Y för Ja, vilken annan tangent som helst för Nej) :yesSuccess. Som standard kommer MySQL med en databas med namnet 'test' som alla kan komma åt. Detta är också endast avsett för testning och bör tas bort innan du flyttar in i en produktionsmiljö. Vill du ta bort testdatabasen och få tillgång till den? (Tryck på y|Y för Ja, vilken annan tangent som helst för Nej) :... hoppar över. Om du laddar om behörighetstabellerna kommer alla ändringar som gjorts hittills att träda i kraft omedelbart. Ladda om behörighetstabeller nu? (Tryck på y|Y för Ja, valfri annan tangent för Nej) :yesSuccess.All done!

Stoppa nu MySQL-servern på percona1.

[[email protected] ~]# systemctl stop mysql

Nu ska vi konfigurera vår replikering, vi kommer att lägga till replikeringsinformation i filen my.cnf.

Konfigurera replikeringsinställningar på percona1:
katt>>/etc/my.cnf<
 

Initiera nu klustret genom att bootstrappa den första noden. Detta måste vara noden med din huvuddatabas, som kommer att användas som datakälla för klustret i vårt fall är det percona1-server

[[email protected] ~]# systemctl start [email protected] vi konfigurerar replikering måste vi skapa en separat användare för replikering som kommer att användas för replikeringsprocessen. varför behöver vi replikeringsanvändare? när du lägger till en ny nod till klustret dumpar den den aktuella nodkonfigurationen och överför den till den andra noden av den anledningen behöver vi en separat användare.

OBS: Se till att användaren ska vara samma som nämns mot variabeln “wsrep_sst_auth” i replikeringskonfigurationen som används i filen my.cnf.

[[email protected] ~]#mysql -u root -p mysql>skapa användare [email protected]'%' identifierad av 'perconapasswd';mysql>bevilja allt på *.* till [email protected] '%';mysql>spolningsprivilegier;
PÅ Percona2:

Konfigurera replikeringsinställningar på percona2:

katt>>/etc/my.cnf<
 Starta nu mysql och detta kommer att lägga till denna nod till klustret.

[[email protected] ~]# systemctl starta mysql
PÅ Percona3:

Konfigurera replikeringsinställningar på percona3:

katt>>/etc/my.cnf<
 Starta nu mysql och detta kommer att lägga till denna nod till klustret.

[[email protected] ~]# systemctl starta mysql

du kommer att observera sådana meddelanden i mysql-loggen (var/log/mysqld.log)

(percona2):Tillståndsöverföring från 0,0 (percona1) klar

1.0 (percona3):Tillståndsöverföring från 0.0 (percona1) klar

För att säkerställa att klustret har initierats, kör följande:

mysql> visa status som 'wsrep%';+----------------------------------------+- -------------------------------------------------- ----------+| Variabelnamn | Värde |+----------------------------------------+------------ ----------------------------------------------------------+ | 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 | AV |..| wsrep_local_state | 4 || wsrep_local_state_comment | Synkroniserad || 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 | OPERATIONELL || 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 | PÅ || 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 | PÅ |+-----------------------------------+---------------- ----------------------------------------------------------+ 71 rader i set (0,00 sek)

Som du kan se är klusterstorleken 3 “wsrep_cluster_size | 3” och du kan också se IP:en för våra tre noder
wsrep_incoming_addresses | 192.168.56.110:3306,192.168.56.114:3306,192.168.56.113:3306

Testa vårt kluster:

Jag skapar en databas på percona 1 och sedan kontrollerar vi på percoan 3 att den har replikerats.

mysql> visa databaser;+--------------------+| Databas |+----------------------------+| informationsschema || mysql || performance_schema || sys |+--------------------+4 rader i set (0,03 sek)mysql> SKAPA DATABAS perconatest;Fråga OK, 1 rad påverkad (0,03 sek) 

Låt oss nu kolla på percona3 vi kommer att se att "perconatest" DB kommer att skapas

[[email protected] ~]# mysql -uroot -p -e "visa databaser"Ange lösenord:+--------------------+| Databas |+----------------------------+| informationsschema || mysql || perconatest || performance_schema || sys |+----------------------------+

  1. SQL SELECT-syntax – listad av DBMS

  2. AMD, Intel och PostgreSQL

  3. Finns det något sätt att ställa in en utgångstid, varefter en datainmatning automatiskt raderas i PostgreSQL?

  4. Förbättring av Top / Top Descending Median Solution