MySQL Cluster está diseñado para proporcionar una base de datos compatible con MySQL con alta disponibilidad y baja latencia. La tecnología MySQL Cluster se implementa a través de los motores de almacenamiento NDB (Network DataBase) y NDBCLUSTER y proporciona agrupación en clústeres sin compartir y fragmentación automática para los sistemas de bases de datos MySQL. En la arquitectura de nada compartido, cada uno de los nodos tiene su propia memoria y disco, no se recomienda ni se admite el uso de almacenamiento compartido como NFS, SAN.
Para implementar un MySQL Cluster, tenemos que instalar tres tipos de nodos. Cada tipo de nodo se instalará en su propio servidor. Los componentes son:
1. Nodo de gestión:NDB_MGMD/MGM
El servidor de administración de clústeres se utiliza para administrar el otro nodo del clúster. Podemos crear y configurar nuevos nodos, reiniciar, eliminar o respaldar nodos en el clúster desde el nodo de administración.
2. Nodos de datos - NDBD/NDB
Esta es la capa donde ocurre el proceso de sincronización y replicación de datos entre nodos.
3. Nodos SQL - MySQLD/API
Los servidores de interfaz que utilizan las aplicaciones para conectarse al clúster de la base de datos.
En este tutorial, lo guiaré a través de la instalación y configuración de MySQL Cluster con centOS 7. Configuraremos el nodo de administración, dos nodos de datos y dos nodos de SQL.
Requisitos
- El sistema operativo es CentOS 7 - 64 bits.
- 5 servidores CentOS o máquinas virtuales. Usaré los nombres de host y las direcciones IP como se muestra a continuación:
- Nodo de gestión
db1 =192.168.1.120 - Nodos de datos
db2 =192.168.1.121
db3 =192.168.1.122 - Nodos SQL
db4 =192.168.1.123
db5 =192.168.1.124
Paso 1:configurar el nodo de gestión
El primer paso es crear el "Nodo de Gestión" con CentOS 7 db1 y IP 192.168.1.120 . Asegúrese de haber iniciado sesión en el servidor db1 como usuario root.
A. Descargue el software MySQL Cluster
Lo descargaré del sitio de MySQL con wget. Estoy usando "Red Hat Enterprise Linux 7/Oracle Linux 7 (x86, 64-bit), RPM Bundle" que es compatible con CentOS 7. Luego extraiga el archivo tar.
cd ~
wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
tar -xvf MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
B. Instalar y eliminar paquetes
Antes de instalar el paquete rpm para MySQL Cluster, debe instalar perl-Data-Dumper que es requerido por el servidor MySQL-Cluster. Y debe eliminar mariadb-libs antes de que podamos instalar MySQL Cluster.
yum -y install perl-Data-Dumper
yum -y remove mariadb-libs
C. Instale el clúster de MySQL
Instale el paquete MySQL Cluster con estos comandos rpm:
cd ~
rpm -Uvh MySQL-Cluster-client-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-server-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-shared-gpl-7.4.10-1.el7.x86_64.rpm
Asegúrate de que no haya ningún error.
D. Configurar el clúster de MySQL
Cree un nuevo directorio para los archivos de configuración. Usaré el directorio "/var/lib/mysql-cluster".
mkdir -p /var/lib/mysql-cluster
Luego cree un nuevo archivo de configuración para la administración del clúster llamado "config.ini " en el directorio mysql-cluster.
cd /var/lib/mysql-cluster
vi config.ini
Pegue la configuración a continuación:
[ndb_mgmd default]
# Directory for MGM node log files
DataDir=/var/lib/mysql-cluster
[ndb_mgmd]
#Management Node db1
HostName=192.168.1.120
[ndbd default]
NoOfReplicas=2 # Number of replicas
DataMemory=256M # Memory allocate for data storage
IndexMemory=128M # Memory allocate for index storage
#Directory for Data Node
DataDir=/var/lib/mysql-cluster
[ndbd]
#Data Node db2
HostName=192.168.1.121
[ndbd]
#Data Node db3
HostName=192.168.1.122
[mysqld]
#SQL Node db4
HostName=192.168.1.123
[mysqld]
#SQL Node db5
HostName=192.168.1.124
Guarde el archivo y salga.
E. Inicie el nodo de gestión
A continuación, inicie el nodo de gestión con el siguiente comando:
ndb_mgmd --config-file=/var/lib/mysql-cluster/config.ini
El resultado debería ser similar a esto:
MySQL Cluster Management Server mysql-5.6.28 ndb-7.4.10
2016-03-22 19:26:08 [MgmtSrvr] INFO -- The default config directory '/usr/mysql-cluster' does not exist. Trying to create it...
2016-03-22 19:26:08 [MgmtSrvr] INFO -- Successfully created config directory
Se inicia el nodo de administración, ahora puede usar el comando "ndb_mgm" para monitorear el nodo:
ndb_mgm
show
Puede ver que el nodo de administración se inició con:mysql-6.6 y ndb-7.4.
Paso 2:configurar los nodos de datos de clúster de MySQL
Usaremos 2 servidores CentOS para los nodos de datos.
- db2 =192.168.1.121
- db3 =192.168.1.122
A. Inicie sesión como usuario root y descargue el software MySQL Cluster
Inicie sesión en el servidor db2 con ssh:
ssh [email protected]
Luego descargue el paquete MySQL Cluster y extráigalo:
cd ~
wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
tar -xvf MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
B. Instalar y eliminar paquetes
Instale perl-Data-Dumper y elimine mariadb-libs:
yum -y install perl-Data-Dumper
yum -y remove mariadb-libs
C. Instale el clúster de MySQL
Ahora podemos instalar los paquetes de MySQL Cluster para los nodos de datos con estos comandos rpm:
cd ~
rpm -Uvh MySQL-Cluster-client-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-server-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-shared-gpl-7.4.10-1.el7.x86_64.rpm
Asegúrate de que no haya ningún error.
D. Configurar nodo de datos
Cree un nuevo archivo de configuración en el directorio /etc con el editor vi:
vi /etc/my.cnf
Pegue la configuración a continuación:
[mysqld]
ndbcluster
ndb-connectstring=192.168.1.120 # IP address of Management Node
[mysql_cluster]
ndb-connectstring=192.168.1.120 # IP address of Management Node
Guarde el archivo y salga.
Luego cree el nuevo directorio para los datos de la base de datos que definimos en el archivo de configuración del nodo de administración "config.ini".
mkdir -p /var/lib/mysql-cluster
Ahora inicie el nodo de datos/ndbd:
ndbd
resultados:
2016-03-22 19:35:56 [ndbd] INFO -- Angel connected to '192.168.1.120:1186'
2016-03-22 19:35:56 [ndbd] INFO -- Angel allocated nodeid: 2
Nodo de datos db2 conectado al nodo de gestión ip 192.168.1.120.
E. Vuelva a realizar los pasos 2.A - 2.D en el servidor db3.
Como tenemos 2 nodos de datos, vuelva a realizar los pasos 2.A - 2.D en nuestro segundo nodo de datos.
Paso 3:configurar el nodo SQL
Este paso contiene la configuración del nodo SQL que proporciona acceso a la aplicación a la base de datos. Usamos 2 servidores CentOS para los Nodos SQL:
- db4 =192.168.1.123
- db5 =192.168.1.124
A. Inicie sesión y descargue MySQL Cluster
Inicie sesión en el servidor db4 como usuario root:
ssh [email protected]
Y descargue el paquete MySQL Cluster:
cd ~
wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
tar -xvf MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
B. Instalar y eliminar paquetes
Instale perl-Data-Dumper y elimine las mariadb-libs que entran en conflicto con MySQL Cluster.
yum -y install perl-Data-Dumper
yum -y remove mariadb-libs
C. Instale el clúster de MySQL
Instale el servidor MySQL Cluster, el cliente y el paquete compartido con los siguientes comandos rpm:
cd ~
rpm -Uvh MySQL-Cluster-client-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-server-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-shared-gpl-7.4.10-1.el7.x86_64.rpm
D. Configurar el nodo SQL
Cree un nuevo archivo my.cnf en el directorio /etc:
vi /etc/my.cnf
Y pegue la configuración a continuación:
[mysqld]
ndbcluster
ndb-connectstring=192.168.1.120 # IP address for server management node
default_storage_engine=ndbcluster # Define default Storage Engine used by MySQL
[mysql_cluster]
ndb-connectstring=192.168.1.120 # IP address for server management node
Guarde el archivo y salga del editor.
Inicie el nodo SQL iniciando el servidor MySQL:
service mysql start
E. Vuelva a realizar el paso 3.A - 3.D en el servidor db5.
Vuelva a realizar los pasos 3.A - 3.D en el segundo servidor SQL (db5).
Paso 4:monitorear el clúster
Para ver el estado del clúster, debemos iniciar sesión en el nodo de administración db1.
ssh [email protected]
Podemos usar el comando ndb_mgm para ver el estado del clúster:
ndb_mgm
ndb_mgm> show
Otro comando útil es:
ndb_mgm -e "all status"
ndb_mgm -e "all report memory"
Paso 5:prueba del clúster
Para realizar una prueba en nuestro nuevo MySQL Cluster, debemos iniciar sesión en los servidores SQL Nodes db4 o db5.
Inicie sesión en el servidor db4:
ssh [email protected]
Cambie la contraseña predeterminada de MySQL que se almacenó en ".mysql_secret " archivo en el directorio raíz:
cd ~
cat .mysql_secret
esta es mi muestra:
# The random password set for the root user at Tue Mar 22 19:44:07 2016 (local time): qna3AwbJMuOnw23T
Ahora cambie la contraseña con el siguiente comando:
mysql_secure_installation
Escriba su antigua contraseña mysql y luego escriba la nueva, presione Intro para confirmar todo.
Si todo está listo, puede iniciar sesión en el shell de MySQL con su contraseña:
mysql -u root -p
Después de iniciar sesión, cree un nuevo usuario raíz con el host "@ ", por lo que podremos acceder a MySQL desde el exterior.
CREATE USER 'root'@'%' IDENTIFIED BY 'aqwe123';
Reemplazar aqwe123 con su propia contraseña segura! Ahora puede ver el nuevo usuario raíz con host "@" en la lista de usuarios de MySQL:
select user, host, password from mysql.user;
Y otorgue al nuevo usuario raíz acceso de lectura y escritura desde el nodo remoto:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '*94CC7BF027327993D738E11...(Encrypted PASSWORD)' WITH GRANT OPTION;
Ahora intente crear una nueva base de datos desde el servidor db4 y verá la base de datos en db5 también.
Este es solo un resultado de muestra para probar la replicación de datos del clúster.
MySQL Cluster se configuró correctamente en CentOS 7 con 5 nodos de servidor.
Conclusión
MySQL Cluster es una tecnología que proporciona Alta Disponibilidad y Redundancia para bases de datos MySQL. Utiliza NDB o NDBCLUSTER como motor de almacenamiento y proporciona agrupación en clústeres sin compartir y fragmentación automática para bases de datos MySQL. Para implementar el clúster, necesitamos 3 componentes:Nodo de gestión (MGM), Nodos de datos (NDB) y Nodos SQL (API). Cada uno de los nodos debe tener su propia memoria y disco. No se recomienda utilizar almacenamiento en red como NFS. Para instalar MySQL Cluster en un sistema mínimo CentOS 7, debemos eliminar el paquete mariadb-libs, mariadb-libs entra en conflicto con MySQL-Cluster-server y debe instalar el paquete perl-Data-Dumper, lo necesita MySQL-Cluster -servidor. MySQL Cluster es fácil de instalar y configurar en múltiples servidores CentOS.