Introducción
La alta disponibilidad en relación con una base de datos significa que la base de datos respectiva puede manejar errores del host. También es importante que la base de datos pueda recuperarse de cualquier MySQL, sistema operativo o fallas de mantenimiento de hardware que de otra manera podrían resultar en tiempo de inactividad.
Las soluciones de alta disponibilidad dependen del tipo de aplicación que se implementa, las mejores prácticas en su entorno o la disponibilidad requerida. En MySQL, al igual que en el entorno de clúster típico, existen:
- Nodo de gestión que se utiliza para supervisar y configurar los clientes.
- Nodos de datos utilizados para almacenar datos y compartir / replicar
- Nodos SQL que son las interfaces para conectarse a todos los nodos.
antes de que empieces
- Al menos tres instancias de VPS que ejecutan Ubuntu 18.04 configuradas en un entorno de red privada virtual
- Usuario no root con permisos sudo configurados en cada VPS.
- wget y alquitrán Paquetes instalados en el VPS.
pasos
Actualice los paquetes del sistema en los 3 nodos.
$ sudo apt update -y && sudo apt upgrade -y
Configurar el nodo de gestión
$ wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz
Extraiga el archivo comprimido en una nueva carpeta.
$ mkdir mysql $ tar -xzvf mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz -C mysql --strip-components=1
Copie los archivos binarios del servidor de administración del clúster; ndb_mgm y ndb_mgmd en su carpeta de binarios local y cambie el modo de los archivos a ejecutable.
$ sudo cp /mysql/bin/ndb_mgm* /usr/local/bin $ sudo chmod +x /usr/local/bin/ndb_mgm*
Cree un archivo de configuración llamado config.ini en un recién creado mysql-cluster Directorio para el nodo del clúster de gestión. Este archivo identifica el nodo SQL y las direcciones IP del nodo de gestión.
También identifica la dirección IP del nodo de datos y sus directorios de datos.
$ sudo mkdir -p /var/lib/mysql-cluster $ nano /var/lib/mysql-cluster/config.ini
Nota especial: recuerde reemplazar las direcciones IP con las de la configuración de su entorno. En cuanto al siguiente código de configuración: si solo tiene un nodo de datos, NoOfReplicas debe establecerse en 1 porque solo tiene un nodo de datos que se usa para almacenar una réplica de tabla.
[ndbd default] NoOfReplicas=1 DataMemory=80M IndexMemory=18M [mysqld default] [ndb_mgmd default] [tcp default] # Cluster Control / Management node [ndb_mgmd] hostname=192.168.56.10 # Data Node [ndbd] hostname=192.168.56.11 DataDir= /var/lib/mysql-cluster # Data Node 1 [ndbd] HostName=192.168.56.12 DataDir=/var/lib/mysql-cluster # SQL Node [mysqld] hostname=192.168.56.40
Ahora inicie el nodo de administración de clústeres y actívelo al inicio. Recuerde que todos los demás nodos deben estar activos; de lo contrario, recibirá un mensaje de error para las direcciones IP inexistentes.
$ sudo ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir=/var/lib/mysql-cluster/MySQL Cluster Management Server mysql-5.6.31 ndb-7.4.12$ sudo echo'ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir=/var/lib/mysql-cluster/' >> /etc/rc.local
Nota especial: si obtiene un error de permiso, inicie sesión como root (sudo su) y ejecute el comando nuevamente.
Configurar el nodo de datos
Instale el paquete libaio1 de Linux, que permite realizar múltiples llamadas de E / S simultáneas al sistema.
$ sudo apt install libaio1
Crea un nuevo grupo y un nuevo usuario llamado mysql
$ groupadd mysql $ useradd -g mysql mysql
Descargar el. abajo mysql-cluster Empaquete como en el nodo de administración.
$ wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz $ mkdir mysql $ tar -xzvf mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz -C mysql --strip-components=1
Esta vez, mueva toda la carpeta mysql a / usr /local Directorio.
$ sudo mv mysql/ /usr/local
Cambie el directorio a la carpeta movida y ejecute el script para crear bases de datos del sistema mysql_install_db
$ cd /usr/local/mysql $ ./scripts/mysql_install_db --user=mysql
Copie el archivo del servicio mysql en el adentro.d carpeta y habilite el servicio mysql al inicio.
$ sudo cp support-files/mysql.server /etc/init.d/mysql $ sudo systemctl enable mysql
Mueva los binarios locales a su directorio binario local y cree un nuevo enlace simbólico.
$ sudo mv bin/* /usr/local/bin/ $ sudo rm -rf bin/ $ sudo ln -s /usr/local/bin /usr/local/mysql/
Cambie el directorio MySQL a raíz Propietario en el mysqlgrupo y directorio de datos al propietario de mysql en el grupo de mysql.
$ sudo chown -R root:mysql . $ sudo chown -R mysql data
Ahora cree un nuevo archivo de configuración para su nodo de datos para definir el clúster y el nodo de administración al que pertenece.
$ sudo mkdir -p /var/lib/mysql-cluster $ sudo chown -R mysql /var/lib/mysql-cluster
Inicie el nodo de datos
$ ndbd --initial 2018-11-01 00:51:08 [ndbd] INFO -- Angel connected to '192.168.56.20:1186' 2018-11-01 00:51:23 [ndbd] INFO -- Angel allocated nodeid: 2$ sudo systemctl start mysql
Ahora puede crear una contraseña para su uso de MySQL
$ sudo mysql_secure_installation
Configurar el nodo SQL
Primero debe instalar el paquete de clúster mysql y mover la carpeta a su directorio / usr / local.
$ wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz $ mkdir mysql $ tar -xzvf mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz -C mysql --strip-components=1 $ mv mysql /usr/local/
Ejecute el archivo de secuencia de comandos para instalar la base de datos.
$ cd /usr/local/mysql $ sudo ./scripts/mysql_install_db --user=mysql
Copie el archivo de servicio MySQL y habilítelo en el arranque
$ cp support-files/mysql.server /etc/init.d/mysql $ sudo systemctl enable msql
Mueva los binarios locales a su directorio binario local y cree un nuevo enlace simbólico.
$ sudo mv bin/* /usr/local/bin/ $ sudo rm -rf bin/ $ sudo ln -s /usr/local/bin /usr/local/mysql/
Finalmente, crea un mi.cnf y pegue el siguiente código mientras reemplaza la dirección IP de su nodo de administración.
$ vim /etc/my.cnf
# 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.56.20 [mysql_cluster] # IP address management node ndb-connectstring=192.168.56.20 # MySQL Pid and Log [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
Guarde los cambios, salga, luego inicie el servicio mysql y configure su contraseña.
$ sudo systemctl start mysql $ sudo mysql_secure_installation $ mysql -u root -p
Para verificar que su instalación funcione, cree una base de datos de muestra en su nodo SQL y vea que se replica en el nodo de datos.
Cree una nueva base de datos en el mismo SQL VPS (nómbrelo como desee)
mysql> CREATEDATABASE vegetables; Query OK, 1 row affected (0.02 sec)
Inicie sesión en el nodo de datos y verifique las bases de datos, la base de datos creada en el nodo SQL debería haberse replicado.
$ mysql -u root -p mysql> SHOWDATABASES;
Conclusión
Ha configurado correctamente su replicación de clúster MySQL para alta disponibilidad. Puede apagar el estado de su clúster desde el nodo de administración a través de la consola ndb_mgm usando el comando shutdown.
Finalmente, para monitorear lo mismo desde la consola ndb_mgm, puede usar el show Mando. Se ha demostrado que la replicación de clústeres de MySQL ofrece tolerancia a fallas, conmutación por error automatizada y elasticidad.