De fleste af installationstrinene, der er tilgængelige på internettet, dækker standard online-installationen, forudsat at databaseværterne har en aktiv internetforbindelse til pakkedepoterne og opfylder alle afhængigheder. Installationstrin og -kommandoer er dog lidt anderledes for offlineinstallation. Offlineinstallation er en almindelig praksis i et stramt og sikkert miljø som f.eks. finansielle og militære sektorer for overholdelse af sikkerhed, reduktion af eksponeringsrisici og opretholdelse af fortrolighed.
I dette blogindlæg vil vi installere en MariaDB-klynge med tre knudepunkter i et offline miljø på CentOS-værter. Overvej følgende tre noder til denne installation:
- mariadb1 - 192.168.0.241
- mariadb2 - 192.168.0.242
- mariadb3 - 192.168.0.243
Download pakker
Den mest tidskrævende del er at få alle de nødvendige pakker til vores installation. Gå først til det respektive MariaDB-lager, som vi vil installere (i dette eksempel er vores OS CentOS 7 64bit):
- MariaDB 10.4:http://yum.mariadb.org/10.4/centos7-amd64/rpms/
- MariaDB 10.3:http://yum.mariadb.org/10.3/centos7-amd64/rpms/
- MariaDB 10.2:http://yum.mariadb.org/10.2/centos7-amd64/rpms/
- MariaDB 10.1:http://yum.mariadb.org/10.1/centos7-amd64/rpms/
- MariaDB 10.0:http://yum.mariadb.org/10.0/centos7-amd64/rpms/
Sørg for at downloade nøjagtig den samme mindre version til alle MariaDB-relaterede pakker. I dette eksempel downloadede vi MariaDB version 10.4.13. Der er en masse pakker i dette lager, men vi har ikke brug for dem alle bare for at køre en MariaDB-klynge. Nogle af pakkerne er forældede og til fejlfindingsformål. Til MariaDB Galera 10.4 og CentOS 7 skal vi downloade følgende pakker fra MariaDB 10.4-lageret:
- jemalloc
- galera-3/galera-4
- libzstd
- MariaDB backup
- MariaDB-server
- MariaDB-klient
- MariaDB delte
- MariaDB almindelig
- MariaDB compat
Følgende wget-kommandoer ville forenkle downloadprocessen:
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/galera-4-26.4.4-1.rhel7.el7.centos.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/jemalloc-3.6.0-1.el7.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/libzstd-1.3.4-1.el7.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/MariaDB-backup-10.4.13-1.el7.centos.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/MariaDB-client-10.4.13-1.el7.centos.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/MariaDB-common-10.4.13-1.el7.centos.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/MariaDB-compat-10.4.13-1.el7.centos.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/MariaDB-server-10.4.13-1.el7.centos.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/MariaDB-shared-10.4.13-1.el7.centos.x86_64.rpm
Nogle af disse pakker er afhængige af andre pakker. For at tilfredsstille dem alle er det nok bedst at montere operativsystemets ISO-image og pege yum-pakkehåndteringen til at bruge ISO-billedet som et offline-baselager i stedet. Ellers ville vi spilde en masse tid på at prøve at downloade/overføre pakkerne fra én vært/medie til en anden.
Hvis du leder efter ældre MariaDB-pakker, så slå dem op i dets arkivlager her. Når de er downloadet, overfører du pakkerne til alle databaseservere via USB-drev, dvd-brænder eller ethvert netværkslager, der er tilsluttet databaseværterne.
Monter ISO-billedet lokalt
Nogle af afhængighederne er nødvendige for at blive opfyldt under installationen, og en måde at opnå dette nemt er ved at opsætte offline yum-lageret på databaseserverne. For det første skal vi downloade CentOS 7 DVD ISO-billedet fra det nærmeste CentOS-spejlsted under "isos"-mappen:
$ wget http://centos.shinjiru.com/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-2003.iso
Du kan enten overføre billedet og montere det direkte eller brænde det på en dvd og bruge dvd-drevet og forbinde det til serveren. I dette eksempel skal vi montere ISO-billedet som en DVD på serveren:
$ mkdir -p /media/CentOS
$ mount -o loop /root/CentOS-7-x86_64-DVD-2003.iso /media/CentOS
Aktivér derefter CentOS-Media (c7-media) repository og deaktiver standard online repositories (base, opdateringer, ekstramateriale):
$ yum-config-manager --disable base,updates,extras
$ yum-config-manager --enable c7-media
Vi er nu klar til installationen.
Installation og konfiguration af MariaDB-serveren
Installationstrinene er ret ligetil, hvis vi har alle de nødvendige pakker klar. For det første anbefales det at deaktivere SElinux (eller indstille det til tilladelig tilstand):
$ setenforce 0
$ sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config
Naviger til den mappe, hvor alle pakkerne er placeret, i dette tilfælde /root/installer/. Sørg for, at alle pakkerne er der:
$ cd /root/installer
$ ls -1
galera-4-26.4.4-1.rhel7.el7.centos.x86_64.rpm
jemalloc-3.6.0-1.el7.x86_64.rpm
libzstd-1.3.4-1.el7.x86_64.rpm
MariaDB-backup-10.4.13-1.el7.centos.x86_64.rpm
MariaDB-client-10.4.13-1.el7.centos.x86_64.rpm
MariaDB-common-10.4.13-1.el7.centos.x86_64.rpm
MariaDB-compat-10.4.13-1.el7.centos.x86_64.rpm
MariaDB-server-10.4.13-1.el7.centos.x86_64.rpm
MariaDB-shared-10.4.13-1.el7.centos.x86_64.rpm
Lad os først installere mariabackup-afhængigheden kaldet socat og derefter køre kommandoen yum localinstall for at installere RPM-pakkerne og tilfredsstille alle afhængigheder:
$ yum install socat
$ yum localinstall *.rpm
Start MariaDB-tjenesten og kontroller status:
$ systemctl start mariadb
$ systemctl status mariadb
Sørg for, at du ikke ser nogen fejl i processen. Kør derefter mysql_secure_installation scriptet for at konfigurere MySQL root adgangskoden og hærdning:
$ mysql_secure_installation
Sørg for, at MariaDB-rodadgangskoden er identisk på alle MariaDB-værter. Opret en MariaDB-bruger til at udføre backup og SST. Dette er vigtigt, hvis vi ønsker at bruge den anbefalede mariabackup som SST-metoden til MariaDB Cluster, og også til backup-formål:
$ mysql -uroot -p
MariaDB> CREATE USER [email protected] IDENTIFIED BY 'P455w0rd';
MariaDB> GRANT SELECT, INSERT, CREATE, RELOAD, PROCESS, SUPER, LOCK TABLES, REPLICATION CLIENT, SHOW VIEW, EVENT, CREATE TABLESPACE ON *.* TO [email protected];
Vi er nødt til at ændre standardkonfigurationsfilen for at indlæse MariaDB Cluster-funktionaliteter. Åbn /etc/my.cnf.d/server.cnf og sørg for, at følgende linjer findes for minimal konfiguration:
[mysqld]
log_error = /var/log/mysqld.log
[galera]
wsrep_on=ON
wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so
wsrep_cluster_address=gcomm://192.168.0.241,192.168.0.242,192.168.0.243
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
innodb_flush_log_at_trx_commit=2
wsrep_sst_method=mariabackup
wsrep_sst_auth=backup_user:P455w0rd
wsrep_node_address=192.168.0.241 # change this
Glem ikke at ændre værdien wsrep_node_address med IP-adressen på databasenoden til MariaDB Cluster-kommunikation. Værdien for wsrep_provider kan også være forskellig afhængigt af MariaDB-serveren og MariaDB Cluster-versionen, som du har installeret. Find stien til libgalera_smm.so og specificer den i overensstemmelse hermed.
Gentag de samme trin på alle databasenoder, og vi er nu klar til at starte vores klynge.
Opstart af klyngen
Da dette er en ny klynge, kan vi vælge en hvilken som helst af MariaDB-knuderne til at blive referenceknuden for klyngeopstartsprocessen. Lad os vælge mariadb1. Sørg for, at MariaDB er stoppet først, og kør derefter galera_new_cluster-kommandoen for at bootstrap:
$ systemctl stop mariadb
$ galera_new_cluster
$ systemctl status mariadb
På de to andre noder (mariadb2 og mariadb3), vil vi starte det op ved hjælp af standard MariaDB startkommando:
$ systemctl stop mariadb
$ systemctl start mariadb
Bekræft, om alle noder er en del af klyngen ved at se på den wsrep-relaterede status på hver node:
MariaDB> SHOW STATUS LIKE 'wsrep%';
Sørg for, at den rapporterede status er som følgende:
wsrep_local_state_comment | Synced
wsrep_cluster_size | 3
wsrep_cluster_status | Primary
For MariaDB 10.4 og Galera Cluster 4 kan vi få klyngemedlemsoplysningerne direkte fra tabellen mysql.wsrep_cluster_members på enhver MariaDB-node:
$ mysql -uroot -p -e 'select * from mysql.wsrep_cluster_members'
Enter password:
+--------------------------------------+--------------------------------------+---------------+-----------------------+
| node_uuid | cluster_uuid | node_name | node_incoming_address |
+--------------------------------------+--------------------------------------+---------------+-----------------------+
| 35177dae-a7f0-11ea-baa4-1e4604dc8f68 | de82efcb-a7a7-11ea-8273-b7a81016a75f | maria1.local | AUTO |
| 3e6f9d0b-a7f0-11ea-a2e9-32f4a0481dd9 | de82efcb-a7a7-11ea-8273-b7a81016a75f | maria2.local | AUTO |
| fd63108a-a7f1-11ea-b100-937c34421a67 | de82efcb-a7a7-11ea-8273-b7a81016a75f | maria3.local | AUTO |
+--------------------------------------+--------------------------------------+---------------+-----------------------+
Hvis noget går galt under cluster bootstrapping, så tjek MySQL fejlloggen på /var/log/mysqld.log på alle MariaDB noder. Når en klynge er bootstrapped og kører, skal du ikke køre galera_new_cluster-scriptet igen for at starte en MariaDB-tjeneste. Det burde være nok ved at bruge standardkommandoen "systemctl start/restart mariadb", medmindre der ikke er nogen databasenode i PRIMÆR tilstand længere. Tjek dette blogindlæg, How to Bootstrap MySQL eller MariaDB Cluster for at forstå, hvorfor dette trin er kritisk.
Bonustrin
Nu har du allerede en databaseklynge kørende uden nogen overvågnings- og administrationsfunktioner. Hvorfor importerer du ikke databaseklyngen til ClusterControl? Installer ClusterControl på en anden separat server, og opsæt adgangskodefri SSH fra ClusterControl-serveren til alle databasenoder. Hvis ClusterControl-serverens IP er 192.168.0.240, skal du køre følgende kommandoer på ClusterControl-serveren:
$ whoami
root
$ ssh-keygen -t rsa # generate key, press Enter for all prompts
$ ssh-copy-id [email protected] # root password on 192.168.0.241
$ ssh-copy-id [email protected] # root password on 192.168.0.242
$ ssh-copy-id [email protected] # root password on 192.168.0.243
Gå derefter til ClusterControl -> Importer -> MySQL Galera og indtast de nødvendige SSH-oplysninger:
I andet trin under Definer MySQL-servere skal du slå "Automatisk nodeopdagelse fra " og angiv alle IP-adresserne for databasenoderne, og sørg for, at der er et grønt flueben ud for IP-adressen, hvilket indikerer, at ClusterControl er i stand til at nå noden via adgangskodefri SSH:
Klik på Importer og vent, indtil importjobbet er fuldført. Du bør se det under klyngelisten:
Du er i gode hænder nu. Bemærk, at ClusterControl som standard vil bruge 30-dages fulde virksomhedsfunktioner, og efter at den udløber, vil den som standard gå tilbage til Community Edition, som er gratis for evigt.