MySQL Cluster es una tecnología para proporcionar alta disponibilidad para bases de datos MySQL. Utiliza NDB (Network DataBase) o NDBCLUSTER como motor de almacenamiento de la base de datos. MySQL Cluster está diseñado como una arquitectura ACID multimaestro sin un único punto de falla, utiliza fragmentación automática (particionamiento) para escalar los procesos de lectura y escritura.
Para implementar un MySQL Cluster, necesitamos 3 tipos diferentes de nodos:
- Nodo de gestión (ndb_mgmd )
- Se utiliza para monitorear y configurar el clúster.
- Nodo de datos (ndbd )
- Estos nodos se utilizan para almacenar los datos que proporcionan fragmentación automática y pueden manejar la replicación.
- Nodo SQL (mysqld )
- Interfaces de MySQL Server para conectarse a todos los nodos.
En este tutorial, le mostraré cómo instalar un 'Clúster MySQL' en Ubuntu 16.04 LTS (Xenial Xerus).
Requisitos previos
- 4 nodos con servidor Ubuntu 16.04
- 192.168.1.11 nodo de gestión
- 192.168.1.12 datos-nodo1
- 192.168.1.13 datos-nodo2
- 192.168.1.14 nodo SQL
- Privilegios de raíz en los nodos.
Paso 1:instalar y configurar el nodo de gestión
En este paso, instalaremos el nodo de administración para nuestro clúster con la dirección IP 192.168.1.11. Instalamos el software de clúster MySQL y lo configuramos como nodo de administración para el clúster.
Inicie sesión en el nodo de gestión con ssh:
ssh [email protected]
TYPE YOUR PASSWORD
Abra el sitio del clúster de MySQL aquí y elija la opción 'Linux-generic ' y descargue el paquete de 64 bits haciendo clic en 'Descargar botón '.
Descargue el paquete de clúster de MySQL con wget y extráigalo.
wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz
tar -xzvf mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz
Cambiar el nombre del directorio a mysql:
mv mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64/ mysql/
Vaya al directorio mysql y copie los 2 archivos binarios para el comando de administración de clústeres 'ndb_mgmd y ndb_mgm ' al directorio '/usr/local/bin/' y luego hágalos ejecutables con el comando chmod.
cd ~/mysql/
cp bin/ndb_mgm* /usr/local/bin/
chmod +x /usr/local/bin/ndb_mgm*
Configure el nodo de administración creando un nuevo directorio 'mysql-cluster' para los archivos de configuración en el directorio '/var/lib/'.
Cree un directorio 'mysql-cluster' y cree una nueva configuración 'config.ini' en el directorio:
mkdir -p /var/lib/mysql-cluster/
vim /var/lib/mysql-cluster/config.ini
Pegue la configuración a continuación:
[ndbd default]
NoOfReplicas=2
DataMemory=80M
IndexMemory=18M
[mysqld default]
[ndb_mgmd default]
[tcp default]
# Cluster Control / Management node
[ndb_mgmd]
hostname=192.168.1.11
# Data Node 1
[ndbd]
hostname=192.168.1.12
DataDir= /var/lib/mysql-cluster
# Data Node 1
[ndbd]
HostName=192.168.1.13
DataDir=/var/lib/mysql-cluster
# SQL Node
[mysqld]
hostname=192.168.1.14
# If you to add new SQL Node
[mysqld]
Cambie la dirección IP de ndb_mgmd para administración, ndbd para nodo de datos y mysqld para el nodo sql para que coincida con su configuración.
Guarde el archivo y salga.
A continuación, inicie el proceso del nodo de gestión con el siguiente comando:
ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir=/var/lib/mysql-cluster/
Haga que se inicie en el momento del arranque agregando el comando a '/etc/rc.local 'archivo:
echo 'ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir=/var/lib/mysql-cluster/' >> /etc/rc.local
Si ves los resultados:
MySQL Cluster Management Server mysql-5.6.31 ndb-7.4.12
Luego, el proceso del nodo de gestión se está ejecutando.
Compruebe el nodo de gestión con otro comando:
# Checking port 1186 used by ndb_mgmd
netstat -plntu
# Checking the management node is ready
ndb_mgm
show
Paso 2:instalar y configurar el nodo de datos
En este paso, instalaremos el software de clúster MySQL y lo configuraremos como nodo de datos. Usaremos 2 servidores ubuntu 16.04 como nodos de datos:data-node1 con dirección IP 192.168.1.12 y data-node2 con dirección IP 192.168.1.13.
Inicie sesión en el servidor data-node1 con ssh:
ssh [email protected]
Antes de instalar el software de clúster de MySQL, debemos instalar un nuevo paquete 'libaio1 ' y crea un nuevo usuario y grupo mysql . Ejecute el siguiente comando como root para eso:
apt-get install libaio1
groupadd mysql
useradd -g mysql mysql
Ahora descargue el paquete de clúster de MySQL 'Linux-Generic ', extraiga y cambie el nombre del directorio a mysql.
wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz
tar -xzvf mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz
mv mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64/ mysql/
Mueva el directorio 'mysql' a '/usr/local /' y vaya a ese directorio.
mv mysql /usr/local/
cd /usr/local/mysql/
Ejecute el script para crear las bases de datos del sistema:
./scripts/mysql_install_db --user=mysql
Si no hay ningún error, copie el archivo de servicio mysql en '/etc/init.d ' y agregue el script de inicio de mysql para que se ejecute en el momento del arranque.
cp support-files/mysql.server /etc/init.d/mysql
systemctl enable mysql
A continuación, mueva todos los comandos binarios de mysql a '/usr/local/bin ' y crea un nuevo enlace simbólico.
mv bin/* /usr/local/bin/
rm -rf bin/
ln -s /usr/local/bin /usr/local/mysql/
Cambie el propietario del directorio mysql a usuario raíz y agrupe mysql, y cambie el directorio de datos a mysql como propietario.
chown -R root:mysql .
chown -R mysql data
Cree un nuevo archivo de configuración mysql 'my.cnf ' con vim:
vim /etc/my.cnf
Pegue la configuración a continuación:
# MySQL Config
[mysqld]
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
user=mysql
# Run ndb storage engine
ndbcluster
# IP address management node
ndb-connectstring=192.168.1.11
[mysql_cluster]
# IP address management node
ndb-connectstring=192.168.1.11
# MySQL Pid and Log
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
Guardar y salir.
Cree un nuevo directorio para los nodos de datos y cambie la propiedad al usuario mysql.
mkdir -p /var/lib/mysql-cluster/
chown -R mysql /var/lib/mysql-cluster
Inicie el servicio mysql con el siguiente comando:
ndbd --initial
systemctl start mysql
Asegúrese de que no haya ningún error y que los resultados estén a continuación (nodo de datos 2):
Se inicia MySQL en el nodo de datos. Ahora puede configurar la contraseña de MySQL con el comando:
mysql_secure_installation
o acceda al shell de MySQL.
mysql -u root -p
NOTA :
Rehaga este paso en 'data-node2 ' dirección IP del servidor 192.168.1.13.
Paso 3:instalar y configurar el nodo SQL
En este paso, instalaremos el software MySQL Cluster y lo configuraremos como SQL Node. Este nodo se utiliza para acceder a las bases de datos en los nodos de datos. El proceso de instalación es el mismo que el del nodo de datos, pero no tenemos que ejecutar el servicio ndbd en el nodo SQL.
Inicie sesión en el nodo SQL con ssh:
ssh [email protected]
Instale el paquete libaio1 y cree un nuevo usuario y grupo mysql:
apt-get install libaio1
groupadd mysql
useradd -g mysql mysql
Descargue el paquete de clúster mysql del sitio, extráigalo y cámbiele el nombre:
http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz
tar -xzvf mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz
mv mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64/ mysql/
Mueva el directorio mysql:
mv mysql /usr/local/
cd /usr/local/mysql/
Ejecute mysql_install_db guión:
./scripts/mysql_install_db --user=mysql
Copie el archivo de servicio y agréguelo para que se inicie en el momento del arranque:
cp support-files/mysql.server /etc/init.d/mysql
systemctl enable mysql
Mueva todos los binarios mysql a '/usr/local/bin ' directorio:
mv bin/* /usr/local/bin/
rm -rf bin/
ln -s /usr/local/bin /usr/local/mysql/
Cambie el propietario de todos los archivos y el directorio:
chown -R root:mysql .
chown -R mysql data
Crear un nuevo my.cnf archivo de configuración con vim:
vim /etc/my.cnf
Pegue la configuración a continuación:
# MySQL Config
[mysqld]
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
user=mysql
# Run ndb storage engine
ndbcluster
# IP address management node
ndb-connectstring=192.168.1.11
[mysql_cluster]
# IP address management node
ndb-connectstring=192.168.1.11
# MySQL Pid and Log
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
Guardar y salir.
Inicie el nodo SQL iniciando el servicio mysql con el comando systemctl:
systemctl start mysql
Se inicia el Nodo SQL, ahora puede configurar la contraseña para MySQL.
mysql_secure_installation
Paso 4 - Prueba
Prueba para crear una nueva base de datos desde el nodo SQL.
mysql -u root -p
TYPE PASSWORD
create database nanana;
Verifique que la base de datos esté replicada en los servidores de nodos de datos.
Y cuando un nodo está apagado, otro nodo manejará la conexión desde el nodo SQL.
mysql -u root -p
TYPE PASSWORD
show databases;
Comprobación del estado del clúster desde el nodo de gestión:
ndb_mgm
show
Paso 5 - Consejos adicionales
Realización de un reinicio y apagado seguro del clúster.
Vaya al nodo de administración del clúster y escriba el siguiente comando para apagar el clúster:
ndb_mgm
shutdown
El comando apagará todos los servicios ndb en los nodos de datos.
Si desea volver a iniciar el clúster, puede ejecutar el siguiente comando en el nodo de administración:
ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir=/var/lib/mysql-cluster/
Y ejecute el siguiente comando en todos los nodos de datos:
ndbd
systemctl start mysql
Luego inicie el servicio mysql en los nodos SQL:
systemctl start mysql
Ahora su MySQL Cluster se está ejecutando de nuevo.