La maggior parte dei passaggi di installazione disponibili su Internet coprono l'installazione online standard, presumendo che gli host del database abbiano una connessione Internet attiva ai repository dei pacchetti e soddisfino tutte le dipendenze. Tuttavia, i passaggi e i comandi di installazione sono leggermente diversi per l'installazione offline. L'installazione offline è una pratica comune in un ambiente rigoroso e sicuro come i settori finanziario e militare per la conformità alla sicurezza, la riduzione dei rischi di esposizione e il mantenimento della riservatezza.
In questo post del blog, installeremo un cluster MariaDB a tre nodi in un ambiente offline su host CentOS. Considera i tre nodi seguenti per questa installazione:
- mariadb1 - 192.168.0.241
- mariadb2 - 192.168.0.242
- mariadb3 - 192.168.0.243
Scarica pacchetti
La parte che richiede più tempo è ottenere tutti i pacchetti necessari per la nostra installazione. Innanzitutto, vai al rispettivo repository MariaDB che vogliamo installare (in questo esempio, il nostro sistema operativo è CentOS 7 a 64 bit):
- 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/
Assicurati di scaricare la stessa identica versione secondaria per tutti i pacchetti relativi a MariaDB. In questo esempio, abbiamo scaricato MariaDB versione 10.4.13. Ci sono un sacco di pacchetti in questo repository ma non ne abbiamo bisogno tutti solo per eseguire un cluster MariaDB. Alcuni dei pacchetti sono obsoleti e per scopi di debug. Per MariaDB Galera 10.4 e CentOS 7, è necessario scaricare i seguenti pacchetti dal repository MariaDB 10.4:
- jemalloc
- galera-3/galera-4
- libzstd
- Backup di MariaDB
- server MariaDB
- Client MariaDB
- MariaDB condivisa
- Comune di MariaDB
- Compatibilità con MariaDB
I seguenti comandi wget semplificherebbero il processo di download:
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
Alcuni di questi pacchetti hanno dipendenze con altri pacchetti. Per soddisfarli tutti, probabilmente è meglio montare l'immagine ISO del sistema operativo e indicare al gestore di pacchetti yum di utilizzare invece l'immagine ISO come repository di base offline. Altrimenti, perderemmo molto tempo a cercare di scaricare/trasferire i pacchetti da un host/supporto a un altro.
Se stai cercando vecchi pacchetti MariaDB, cercali nel suo repository di archivio qui. Una volta scaricati, trasferisci i pacchetti in tutti i server di database tramite unità USB, masterizzatore DVD o qualsiasi archivio di rete collegato agli host del database.
Monta l'immagine ISO in locale
Alcune delle dipendenze sono necessarie per essere soddisfatte durante l'installazione e un modo per ottenere ciò facilmente è configurare il repository yum offline sui server di database. Innanzitutto, dobbiamo scaricare l'immagine ISO del DVD di CentOS 7 dal sito mirror CentOS più vicino, nella directory "isos":
$ wget http://centos.shinjiru.com/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-2003.iso
Puoi trasferire l'immagine e montarla direttamente o masterizzarla su un DVD e utilizzare l'unità DVD e collegarla al server. In questo esempio, monteremo l'immagine ISO come DVD nel server:
$ mkdir -p /media/CentOS
$ mount -o loop /root/CentOS-7-x86_64-DVD-2003.iso /media/CentOS
Quindi, abilita il repository CentOS-Media (c7-media) e disabilita i repository online standard (base, aggiornamenti, extra):
$ yum-config-manager --disable base,updates,extras
$ yum-config-manager --enable c7-media
Siamo ora pronti per l'installazione.
Installazione e configurazione del server MariaDB
I passaggi di installazione sono piuttosto semplici se abbiamo tutti i pacchetti necessari pronti. Innanzitutto, si consiglia di disabilitare SElinux (o impostarlo in modalità permissiva):
$ setenforce 0
$ sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config
Naviga nella directory in cui si trovano tutti i pacchetti, in questo caso /root/installer/. Assicurati che tutti i pacchetti siano presenti:
$ 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
Installiamo prima la dipendenza mariabackup chiamata socat e poi eseguiamo il comando yum localinstall per installare i pacchetti RPM e soddisfare tutte le dipendenze:
$ yum install socat
$ yum localinstall *.rpm
Avvia il servizio MariaDB e verifica lo stato:
$ systemctl start mariadb
$ systemctl status mariadb
Assicurati di non visualizzare errori nel processo. Quindi, esegui lo script mysql_secure_installation per configurare la password di root di MySQL e la protezione avanzata:
$ mysql_secure_installation
Assicurati che la password root di MariaDB sia identica su tutti gli host MariaDB. Crea un utente MariaDB per eseguire backup e SST. Questo è importante se vogliamo utilizzare il mariabackup consigliato come metodo SST per MariaDB Cluster e anche per scopi di backup:
$ 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];
Dobbiamo modificare il file di configurazione predefinito per caricare le funzionalità di MariaDB Cluster. Apri /etc/my.cnf.d/server.cnf e assicurati che esistano le seguenti righe per una configurazione minima:
[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
Non dimenticare di modificare il valore wsrep_node_address con l'indirizzo IP del nodo del database per la comunicazione del cluster MariaDB. Inoltre, il valore wsrep_provider potrebbe essere diverso a seconda del server MariaDB e della versione del cluster MariaDB installati. Individua il percorso libgalera_smm.so e specificalo di conseguenza qui.
Ripeti gli stessi passaggi su tutti i nodi del database e ora siamo pronti per avviare il nostro cluster.
Avvio del cluster
Poiché si tratta di un nuovo cluster, possiamo selezionare uno qualsiasi dei nodi MariaDB per diventare il nodo di riferimento per il processo di bootstrap del cluster. Scegliamo mariadb1. Assicurati prima che MariaDB sia arrestato, quindi esegui il comando galera_new_cluster per eseguire il bootstrap:
$ systemctl stop mariadb
$ galera_new_cluster
$ systemctl status mariadb
Sugli altri due nodi (mariadb2 e mariadb3), lo avvieremo usando il comando standard di MariaDB start:
$ systemctl stop mariadb
$ systemctl start mariadb
Verifica se tutti i nodi fanno parte del cluster osservando lo stato relativo a wsrep su ogni nodo:
MariaDB> SHOW STATUS LIKE 'wsrep%';
Assicurati che lo stato riportato sia il seguente:
wsrep_local_state_comment | Synced
wsrep_cluster_size | 3
wsrep_cluster_status | Primary
Per MariaDB 10.4 e Galera Cluster 4, possiamo ottenere le informazioni sui membri del cluster direttamente dalla tabella mysql.wsrep_cluster_members su qualsiasi nodo MariaDB:
$ 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 |
+--------------------------------------+--------------------------------------+---------------+-----------------------+
Se qualcosa va storto durante il bootstrap del cluster, controlla il log degli errori MySQL in /var/log/mysqld.log su tutti i nodi MariaDB. Una volta che un cluster è stato avviato ed è in esecuzione, non eseguire più lo script galera_new_cluster per avviare un servizio MariaDB. Dovrebbe essere sufficiente utilizzare il comando standard "systemctl start/restart mariadb", a meno che non ci sia più alcun nodo del database nello stato PRIMARY. Dai un'occhiata a questo post del blog, Come eseguire il bootstrap di MySQL o cluster MariaDB per capire perché questo passaggio è fondamentale.
Passo bonus
Ora hai già un cluster di database in esecuzione senza alcuna funzionalità di monitoraggio e gestione. Perché non importi il cluster di database in ClusterControl? Installare ClusterControl su un altro server separato e configurare SSH senza password dal server ClusterControl su tutti i nodi del database. Supponendo che l'IP del server ClusterControl sia 192.168.0.240, eseguire i seguenti comandi sul server ClusterControl:
$ 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
Quindi vai su ClusterControl -> Import -> MySQL Galera e inserisci i dettagli SSH richiesti:
Nel secondo passaggio in Definisci server MySQL, disattiva "Rilevamento automatico dei nodi " e specificare tutti gli indirizzi IP dei nodi del database e assicurarsi che sia presente un segno di spunta verde accanto all'indirizzo IP, a indicare che ClusterControl è in grado di raggiungere il nodo tramite SSH senza password:
Fai clic su Importa e attendi fino al completamento del processo di importazione. Dovresti vederlo sotto l'elenco dei cluster:
Ora sei in buone mani. Si noti che ClusterControl utilizzerà per impostazione predefinita le funzionalità aziendali complete per 30 giorni e, una volta scaduto, tornerà per impostazione predefinita alla Community Edition, che è gratuita per sempre.