De meeste installatiestappen die op internet beschikbaar zijn, hebben betrekking op de standaard online installatie, ervan uitgaande dat de databasehosts een actieve internetverbinding hebben met de pakketrepository's en aan alle afhankelijkheden voldoen. Installatiestappen en -opdrachten zijn echter een beetje anders voor offline installatie. Offline-installatie is een gangbare praktijk in een strikte en veilige omgeving, zoals de financiële en militaire sector, voor naleving van de beveiliging, het verminderen van blootstellingsrisico's en het handhaven van de vertrouwelijkheid.
In deze blogpost gaan we een MariaDB-cluster met drie knooppunten installeren in een offline omgeving op CentOS-hosts. Overweeg de volgende drie knooppunten voor deze installatie:
- mariadb1 - 192.168.0.241
- mariadb2 - 192.168.0.242
- mariadb3 - 192.168.0.243
Downloadpakketten
Het meest tijdrovende deel is het verkrijgen van alle pakketten die nodig zijn voor onze installatie. Ga eerst naar de respectievelijke MariaDB-repository die we willen installeren (in dit voorbeeld is ons besturingssysteem 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/
Zorg ervoor dat u exact dezelfde secundaire versie downloadt voor alle MariaDB-gerelateerde pakketten. In dit voorbeeld hebben we MariaDB versie 10.4.13 gedownload. Er zijn een heleboel pakketten in deze repository, maar we hebben ze niet allemaal nodig om een MariaDB-cluster uit te voeren. Sommige pakketten zijn verouderd en voor foutopsporingsdoeleinden. Voor MariaDB Galera 10.4 en CentOS 7 moeten we de volgende pakketten downloaden van de MariaDB 10.4-repository:
- jemalloc
- galera-3/galera-4
- libzstd
- MariaDB-back-up
- MariaDB-server
- MariaDB-client
- MariaDB gedeeld
- MariaDB algemeen
- MariaDB compat
De volgende wget-commando's zouden het downloadproces vereenvoudigen:
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
Sommige van deze pakketten zijn afhankelijk van andere pakketten. Om ze allemaal tevreden te stellen, is het waarschijnlijk het beste om de ISO-image van het besturingssysteem te koppelen en de yum-pakketbeheerder erop te wijzen dat de ISO-image in plaats daarvan als een offline basisrepository moet worden gebruikt. Anders zouden we veel tijd verspillen aan het downloaden/overdragen van de pakketten van de ene host/media naar de andere.
Als je op zoek bent naar oudere MariaDB-pakketten, zoek ze dan hier op in de archiefrepository. Eenmaal gedownload, brengt u de pakketten over naar alle databaseservers via een USB-drive, dvd-brander of een netwerkopslag die is aangesloten op de databasehosts.
Monteer de ISO-afbeelding lokaal
Aan sommige afhankelijkheden moet tijdens de installatie worden voldaan en een manier om dit gemakkelijk te bereiken is door de offline yum-repository op de databaseservers in te stellen. Ten eerste moeten we de CentOS 7 DVD ISO-image downloaden van de dichtstbijzijnde CentOS mirror-site, onder de map "isos":
$ wget http://centos.shinjiru.com/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-2003.iso
Je kunt de afbeelding overbrengen en direct koppelen of op een dvd branden en het dvd-station gebruiken en verbinden met de server. In dit voorbeeld gaan we de ISO-image mounten als een dvd in de server:
$ mkdir -p /media/CentOS
$ mount -o loop /root/CentOS-7-x86_64-DVD-2003.iso /media/CentOS
Schakel vervolgens de CentOS-Media (c7-media) repository in en schakel de standaard online repositories (base,updates,extra's) uit:
$ yum-config-manager --disable base,updates,extras
$ yum-config-manager --enable c7-media
We zijn nu klaar voor de installatie.
De MariaDB-server installeren en configureren
Installatiestappen zijn vrij eenvoudig als we alle benodigde pakketten bij de hand hebben. Ten eerste is het aanbevolen om SElinux uit te schakelen (of in de permissieve modus te zetten):
$ setenforce 0
$ sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config
Navigeer naar de map waar alle pakketten zich bevinden, in dit geval /root/installer/. Zorg ervoor dat alle pakketten er zijn:
$ 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
Laten we eerst de mariabackup-afhankelijkheid genaamd socat installeren en vervolgens de opdracht yum localinstall uitvoeren om de RPM-pakketten te installeren en aan alle afhankelijkheden te voldoen:
$ yum install socat
$ yum localinstall *.rpm
Start de MariaDB-service en controleer de status:
$ systemctl start mariadb
$ systemctl status mariadb
Zorg ervoor dat je geen fouten ziet in het proces. Voer vervolgens het mysql_secure_installation-script uit om het MySQL-rootwachtwoord en de verharding te configureren:
$ mysql_secure_installation
Zorg ervoor dat het MariaDB-rootwachtwoord identiek is op alle MariaDB-hosts. Maak een MariaDB-gebruiker om back-up en SST uit te voeren. Dit is belangrijk als we de aanbevolen mariabackup willen gebruiken als de SST-methode voor MariaDB Cluster, en ook voor back-updoeleinden:
$ 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];
We moeten het standaardconfiguratiebestand wijzigen om MariaDB Cluster-functionaliteiten te laden. Open /etc/my.cnf.d/server.cnf en zorg ervoor dat de volgende regels bestaan voor een minimale configuratie:
[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
Vergeet niet om de wsrep_node_address-waarde te wijzigen met het IP-adres van het databaseknooppunt voor MariaDB Cluster-communicatie. De waarde wsrep_provider kan ook verschillen, afhankelijk van de MariaDB-server en MariaDB Cluster-versie die u hebt geïnstalleerd. Zoek het pad libgalera_smm.so en specificeer het hier dienovereenkomstig.
Herhaal dezelfde stappen op alle databaseknooppunten en we zijn nu klaar om ons cluster te starten.
Bootstrapping van de cluster
Aangezien dit een nieuw cluster is, kunnen we elk van de MariaDB-knooppunten kiezen om het referentieknooppunt te worden voor het opstartproces van het cluster. Laten we mariadb1 kiezen. Zorg ervoor dat de MariaDB eerst is gestopt en voer vervolgens de opdracht galera_new_cluster uit om te booten:
$ systemctl stop mariadb
$ galera_new_cluster
$ systemctl status mariadb
Op de andere twee knooppunten (mariadb2 en mariadb3) gaan we het opstarten met het standaard MariaDB-startcommando:
$ systemctl stop mariadb
$ systemctl start mariadb
Controleer of alle nodes deel uitmaken van het cluster door te kijken naar de wsrep-gerelateerde status op elke node:
MariaDB> SHOW STATUS LIKE 'wsrep%';
Zorg ervoor dat de gerapporteerde status als volgt is:
wsrep_local_state_comment | Synced
wsrep_cluster_size | 3
wsrep_cluster_status | Primary
Voor MariaDB 10.4 en Galera Cluster 4 kunnen we de clusterlidinformatie rechtstreeks uit de tabel mysql.wsrep_cluster_members op elk MariaDB-knooppunt halen:
$ 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 |
+--------------------------------------+--------------------------------------+---------------+-----------------------+
Als er iets misgaat tijdens het opstarten van het cluster, controleer dan het MySQL-foutlogboek op /var/log/mysqld.log op alle MariaDB-knooppunten. Zodra een cluster is opgestart en actief is, mag u het galera_new_cluster-script niet opnieuw uitvoeren om een MariaDB-service te starten. Het zou voldoende moeten zijn door de standaard opdracht "systemctl start/restart mariadb" te gebruiken, tenzij er geen databaseknooppunt meer in de PRIMARY-status is. Bekijk deze blogpost, How to Bootstrap MySQL of MariaDB Cluster om te begrijpen waarom deze stap van cruciaal belang is.
Bonusstap
U hebt nu al een databasecluster zonder bewakings- en beheerfuncties. Waarom importeert u het databasecluster niet in ClusterControl? Installeer ClusterControl op een andere afzonderlijke server en stel wachtwoordloze SSH in vanaf de ClusterControl-server naar alle databaseknooppunten. Stel dat het IP-adres van de ClusterControl-server 192.168.0.240 is, voer dan de volgende opdrachten uit op de ClusterControl-server:
$ 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
Ga vervolgens naar ClusterControl -> Importeren -> MySQL Galera en voer de vereiste SSH-gegevens in:
In de tweede stap onder MySQL-servers definiëren, schakelt u "Automatic Node Discovery" uit " en specificeer al het IP-adres van de databaseknooppunten, en zorg ervoor dat er een groen vinkje staat naast het IP-adres, wat aangeeft dat ClusterControl het knooppunt kan bereiken via wachtwoordloze SSH:
Klik op Importeren en wacht tot de importtaak is voltooid. Je zou het onder de clusterlijst moeten zien:
Je bent nu in goede handen. Houd er rekening mee dat ClusterControl standaard 30 dagen volledige bedrijfsfuncties gebruikt en nadat het is verlopen, wordt het standaard teruggezet naar de Community-editie, die voor altijd gratis is.