[Clúster MySQL 1] Cree un clúster MySQL en CentOS 7: un maestro, un esclavo, varios maestros y varios esclavos

Insertar descripción de la imagen aquí

introducir

MySQL Cluster le permite crear un entorno de base de datos de alta disponibilidad, proporcionando tolerancia a fallos y equilibrio de carga. En este blog, demostraremos cómo configurar un clúster MySQL en dos servidores CentOS 7, incluidas configuraciones de un maestro y un esclavo y de múltiples maestros y esclavos.

Un amo y un esclavo

Paso 1: preparación

Antes de comenzar, asegúrese de haber completado los siguientes preparativos:

  • Dos servidores CentOS 7, que pueden ser máquinas físicas o máquinas virtuales.
  • Asegúrese de que los servidores puedan acceder entre sí y puedan hacer ping entre sí.
  • El entorno de demostración son dos servidores en la nube de prueba.
    Servidor en la nube Tencent

Paso 2: instale MySQL

Para instalar MySQL en dos servidores, consulte: Servidor CentOS7 Instalación de Yum MySQL5.7

Paso 3: configurar el servidor maestro

Edite el archivo de configuración de MySQL en el servidor maestro:

sudo vim /etc/my.cnf

Agregue o modifique los siguientes elementos de configuración:

[mysqld]
# 每个MySQL服务器都需要一个唯一的标识符(server-id),用于区分主从服务器,以及避免复制冲突。
server-id=22
# 用于开启MySQL的日志功能,以便记录增删改操作。二进制日志文件将记录所有这些更改,并用于主从复制。
log-bin = /var/log/mysql/mysql-bin.log
# 设置logbin格式
binlog_format=STATEMENT
# 用于指定需要同步的数据库。如果你希望同步特定的数据库,可以设置多个binlog-do-db选项,每个选项指定一个数据库;可设置为通配符模式:ddz_*(表示同步以ddz_开头的数据库)
binlog-do-db=ddz_*
# 屏蔽不需要同步的系统库
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
# 从服务器是否记录自己的日志。如果启用(1),从服务器会记录在执行复制时的所有更改。
log-slave-updates=1 
# 用于指定错误日志的文件名和位置。
# log-error=
# 指定MySQL服务器进程ID的文件名和位置。
# pid-file=
# 控制MySQL在处理已经建立的连接时,允许待处理的的最大连接数。
# back_log=
# 限制MySQL的最大连接数。
# max_connections=
# 限制每个用户允许的最大连接数。
# max_user_connections=
# 限制通信缓冲区中的数据量大小,默认大小为1MB。
# max_allowed_packet=

Se puede configurar de forma flexible según sus propias necesidades.

binlog_format se utiliza principalmente para ajustar el formato de grabación de binlog.
El binlog (registro binario) de MySQL se utiliza para registrar todos los cambios en la base de datos. Estos registros se pueden utilizar para la replicación maestro-esclavo y la recuperación de datos. La opción binlog_format puede controlar el formato de grabación de binlog y tiene tres valores opcionales: STATEMENT, ROW y MIXED.

STATEMENT: Cada declaración SQL que modifique datos se registrará en el binlog, pero no se registrarán todas las declaraciones SQL y cambios de datos en cada fila. Al copiar en el lado esclavo, el proceso SQL se analizará en el mismo SQL que se ejecutó originalmente en el lado maestro y se ejecutará nuevamente. La ventaja es reducir la cantidad de registros binlog, ahorrar E/S del disco y mejorar el rendimiento. La desventaja es que, en algunos casos, la replicación maestro-esclavo puede ser inconsistente, por ejemplo, pueden ocurrir problemas con la función sleep(), last_insert_id() y las funciones definidas por el usuario (udf).

ROW: En formato FILA, el binlog registrará la modificación de cada fila de datos y luego modificará los mismos datos en el lado esclavo. La ventaja es que los detalles de cada fila de modificaciones de datos se pueden registrar claramente. La desventaja es que la cantidad de datos es demasiado grande, lo que puede aumentar el consumo de memoria y E/S del disco.

MIXED: El modo MIXED es una combinación de los dos modos anteriores. Generalmente, el modo STATEMENT se usa para guardar el binlog. Para operaciones que no se pueden copiar en el modo STATEMENT, se usa el modo FILA para guardar el binlog. MySQL seleccionará el método para guardar registros según la declaración SQL ejecutada.

Guarde y cierre el archivo. Luego reinicie el servicio MySQL:

sudo systemctl restart mysqld

Paso 4: crear un usuario de replicación

Inicie sesión en el servidor MySQL y cree un usuario para la replicación:

# 登录
mysql -u root -p

# 在MySQL中执行以下命令
# 创建用户
CREATE USER 'replication'@'%' IDENTIFIED BY 'your_password';
# 指定IP
# CREATE USER 'replication'@'192.168.1.13' IDENTIFIED BY 'your_password';
# 配置授权
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';
# 指定IP
# GRANT REPLICATION SLAVE ON *.* TO 'replication'@'192.168.1.13';
# 刷新缓存
FLUSH PRIVILEGES;

Para ver si la creación es exitosa, simplemente ejecute el SQL:

SELECT USER,HOST FROM mysql.user;

Insertar descripción de la imagen aquí

Paso 5: Haga una copia de seguridad de los datos del servidor principal. Si no hay datos, omita este paso.

Cree una copia de seguridad de datos en el servidor principal:

mysqldump -u root -p --database mydb > mydb.sql

Paso 6: configurar el servidor esclavo

Edite el archivo de configuración de MySQL en el servidor esclavo:

sudo vim /etc/my.cnf

Agregue o modifique los siguientes elementos de configuración:

[mysqld]
# 每个MySQL服务器都需要一个唯一的标识符(server-id),用于区分主从服务器,以及避免复制冲突。
server-id=33
# 用于指定需要同步的数据库。如果你希望同步特定的数据库,可以设置多个binlog-do-db选项,每个选项指定一个数据库;可设置为通配符模式:ddz_*(表示同步以ddz_开头的数据库)
binlog-do-db=ddz_*
# 屏蔽不需要同步的系统库
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
# 主从复制架构中非常重要的一部分,它用于确保从服务器能够及时地获取和应用主服务器的更改,以保持与主服务器的数据一致性。
relay-log=mysql-relay

Guarde y cierre el archivo. Luego importe la copia de seguridad de datos del servidor principal (omita este paso si no hay datos)

mysql -u root -p < mydb.sql

Paso 7: configurar la replicación maestro-esclavo

Regrese al servidor principal y obtenga el estado del servidor principal:

mysql -u root -p

# 在MySQL中执行以下命令
SHOW MASTER STATUS;

Insertar descripción de la imagen aquí

Registre el nombre del archivo y la ubicación devuelta.

De regreso al servidor esclavo, configure el servidor esclavo para conectarse al servidor maestro:

# 登录
mysql -u root -p

# 在MySQL中执行以下命令,将 'file_name' 和 'position' 替换为上一步中记录的值
CHANGE MASTER TO MASTER_HOST='主服务器的IP地址', MASTER_USER='replication', MASTER_PASSWORD='your_password', MASTER_LOG_FILE='file_name', MASTER_LOG_POS=position;

# 开启同步功能
START SLAVE;

Paso 8: Probar la replicación maestro-esclavo

Cree una nueva base de datos en el servidor maestro y agregue algunos datos, luego verifique la sincronización en el servidor esclavo.

# 创建数据库
CREATE DATABASE ddz_test;
# 创建表
CREATE TABLE ddz_test.test_user (
	`id` INT NOT NULL AUTO_INCREMENT,
	`name` VARCHAR ( 50 ) DEFAULT NULL,
PRIMARY KEY ( `id` )) ENGINE = INNODB DEFAULT CHARSET = utf8;
# 新增一条数据
INSERT INTO ddz_test.test_user(`name`)VALUES('测试你个老六');

Ingrese al MySQL maestro-esclavo para verificar si hay datos.

Un amo, muchos esclavos

Para configurar varios maestros y varios esclavos, repita los pasos del 6 al 8 en otro servidor.

Múltiples maestros y múltiples esclavos

Para configurar varios maestros y varios esclavos, repita los pasos del 3 al 8 en el otro par de servidores.

Resumen:
Al completar los pasos anteriores, configurará exitosamente un clúster MySQL en dos servidores CentOS 7, incluida la configuración de un maestro, un esclavo y múltiples maestros y múltiples esclavos. Esto mejorará la disponibilidad y el rendimiento de la base de datos, permitiéndole manejar mejor las cargas de trabajo de la base de datos y la tolerancia a fallas. Si necesita más nodos, simplemente repita los pasos para configurar varios maestros y varios esclavos. ¡Espero que este blog sea útil!

Supongo que te gusta

Origin blog.csdn.net/weixin_45626288/article/details/132932381
Recomendado
Clasificación