sql >> Base de Datos >  >> RDS >> MariaDB

Instalación fuera de línea del clúster de MariaDB para CentOS

La mayoría de los pasos de instalación disponibles en Internet cubren la instalación en línea estándar, suponiendo que los hosts de la base de datos tengan una conexión de Internet activa a los repositorios de paquetes y satisfagan todas las dependencias. Sin embargo, los pasos y comandos de instalación son un poco diferentes para la instalación fuera de línea. La instalación fuera de línea es una práctica común en un entorno estricto y seguro como los sectores financiero y militar para el cumplimiento de la seguridad, reduciendo los riesgos de exposición y manteniendo la confidencialidad.

En esta publicación de blog, instalaremos un clúster de MariaDB de tres nodos en un entorno fuera de línea en hosts CentOS. Considere los siguientes tres nodos para esta instalación:

  • mariadb1 - 192.168.0.241
  • mariadb2 - 192.168.0.242
  • mariadb3 - 192.168.0.243

Descargar paquetes

La parte que consume más tiempo es obtener todos los paquetes necesarios para nuestra instalación. En primer lugar, vaya al repositorio MariaDB respectivo que deseamos instalar (en este ejemplo, nuestro sistema operativo es CentOS 7 de 64 bits):

  • 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/

Asegúrese de descargar exactamente la misma versión secundaria para todos los paquetes relacionados con MariaDB. En este ejemplo, descargamos MariaDB versión 10.4.13. Hay un montón de paquetes en este repositorio, pero no los necesitamos todos solo para ejecutar un clúster de MariaDB. Algunos de los paquetes están desactualizados y tienen fines de depuración. Para MariaDB Galera 10.4 y CentOS 7, necesitamos descargar los siguientes paquetes del repositorio de MariaDB 10.4:

  • jemalloc
  • galera-3/galera-4
  • libzstd
  • Copia de seguridad de MariaDB
  • servidor MariaDB
  • Cliente MariaDB
  • MariaDB compartida
  • MariaDB común
  • Compatibilidad con MariaDB

Los siguientes comandos wget simplificarían el proceso de descarga:

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

Algunos de estos paquetes tienen dependencias con otros paquetes. Para satisfacerlos a todos, probablemente sea mejor montar la imagen ISO del sistema operativo e indicarle al administrador de paquetes yum que use la imagen ISO como un repositorio base fuera de línea. De lo contrario, perderíamos mucho tiempo tratando de descargar/transferir los paquetes de un host/medio a otro.

Si está buscando paquetes antiguos de MariaDB, búsquelos en su repositorio de archivos aquí. Una vez descargados, transfiera los paquetes a todos los servidores de la base de datos a través de una unidad USB, una grabadora de DVD o cualquier almacenamiento en red conectado a los hosts de la base de datos.

Montar la imagen ISO localmente

Algunas de las dependencias deben satisfacerse durante la instalación y una forma de lograrlo fácilmente es configurar el repositorio yum fuera de línea en los servidores de la base de datos. En primer lugar, tenemos que descargar la imagen ISO del DVD de CentOS 7 desde el sitio espejo de CentOS más cercano, en el directorio "isos":

$ wget http://centos.shinjiru.com/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-2003.iso

Puede transferir la imagen y montarla directamente o grabarla en un DVD y usar la unidad de DVD y conectarla al servidor. En este ejemplo, vamos a montar la imagen ISO como un DVD en el servidor:

$ mkdir -p /media/CentOS
$ mount -o loop /root/CentOS-7-x86_64-DVD-2003.iso /media/CentOS

Luego, habilite el repositorio CentOS-Media (c7-media) y deshabilite los repositorios en línea estándar (base, actualizaciones, extras):

$ yum-config-manager --disable base,updates,extras
$ yum-config-manager --enable c7-media

Ya estamos listos para la instalación.

Instalación y configuración del servidor MariaDB

Los pasos de instalación son bastante sencillos si tenemos listos todos los paquetes necesarios. En primer lugar, se recomienda deshabilitar SElinux (o configurarlo en modo permisivo):

$ setenforce 0
$ sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config

Navegue hasta el directorio donde se encuentran todos los paquetes, en este caso, /root/installer/. Asegúrese de que todos los paquetes estén allí:

$ 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

Primero instalemos la dependencia mariabackup llamada socat y luego ejecutemos el comando yum localinstall para instalar los paquetes RPM y satisfacer todas las dependencias:

$ yum install socat
$ yum localinstall *.rpm

Inicie el servicio MariaDB y verifique el estado:

$ systemctl start mariadb
$ systemctl status mariadb

Asegúrese de no ver ningún error en el proceso. Luego, ejecute el script mysql_secure_installation para configurar la contraseña raíz de MySQL y el endurecimiento:

$ mysql_secure_installation

Asegúrese de que la contraseña raíz de MariaDB sea idéntica en todos los hosts de MariaDB. Cree un usuario de MariaDB para realizar copias de seguridad y SST. Esto es importante si queremos utilizar el mariabackup recomendado como método SST para MariaDB Cluster, y también con fines de copia de seguridad:

$ 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];

Necesitamos modificar el archivo de configuración predeterminado para cargar las funcionalidades de MariaDB Cluster. Abra /etc/my.cnf.d/server.cnf y asegúrese de que existan las siguientes líneas para una configuración mínima:

[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

No olvide cambiar el valor de wsrep_node_address con la dirección IP del nodo de la base de datos para la comunicación de MariaDB Cluster. Además, el valor de wsrep_provider puede ser diferente según el servidor de MariaDB y la versión del clúster de MariaDB que haya instalado. Localice la ruta libgalera_smm.so y especifíquela aquí.

Repita los mismos pasos en todos los nodos de la base de datos y ahora estamos listos para iniciar nuestro clúster.

Arranque del clúster

Como se trata de un clúster nuevo, podemos elegir cualquiera de los nodos de MariaDB para que se convierta en el nodo de referencia para el proceso de arranque del clúster. Elijamos mariadb1. Asegúrese de que MariaDB esté detenido primero, luego ejecute el comando galera_new_cluster para arrancar:

$ systemctl stop mariadb
$ galera_new_cluster
$ systemctl status mariadb

En los otros dos nodos (mariadb2 y mariadb3), vamos a iniciarlo usando el comando de inicio estándar de MariaDB:

$ systemctl stop mariadb
$ systemctl start mariadb

Verifique si todos los nodos son parte del clúster observando el estado relacionado con wsrep en cada nodo:

MariaDB> SHOW STATUS LIKE 'wsrep%';

Asegúrese de que el estado informado sea el siguiente:

wsrep_local_state_comment     | Synced
wsrep_cluster_size            | 3
wsrep_cluster_status          | Primary

Para MariaDB 10.4 y Galera Cluster 4, podemos obtener la información de los miembros del clúster directamente desde la tabla mysql.wsrep_cluster_members en cualquier nodo de 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                  |
+--------------------------------------+--------------------------------------+---------------+-----------------------+

Si algo sale mal durante el arranque del clúster, verifique el registro de errores de MySQL en /var/log/mysqld.log en todos los nodos de MariaDB. Una vez que se inicia y ejecuta un clúster, no vuelva a ejecutar el script galera_new_cluster para iniciar un servicio de MariaDB. Debería ser suficiente con el comando estándar "systemctl start/restart mariadb", a menos que ya no haya un nodo de base de datos en estado PRIMARIO. Consulte esta publicación de blog, How to Bootstrap MySQL o MariaDB Cluster para comprender por qué este paso es fundamental.

Paso adicional

Ahora ya tiene un clúster de base de datos ejecutándose sin funciones de supervisión y administración. ¿Por qué no importa el clúster de la base de datos a ClusterControl? Instale ClusterControl en otro servidor separado y configure SSH sin contraseña desde el servidor ClusterControl a todos los nodos de la base de datos. Suponiendo que la IP del servidor ClusterControl es 192.168.0.240, ejecute los siguientes comandos en el servidor 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

Luego vaya a ClusterControl -> Importar -> MySQL Galera e ingrese los detalles de SSH requeridos:

En el segundo paso, en Definir servidores MySQL, desactive "Detección automática de nodos " y especifique todas las direcciones IP de los nodos de la base de datos, y asegúrese de que haya una marca verde junto a la dirección IP, lo que indica que ClusterControl puede acceder al nodo a través de SSH sin contraseña:

Haga clic en Importar y espere hasta que finalice el trabajo de importación. Debería verlo debajo de la lista de grupos:

Ahora está en buenas manos. Tenga en cuenta que ClusterControl tendrá funciones empresariales completas de forma predeterminada durante 30 días y, una vez que caduque, volverá de forma predeterminada a Community Edition, que es gratuita para siempre.