Site is under maintenance mode. Please wait few min!
Saltar al contenido

Cómo rebasar y actualizar una petición de extracción

marzo 4, 2020

 cúmulo

Introducción

MySQL es una tecnología de software que proporciona una alta disponibilidad y rendimiento. Si ya está familiarizado con otras tecnologías de racimo, se dará cuenta de MySQL Cluster similar a ellos. En resumen, no es uno o más nodos de gestión que controlan los nodos de datos (en los que se almacenan los datos). Después de consultar con el nodo de administración, los clientes (clientes MySQL, servidores, o API nativas) se conectan directamente a los nodos de datos.

Usted puede preguntarse cómo la replicación de MySQL está relacionado con MySQL Cluster. Con el clúster no hay replicación típico de datos, pero en su lugar hay sincronización de los nodos de datos. Para este propósito un motor especial de datos debe ser utilizado – NDB (NDB). Piense en el clúster como un único entorno MySQL lógico con componentes redundantes. Por lo tanto, un clúster MySQL puede participar en la replicación con otros clústeres de MySQL. cúmulo

MySQL funciona mejor en un entorno de compartición nula. Lo ideal es que no hay dos componentes deben compartir el mismo hardware. Por simplicidad, y con fines de demostración, nos limitaremos a la utilización de sólo tres gotas. Habrá dos de las gotitas que actúan como nodos de datos que se sincronizan los datos entre ellos. El tercero de la gotita será utilizado para el administrador de clusters y al mismo tiempo para que el servidor MySQL / cliente. Si usted tiene más gotas, se puede añadir más nodos de datos, separar el gestor de clúster desde el servidor MySQL / cliente, e incluso añadir más gotas como gestores de racimo y servidores MySQL / clientes.

Requisitos previos

Tendrá un total de tres de las gotitas – una gota para el administrador de clúster MySQL y el servidor / cliente de MySQL y dos Gotitas por los nodos de datos MySQL redundantes.

En el mismo centro de datos digitalocean , crear los siguientes gotitas con redes privadas habilitado :

  • Tres Ubuntu 16.04 Las gotitas con un mínimo de 1 GB de RAM y una red privada habilitada
  • no Root usuario con privilegios sudo para cada gotita (configuración inicial del servidor con Ubuntu 16.04 se explica cómo configurar esto.)

MySQL tiendas de racimo una gran cantidad de información en la memoria RAM. Cada gota debe tener al menos 1 GB de RAM.

Como se mencionó en el tutorial de red privada, asegúrese de registros personalizados de configuración para los 3 gotas. En aras de la simplicidad y conveniencia, usaremos los siguientes registros personalizados para cada gotita en el archivo / etc / hosts:

10.XXX.XX.X node1.mysql.cluster10.YYY.YY.Y node2.mysql .cluster10.ZZZ.ZZ.Z manager.mysql.cluster

favor reemplazar las IPs resaltados con las direcciones IP privadas de sus Gotitas de manera correspondiente.

menos que se indique lo contrario, todos los comandos que requieren privilegios de root en este tutorial se debe ejecutar como usuario no root con privilegios sudo.

Paso 1 – Descarga e instalación de MySQL Cluster

En el momento de escribir este tutorial, la última versión GPL del cluster MySQL es 7.4.11. El producto se construye en la parte superior de MySQL 5.6 e incluye: software de gestión de

  • Cluster
  • de datos de software gestor de nodos
  • MySQL 5.6 servidor y cliente binarios

Puede descargar el general Disponible versión libre, (GA) MySQL Cluster desde la página oficial de MySQL Cluster descarga. Desde esta página, elegir el paquete plataforma Debian Linux, que también es adecuado para Ubuntu. Asimismo, asegúrese de seleccionar el de 32 bits o la versión de 64 bits dependiendo de la arquitectura de sus gotas. Cargar el paquete de instalación en cada una de sus gotas.

Las instrucciones de instalación serán los mismos para todas las gotas, así que lleve a cabo estos pasos en todos los 3 gotas.

Antes de iniciar la instalación, el paquete libaio1 se debe instalar ya que es una dependencia:

sudo apt-get install libaio1

  • sudo apt-get install libaio1

Después de eso, instale el paquete MySQL Cluster:

sudo dpkg -i mysql-cluster-gpl-7.4.11-debian7-x86_64.deb

  • sudo dpkg -i mysql-cluster-GPL-7.4.11-debian7-x86_64.deb

ya se puede encontrar la instalación del clúster MySQL en el directorio /opt/mysql/server-5.6/. Vamos a trabajar sobre todo con el directorio bin (/opt/mysql/server-5.6/bin/), donde todos los binarios son.

Los pasos misma instalación deben realizarse en los tres Gotitas independientemente del hecho de que cada uno tendrá diferentes funciones – gerente o nodo de datos.

A continuación, vamos a configurar el administrador de MySQL Cluster en cada gota.

Paso 2 – Configuración y Puesta en marcha del Cluster Manager

En este paso vamos a configurar el administrador de MySQL Cluster (manager.mysql.cluster). Su configuración adecuada se asegurará correcta sincronización y distribución de la carga entre los nodos de datos. Todos los comandos deben ser ejecutados en la gotita manager.mysql.cluster.

El administrador de conglomerado es el primer componente que tiene que ser iniciado en cualquier grupo. Se necesita un archivo de configuración que se pasa como argumento a su archivo binario. Para mayor comodidad, usaremos el /var/lib/mysql-cluster/config.ini archivo para su configuración.

Por manager.mysql.cluster de gotas, en primer lugar crear el directorio donde residirá este archivo (/ var / lib / mysql-cluster):

sudo mkdir /var/lib/mysql-cluster

  • sudo mkdir / var / lib / mysql-cluster

A continuación, crear un archivo y empezar a editar con nano:

sudo nano /var/lib/mysql-cluster/config.ini

  • sudo nano /var/lib/mysql-cluster/config.ini

Este archivo debe contener el siguiente código:

[ndb_mgmd]
# Management process options:
hostname=manager.mysql.cluster # Hostname of the manager
datadir=/var/lib/mysql-cluster # Directory for the log files

[ndbd]
hostname=node1.mysql.cluster # Hostname of the first data node
datadir=/usr/local/mysql/data # Remote directory for the data files

[ndbd]
hostname=node2.mysql.cluster # Hostname of the second data node
datadir=/usr/local/mysql/data # Remote directory for the data files

[mysqld]
# SQL node options:
hostname=manager.mysql.cluster # In our case the MySQL server/client is on the same Droplet as the cluster manager

Para cada uno de los componentes anteriores hemos definido un parámetro de nombre de host. Esta es una medida de seguridad importante, ya que sólo el nombre de host especificado se le permitirá conectar con el gestor y participar en el clúster como por su función designada.

Además, los parámetros de nombre de host, especifique en qué interfaz se ejecutará el servicio. Esto es importante, y es importante para la seguridad, ya que en nuestro caso los nombres de host anteriores apuntan a direcciones IP privadas que hemos especificado en el archivo / etc / hosts archivos. Por lo tanto, no se puede acceder a cualquiera de los servicios antes mencionados desde fuera de la red privada.

En el archivo anterior se puede añadir más componentes redundantes como nodos de datos (ndbd) o servidores MySQL (mysqld) definiendo únicamente instancias adicionales en el exactamente de la misma manera.

ya se puede iniciar el gestor por primera vez ejecutando el binario ndb_mgmd y especificando el archivo de configuración con el argumento -f así:

sudo /opt/mysql/server-5.6/bin
db_mgmd -f /var/lib/mysql-cluster/config.ini

  • sudo /opt/mysql/server-5.6/bin
    db_mgmd -f / var / lib / mysql-cluster / config.ini

debería ver un mensaje sobre comienzo exitoso similar a esto:

Output of ndb_mgmdMySQL Cluster Management Server mysql-5.6.29 ndb-7.4.11

Es probable que les gusta tener el servicio de gestión iniciado automáticamente con el servidor. La liberación de clúster GA no viene con un script de inicio adecuado, pero hay algunos disponibles en línea. Para el inicio sólo se puede añadir el comando de arranque al archivo /etc/rc.local y el servicio se iniciará automáticamente durante el arranque. En primer lugar, sin embargo, usted tendrá que asegurarse de que /etc/rc.local se ejecuta durante el inicio del servidor. En Ubuntu 16.04 para ello es necesario ejecutar un comando adicional:

sudo systemctl enable rc-local.service

  • sudo systemctl permiten rc-local.service

continuación, abra el archivo /etc/rc.local para la edición:

sudo nano /etc/rc.local

  • sudo nano /etc/rc.local

No añadir el comando de arranque antes de la línea de salida como esta:

...
/opt/mysql/server-5.6/bin
db_mgmd -f /var/lib/mysql-cluster/config.ini
exit 0

guarde y salga del archivo.

El administrador de conglomerado no tiene que correr todo el tiempo. Se puede iniciar, detener, reiniciar y sin tiempo de inactividad para el clúster. Se requiere sólo durante el arranque inicial de los nodos del clúster y el servidor MySQL / cliente.

Paso 3 – Configuración y Puesta en marcha del Nodos de datos

A continuación vamos a configurar los nodos de datos (node1.mysql.cluster y node2.mysql.cluster) para almacenar los archivos de datos y apoyar adecuadamente el motor NDB. Todos los comandos deben ser ejecutados en ambos nodos. Puede comenzar primero con node1.mysql.cluster y luego repetir exactamente los mismos pasos en node2.mysql.cluster.

Los nodos de datos leer la configuración de la /etc/my.cnf archivo de configuración de MySQL estándar y más específicamente la parte después de la línea [mysql_cluster]. Crear este archivo con nano y comenzar a editarlo:

sudo nano /etc/my.cnf

  • sudo nano /etc/my.cnf

especificar el nombre de host del gestor de la siguiente manera:

[mysql_cluster]
ndb-connectstring=manager.mysql.cluster

Guardar y salga del archivo.

Especificación de la ubicación del gerente es la única configuración necesaria para el motor de nodo a empezar. El resto de la configuración se tomará de gerente directamente. En nuestro ejemplo, el nodo de datos, descubrirá que su directorio de datos es / usr / share / mysql / data locales como por la configuración del administrador. Este directorio tiene que ser creado en el nodo. Puede hacerlo con el comando:

sudo mkdir -p /usr/local/mysql/data

  • sudo mkdir -p / usr / / MySQL / datos locales

Después de que se puede iniciar el nodo de datos por primera vez con el comando:

sudo /opt/mysql/server-5.6/bin
dbd

  • sudo / opt /mysql/server-5.6/bin
    dbd

Después de un comienzo exitoso debería ver una salida similar:

Output of ndbd2016-05-11 16:12:23 [ndbd] INFO -- Angel connected to 'manager.mysql.cluster:1186'
2016-05-11 16:12:23 [ndbd] INFO -- Angel allocated nodeid: 2

debe tener el servicio nDBD inicia automáticamente con el servidor. La liberación de clúster GA no viene con un script de inicio adecuado para esto tampoco. Al igual que hicimos para el gestor de clúster, vamos a añadir el comando de inicio para el archivo /etc/rc.local. Una vez más, usted tendrá que asegurarse de que /etc/rc.local se ejecuta durante el arranque del servidor con el comando:

sudo systemctl enable rc-local.service

  • sudo systemctl permiten rc-local.service

A continuación, abra el archivo /etc/rc.local para la edición:

sudo nano /etc/rc.local

  • sudo nano /etc/rc.local

Añadir la orden de arranque antes de la línea de salida como esta:

...
/opt/mysql/server-5.6/bin
dbd
exit 0

Guardar y salga del archivo.

Una vez que haya terminado con el primer nodo, repetir exactamente los mismos pasos en el otro nodo, que es node2.mysql.cluster en nuestro ejemplo.

Paso 4 – Configuración y Puesta en marcha del servidor MySQL y el cliente

Un servidor MySQL estándar, tal como el que está disponible en el repositorio de Ubuntu por defecto aptos, no soporta el motor MySQL Cluster NDB. Es por eso que necesita una instalación de servidor MySQL personalizado. El paquete de clúster que ya hemos instalado en los tres Gotitas viene con un servidor MySQL y el cliente también. Como ya se ha mencionado, vamos a utilizar el servidor MySQL y el cliente en el nodo de gestión (manager.mysql.cluster).

La configuración se almacena de nuevo el valor por defecto /etc/my.cnf archivo. En manager.mysql.cluster, abrir el fichero de configuración:

sudo nano /etc/my.cnf

  • sudo nano /etc/my.cnf

A continuación, añada lo siguiente a ello:

[mysqld]
ndbcluster # run NDB storage engine
...

Guardar y salga del archivo.

De acuerdo con las mejores prácticas, el servidor MySQL debería funcionar bajo su propio usuario (MySQL), que pertenece a su propio grupo (de nuevo MySQL). Así que vamos a crear primero el grupo:

sudo groupadd mysql

  • sudo groupadd mysql

A continuación, cree el usuario mysql que pertenece a este grupo y asegurarse de que no se puede utilizar la cáscara mediante el establecimiento de su trayectoria cáscara a / bin / false como esto:

sudo useradd -r -g mysql -s /bin/false mysql

  • sudo useradd -g mysql -r -s / bin / false mysql

el último requisito para la instalación del servidor de MySQL personalizada es crear la base de datos predeterminada. Puede hacerlo con el comando:

sudo /opt/mysql/server-5.6/scripts/mysql_install_db --user=mysql

  • sudo /opt/mysql/server-5.6/scripts/mysql_install_db user = mysql

Para iniciar el servidor MySQL vamos a utilizar el script de inicio de / opt / mysql /server-5.6/support-files/mysql.server. Copiarlo en el directorio de scripts por defecto init bajo el nombre mysqld como esto:

sudo cp /opt/mysql/server-5.6/support-files/mysql.server /etc/init.d/mysqld

  • sudo cp /opt/mysql/server-5.6/support-files/mysql.server /etc/init.d/mysqld

Habilitar la la puesta en marcha de la escritura y añadirlo a los niveles de ejecución por defecto con el comando:

sudo systemctl enable mysqld.service

  • sudo systemctl permiten mysqld.service

Ahora podemos iniciar el servidor MySQL por primera vez de forma manual con el comando:

sudo systemctl start mysqld

  • sudo mysqld inicio systemctl

Como cliente de MySQL vamos a utilizar de nuevo el binario costumbre que viene con la instalación del clúster. Tiene la siguiente ruta: /opt/mysql/server-5.6/bin/mysql. Para mayor comodidad Vamos a crear un enlace simbólico en la ruta predeterminada / usr / bin:

sudo ln -s /opt/mysql/server-5.6/bin/mysql /usr/bin/

  • sudo ln -s /opt/mysql/server-5.6/bin/mysql / usr / bin /

ya se puede empezar el cliente desde la línea de comandos simplemente escribiendo MySQL como esto:

mysql

  • MySQL

Usted debería ver una salida similar a:

Output of ndb_mgmdWelcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 3
Server version: 5.6.29-ndb-7.4.11-cluster-gpl MySQL Cluster Community Server (GPL)

para salir de la línea de MySQL, simplemente escriba quit o pulsar simultáneamente CTRL-D.

Lo anterior es el primero de verificación para mostrar que el clúster MySQL, el servidor y el cliente están trabajando. A continuación vamos a pasar por pruebas más detalladas para confirmar el cluster está funcionando correctamente.

Prueba del Cluster

En este punto nuestro simple cúmulo de MySQL con un cliente, un servidor, un administrador, y dos nodos de datos debe ser completa. Desde el administrador de conglomerado de gotas (manager.mysql.cluster) abrir la consola de administración con el comando:

sudo /opt/mysql/server-5.6/bin
db_mgm

  • sudo /opt/mysql/server-5.6/bin
    db_mgm

Ahora el indicador debería cambiar a la consola de administración de clústeres . Se ve así:

Inside the ndb_mgm console-- NDB Cluster -- Management Client --
ndb_mgm>

Una vez dentro de la consola ejecutar el comando SHOW así:

SHOW

  • MOSTRAR

debería ver una salida similar a la siguiente:

Output of ndb_mgmConnected to Management Server at: manager.mysql.cluster:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @10.135.27.42 (mysql-5.6.29 ndb-7.4.11, Nodegroup: 0, *)
id=3 @10.135.27.43 (mysql-5.6.29 ndb-7.4.11, Nodegroup: 0)

[ndb_mgmd(MGM)] 1 node(s)
id=1 @10.135.27.51 (mysql-5.6.29 ndb-7.4.11)

[mysqld(API)] 1 node(s)
id=4 @10.135.27.51 (mysql-5.6.29 ndb-7.4.11)

Lo anterior muestra que hay dos nodos de datos con identificadores de 2 y 3. son activos y conectado. También hay un nodo de gestión con id 1 y un servidor MySQL con id 4. Puede encontrar más información acerca de cada uno Identificación del tecleando su número con el ESTADO comando como este:

2 STATUS

  • 2 ESTADO

El comando anterior demostraría que el estado de nodo 2 junto con sus versiones de MySQL y NDB:

Output of ndb_mgmNode 2: started (mysql-5.6.29 ndb-7.4.11)

para salir del tipo de consola de administración dejar de fumar.

La consola de administración es muy potente y le da muchas otras opciones para administrar el clúster y sus datos, incluyendo la creación de una copia de seguridad en línea. Para más información consultar la documentación oficial.

vamos a tener una prueba con el cliente de MySQL ahora. De la misma gotita, iniciar el cliente con el comando mysql para el usuario root de MySQL. Por favor, recordamos que hemos creado un enlace simbólico a ella antes.

mysql -u root

  • mysql -u root

Su consola cambiará a la consola del cliente de MySQL. Una vez dentro del cliente de MySQL, ejecute el comando:

SHOW ENGINE NDB STATUS G

  • DEMOSTRACIÓN DE MOTOR NDB ESTADO G

Ahora debería ver toda la información sobre el motor NDB Cluster a partir de los datos de conexión:

Output of mysql
*************************** 1. row ***************************
Type: ndbcluster
Name: connection
Status: cluster_node_id=4, connected_host=manager.mysql.cluster, connected_port=1186, number_of_data_nodes=2, number_of_ready_data_nodes=2, connect_count=0
...

La información más importante de lo alto es el número de nodos listos – 2. Esta redundancia permitirá que el clúster MySQL para continuar operando incluso si uno de los nodos de datos falla cuando. Al mismo tiempo, las consultas SQL se equilibra la carga a los dos nodos.

Usted puede tratar de apagar uno de los nodos de datos con el fin de probar la estabilidad clúster. Lo más sencillo sería sólo para reiniciar toda la gotita con el fin de tener una prueba completa del proceso de recuperación. Verá el valor de cambio number_of_ready_data_nodes a 1 y de nuevo a 2 de nuevo como el nodo se reinicia.

de Trabajo con el motor NDB

Para ver cómo el cúmulo realmente funciona, vamos a crear una nueva tabla con el motor NDB e introducir algunos datos en él. Tenga en cuenta que con el fin de utilizar la funcionalidad del clúster, el motor debe ser NDB. Si utiliza InnoDB (por defecto) o cualquier otro motor que no sea NDB, que no hará uso de la agrupación.

En primer lugar, vamos a crear una base de datos llamada cluster con el comando:

CREATE DATABASE cluster;

  • CREAR BASE DE DATOS racimo;

A continuación, cambiar a la nueva base de datos: agrupación

USE cluster;

  • USO;

Ahora, crear una tabla simple llamado cluster_test así:

CREATE TABLE cluster_test (name VARCHAR(20), value VARCHAR(20)) ENGINE=ndbcluster;

  • CREAR TABLA cluster_test (nombre VARCHAR (20), el valor VARCHAR (20)) ENGINE = ndbcluster;

hemos especificado explícitamente por encima de la ndbcluster motor con el fin de hacer uso de la agrupación. A continuación, puede empezar a insertar datos con una consulta como esta:

INSERT INTO cluster_test (name,value) VALUES('some_name','some_value');

  • INSERT INTO cluster_test (nombre, valor) VALUES ( ‘some_name’, ‘some_value’);

Para verificar los datos han sido insertados, ejecutar una consulta de selección como esta:

SELECT * FROM cluster_test;

  • SELECT * FROM cluster_test;

Cuando se va a insertar y seleccionar los datos de esta manera, usted está de balance de carga las consultas entre todos los nodos de datos disponibles, que son dos en nuestro ejemplo. Con esta escala se beneficia a cabo tanto en términos de estabilidad y rendimiento.

Conclusión

como hemos visto en este artículo, la creación de un cluster MySQL puede ser simple y fácil. Por supuesto, hay muchas más opciones avanzadas y características que vale la pena masterización antes de llevar el grupo a su entorno de producción. Como siempre, asegúrese de tener un proceso de prueba adecuada debido a que algunos problemas pueden ser muy difíciles de resolver más tarde. Para obtener más información y lectura adicional por favor vaya a la documentación oficial para MySQL Cluster.