Construcción del entorno maestro-esclavo de Mysql (Windows un maestro y dos esclavos)

Tabla de contenido

1. Configuración de la biblioteca principal

2. Replicación de datos

3. Configuración de la biblioteca esclava

4. Solución al tiempo de inactividad de la base de datos esclava

5. Eliminar datos de la base de datos por error

6. La biblioteca principal está caída


1. Configuración de la biblioteca principal

1. Modificar la biblioteca principal my.ini

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8 
[mysqld]
# skip-grant-tables
group_concat_max_len=102400
#设置3306端口
port = 3306 
# 设置mysql的安装目录  
basedir=D:\DataBase\mysql
# 设置mysql数据库的数据的存放目录  
datadir=D:\DataBase\mysql\data  
# 允许最大连接数  
max_connections=1000  
# 服务端使用的字符集默认为8比特编码的latin1字符集  
character-set-server=utf8  
# 创建新表时将使用的默认存储引擎  
default-storage-engine=INNODB
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

# Server Id.数据库服务器id,这个id用来在主从服务器中标记唯一mysql服务器
server-id=1
#默认不开启二进制日志,需要配置
log-bin=mysql-bin
#设置需要同步的数据库 
binlog-do-db=nctest_zj 
#屏蔽系统库同步 
binlog-ignore-db=mysql 
binlog-ignore-db=information_schema 
binlog-ignore-db=performance_schema

2. Abra cmd, inicie sesión en la biblioteca principal (o navicat, conéctese a la biblioteca principal y abra la línea de comando)

mysql -u root -p

3. Autorice la cuenta dedicada para la replicación maestro-esclavo

mysql> GRANT REPLICATION SLAVE ON *.* TO 'root'@'%' IDENTIFIED BY 'by123456';

 4. Actualizar permisos

msyql> flush privileges;

5. Consulta la información de la biblioteca principal, registra el nombre del archivo y la posición

msyql> show master status;


2. Replicación de datos

1. Configure la biblioteca principal para que sea de solo lectura para evitar agregar y modificar datos

set global read_only=1;
flush tables with read lock;

2. Copiar datos

3. Restaurar la configuración del primer paso

unlock tables;
set global read_only=0;

3. Configuración de la biblioteca esclava

1. Abra la biblioteca esclava my.ini

server-id no puede ser el mismo que la biblioteca principal

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8 
[mysqld]
# skip-grant-tables
group_concat_max_len=102400
#设置3306端口
port = 3306 
# 设置mysql的安装目录  
basedir=D:\DataBase\mysql
# 设置mysql数据库的数据的存放目录  
datadir=D:\DataBase\mysql\data  
# 允许最大连接数  
max_connections=1000  
# 服务端使用的字符集默认为8比特编码的latin1字符集  
character-set-server=utf8  
# 创建新表时将使用的默认存储引擎  
default-storage-engine=INNODB
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

# Server Id.数据库服务器id,这个id用来在主从服务器中标记唯一mysql服务器
server-id=2
#默认不开启二进制日志,需要配置
log-bin=mysql-bin
#设置需要同步的数据库 
replicate_wild_do_table=nctest_zj.%   
#屏蔽系统库同步 
replicate_wild_ignore_table=mysql.% 
replicate_wild_ignore_table=information_schema.% 
replicate_wild_ignore_table=performance_schema.%

2. cmd para iniciar sesión desde la biblioteca, o navicat para abrir la línea de comando

3. De acuerdo con el nombre del archivo y la posición de la biblioteca maestra, configure la información de la biblioteca esclava

CHANGE MASTER TO MASTER_HOST='192.168.1.15',MASTER_PORT=3306,MASTER_USER='root', MASTER_PASSWORD='root',MASTER_LOG_FILE='mysql-bin.000039',MASTER_LOG_POS=47257;

4. Iniciar el servicio

# 开启
mysql> start slave
# 停止
mysql> stop slave
# 重启
mysql> reset slave

5. Comprobar el estado de la biblioteca esclava

mysql>show slave status\G

Asegúrese de que los siguientes dos valores sean sí, la configuración maestro-esclavo es exitosa, si uno es no, debe verificar el registro para ubicar el motivo.

(muestra variables como 'log_error';) Ve al directorio correspondiente para ver el registro

 6. Cree un usuario para la biblioteca esclava y configure permisos de solo lectura

create user nymi identified by 'by123456';
grant select on *.* to nymi@'%' ; 
flush privileges;

En el proyecto, use este usuario para conectarse a la base de datos, a fin de evitar usar el usuario raíz de la biblioteca esclava para modificar los datos y hacer que falle la replicación maestro-esclavo.


4. Solución al tiempo de inactividad de la base de datos esclava

Después de reiniciar, en términos generales, la posición cuando se detuvo mysql continuará sincronizándose.

Si la replicación maestro-esclavo falla, vuelva a configurar los siguientes pasos

Biblioteca principal:

mostrar variables como 'log_error';
ver la posición en el registro,

de la biblioteca

detener esclavo;
CAMBIAR MAESTRO A MASTER_HOST='192.168.1.15',MASTER_PORT=3306,MASTER_USER='root', MASTER_PASSWORD='root',MASTER_LOG_FILE='información de archivo',MASTER_LOG_POS=Información de posición; (la información del archivo proviene de la biblioteca
principal muestra el estado del maestro;)
inicia el esclavo;

La idea es encontrar un nodo normal y realizar la sincronización de datos.


5. Eliminar datos de la base de datos por error

1. El proyecto utiliza un usuario de solo lectura para conectarse a la biblioteca esclava para evitar la eliminación accidental

2. Recupere los datos eliminados accidentalmente y luego siga el cuarto paso para resolver el problema

3. Vuelva a sincronizar los datos, siga el tercer paso para resolver


6. La biblioteca principal está caída

1. Reinicie la biblioteca principal y verifique el estado de la biblioteca esclava

2. Si no se resuelve, la biblioteca principal y la biblioteca esclava ejecutan las siguientes instrucciones respectivamente y vuelven a especificar el nombre del archivo y la posición encontrada por la declaración de la biblioteca principal en la biblioteca esclava

show master status;
stop slave;
CHANGE MASTER TO MASTER_HOST='192.168.1.15',MASTER_PORT=3306,MASTER_USER='root', MASTER_PASSWORD='root',MASTER_LOG_FILE='file信息',MASTER_LOG_POS=Position信息;
start  slave;

Supongo que te gusta

Origin blog.csdn.net/Spring_possible/article/details/127730991
Recomendado
Clasificación