Welkom bij weer een blog. Deze keer ben ik hier om jullie te laten zien hoe je percona XtraDB-cluster instelt. Ok, dus wat is percona XtraDB? XtraDB is een MySQL-clusteroplossing. Het zorgt voor een hoge beschikbaarheid, voorkomt downtime en gegevensverlies en biedt lineaire schaalbaarheid voor een groeiende omgeving. Wanneer u een query uitvoert, wordt deze lokaal op het knooppunt uitgevoerd. Alle gegevens zijn lokaal beschikbaar, toegang op afstand is niet nodig. Een goede oplossing voor het schalen van een leeswerklast. U kunt leesquery's op elk van de knooppunten plaatsen. Nadat u percona XtraDB heeft geïnstalleerd, hoeft u MySQL niet apart te installeren. XtraDB haalt het op uit de percona-repository en u kunt het cluster gereed maken nadat u dit artikel hebt doorgenomen.
voorwaarde:
Om een percona XtraDB-cluster op Linux-servers te configureren, hebben we drie servers nodig, de informatie is als volgt:
server percona1:192.168.56.110
server percona2:192.168.56.113
Serverpercona3:192.168.56.114
Besturingssysteem:CentOS 7
je kunt ook met twee servers gaan, maar het officiële document beveelt een oneven aantal servers aan. bijv. 3,5,7 enzovoort. ga gewoon niet voor een even aantal knooppunten, ze noemen het split-brain. Een split-brain is een toestand waarin de knooppunten het contact met elkaar verliezen en vervolgens beide proberen de controle over gedeelde bronnen over te nemen of tegelijkertijd de clusterservice te bieden
OPMERKING:We hebben root-toegang nodig op het knooppunt waar we Percona XtraDB Cluster gaan installeren
(ofwel ingelogd als een gebruiker met root-rechten of in staat zijn om opdrachten uit te voeren met Sudo
Voorcontroles:
Voeg onderstaande vermeldingen toe aan uw /etc/hosts-bestand ——> op alle servers (percona1,percona2,percona3)
192.168.56.110 percona1.localdomain percona1
192.168.56.113 percona2.localdomain percona2
192.168.56.114 percona3.localdomain percona3
Firewall-poorten openen:
We moeten onderstaande poorten openen op alle servers (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/tcp 4568/tcp 4444/tcp 4567/udpprotocols:masquerade:noforward-ports:source-ports:icmp-blocks:uitgebreide regels
Schakel SELinux uit:——->op alle servers (percona1,percona2,percona3)
[[email protected] ~]# setenforce 0
Dit zal de SELinux in permissieve modus zetten voor de huidige sessie, maar we moeten het permanent uitschakelen.
bewerk /etc/sysconfig/selinux bestand stel de selinux variabele in als uitgeschakeld op alle servers (percona1,percona2,percona3):
vi /etc/sysconfig/selinux
SELINUX=uitgeschakeld
Alle servers moeten voor elkaar toegankelijk zijn. Om de toegankelijkheid te controleren, pingt elke server.
Instll hieronder prereq RPM:——->op alle servers (percona1,percona2,percona3)
epel-release
libev
socat
[[email protected] ~]# yum -y install epel-release Geïnstalleerd:epel-release.noarch 0:7-11[[email protected] yum.repos.d]# yum -y install libev Geïnstalleerd :libev.x86_64 0:4.15-7.el7[[email protected] Desktop]# yum -y installeer socat Geïnstalleerd:socat.x86_64 0:1.7.3.2-2.el7
Percona Repository toevoegen:——->op alle servers (percona1,percona2,percona3)
Nu voegen we de percona-repository toe aan alle drie de servers (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 Voltooid !
Installeer Percona-XtraDB-Cluster:——->op alle servers (percona1,percona2,percona3)
[[email protected] ~]# yum install -y Percona-XtraDB-Cluster-57Geladen plug-ins:snelstemirror, langpacks Mirror-snelheden laden van hostbestand in cache... Geïnstalleerd:Percona-XtraDB-Cluster-57.x86_64 0:5.7 .27-31.39.1.el7 Percona-XtraDB-Cluster-gedeeld-57.x86_64 0:5.7.27-31.39.1.el7 Percona-XtraDB-Cluster-gedeeld-compat-57.x86_64 0:5.7.27-31.39 .1.el7Dependency geïnstalleerd: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.39.1.el7 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-MD5.x86_64 0 :2.52-3.el7 qpress.x86_64 0:11-1.el7Replaced:mariadb-libs.x86_64 1:5.5.60-1.el7_5Complete!
Controleer of de Percona XtraDB is geïnstalleerd of niet.
[[email protected] ~]# lekker zoeken Percona-XtraDBOPMERKING: Tot hier moeten alle bovenstaande stappen worden uitgevoerd op alle servers (percona1,percona2,percona3)
Knooppunten configureren voor Write-Set-replicatie
OP Percona1:
Laat de MySQL-server starten en verander het root-wachtwoord alleen op de percona1-server
[[email protected] ~]# systemctl start mysql[[email protected] ~]# grep wachtwoord /var/log/mysqld.log2019-12-11T10:35:12.135133Z 1 [Opmerking] Een tijdelijk wachtwoord wordt gegenereerd [email protected]:hJ(l8ySe>f>EOpmerking:kopieer het wachtwoord "hJ(l8ySe>f>E") we gaan dit wachtwoord wijzigen:[[email protected] ~]# mysql_secure_installation --- ---->op alle servers (percona1,percona2,percona3)Beveiliging van de MySQL-serverimplementatie.Voer wachtwoord in voor gebruiker root:Het bestaande wachtwoord voor de gebruikersaccount root is verlopen. Stel een nieuw wachtwoord in.Nieuw wachtwoord:Re-enter nieuw wachtwoord:VALIDATE PASSWORD PLUGIN kan worden gebruikt om wachtwoorden te testen en de veiligheid te verbeteren. Het controleert de sterkte van het wachtwoord en stelt de gebruikers in staat alleen die wachtwoorden in te stellen die veilig genoeg zijn. Wilt u de plug-in VALIDATE PASSWORD instellen?Druk op y|Y voor Ja, elke andere sleutel voor Nee:Bestaand wachtwoord voor root gebruiken. Verander het wachtwoord voor root ? ((Druk op y|Y voor Ja, een andere sleutel voor Nee) :... overslaan. Standaard een MySQL-installatie ation heeft een anonieme gebruiker, waardoor iedereen kan inloggen op MySQL zonder dat er een gebruikersaccount voor hen hoeft te worden aangemaakt. Dit is alleen bedoeld om te testen en om de installatie wat soepeler te laten verlopen. Je moet ze verwijderen voordat je naar een productieomgeving gaat. Anonieme gebruikers verwijderen? (Druk op y|Y voor Ja, een andere toets voor Nee) :yesSuccess.Normaal gesproken zou root alleen toestemming moeten krijgen om verbinding te maken vanaf 'localhost'. Dit zorgt ervoor dat iemand het root-wachtwoord van het netwerk niet kan raden. Root login op afstand toestaan? (Druk op y|Y voor Ja, een andere toets voor Nee) :yesSuccess.MySQL wordt standaard geleverd met een database met de naam 'test' waartoe iedereen toegang heeft. Dit is ook alleen bedoeld om te testen en moet worden verwijderd voordat u naar een productieomgeving gaat. Testdatabase en toegang ertoe verwijderen? (Druk op y|Y voor Ja, een andere toets voor Nee) :... overslaan. Het opnieuw laden van de privilegetabellen zorgt ervoor dat alle tot dusver aangebrachte wijzigingen onmiddellijk van kracht worden.Herlaad privilegetabellen nu? (Druk op y|Y voor Ja, een andere toets voor Nee) :yesSuccess.All done!
Stop nu de MySQL-server op percona1.
[[email protected] ~]# systemctl stop mysql
Nu gaan we onze replicatie configureren, we zullen replicatie-informatie toevoegen aan het my.cnf-bestand.
Replicatie-instellingen configureren op percona1:
cat>>/etc/my.cnf<
Initialiseer nu het cluster door het eerste knooppunt te bootstrappen. Dit moet het knooppunt zijn met uw hoofddatabase, die zal worden gebruikt als de gegevensbron voor het cluster, in ons geval is het de percona1-server
[[email protected] ~]# systemctl start [email protected] Voordat we replicatie configureren, moeten we een aparte gebruiker voor replicatie maken die zal worden gebruikt voor het replicatieproces. waarom hebben we replicatie gebruiker nodig? wanneer u een nieuw knooppunt aan het cluster toevoegt, dumpt het de huidige knooppuntconfiguratie en brengt het deze over naar het tweede knooppunt. Daarom hebben we een aparte gebruiker nodig.OPMERKING: Zorg ervoor dat de gebruiker hetzelfde moet zijn als vermeld voor de variabele “wsrep_sst_auth” in de replicatieconfiguratie die wordt gebruikt in het my.cnf-bestand.
[[email protected] ~]#mysql -u root -p mysql>maak gebruiker [email protected]'%' geïdentificeerd door 'perconapasswd';mysql>verleen alles op *.* aan [email protected] '%';mysql>flush-rechten;OP Percona2:
Configureer replicatie-instellingen op percona2:
cat>>/etc/my.cnf<Start nu de mysql en dit zal dit knooppunt aan het cluster toevoegen.
[[email protected] ~]# systemctl start mysqlOP Percona3:
Replicatie-instellingen configureren op percona3:
cat>>/etc/my.cnf<Start nu de mysql en dit zal dit knooppunt aan het cluster toevoegen. [[email protected] ~]# systemctl start mysqlu zult dergelijke berichten in mysql log (var/log/mysqld.log) observeren
(percona2):Staatsoverdracht vanaf 0,0 (percona1) voltooid
1.0 (percona3):Staatsoverdracht van 0.0 (percona1) voltooid
Voer het volgende uit om ervoor te zorgen dat het cluster is geïnitialiseerd:
mysql> toon status zoals 'wsrep%';+----------------------------------+- -------------------------------------------------- ----------+| Variabele_naam | Waarde |+----------------------------------+------------ -------------------------------------------------+ | 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 | UIT |..| wsrep_local_state | 4 || wsrep_local_state_comment | Gesynchroniseerd || 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_evick_list | || wsrep_evs_repl_latency | 0/0/0/0/0 || wsrep_evs_state | OPERATIONEEL || 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 | Primair || wsrep_connected | AAN || 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 | AAN |+----------------------------------+------------ -------------------------------------------------+ 71 rijen in set (0,00 sec) Zoals u kunt zien, is de clustergrootte 3 "wsrep_cluster_size | 3” en u kunt ook het IP-adres van onze drie knooppunten zien
wsrep_incoming_addresses | 192.168.56.110:3306,192.168.56.114:3306,192.168.56.113:3306Ons cluster testen:
Ik ben een database aan het maken op percona 1 en dan zullen we op percoan 3 controleren of deze is gerepliceerd.
mysql> databases tonen;+--------------------+| Database |+--------------------+| information_schema || mysql || prestatieschema || sys |+--------------------+4 rijen in set (0,03 sec)mysql> CREATE DATABASE perconatest;Query OK, 1 rij beïnvloed (0,03 sec)Laten we nu eens kijken op percona3, we zullen zien dat 'perconatest' DB zal worden aangemaakt
[[email protected] ~]# mysql -uroot -p -e "show databases"Voer wachtwoord in:+--------------------+| Database |+--------------------+| information_schema || mysql || perconaat || prestatieschema || sys |+--------------------+