Entorno de sincronización maestro-esclavo MySQL5.7

1. Prepare el entorno: (un maestro y un esclavo)

Base de datos ip
Biblioteca principal 192.168.87.133
De la biblioteca 192.168.87.134

 1.1 Ambas máquinas virtuales están instaladas con MySQL5.7. (Mysqladmin --versión)

Referencia:

  1. Linux Centos7.5 instala MySQL5.7
  2. mysql 5.7 no se puede conectar: ​​el host '192.168.87.1' no puede conectarse a este servidor MysQL
  3. Mysql: el host 'xxx' está bloqueado debido a muchos errores de conexión; desbloquee con 'mysqladmin flush-hosts'

  1.2 Después de una instalación exitosa, cree dos bases de datos.

Script de base de datos:

(1)创建数据库
#创建数据库user_db
CREATE DATABASE `user_db` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci';

(2)在user_db中创建t_user表
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user` (
`user_id` bigint(20) NOT NULL COMMENT '用户id',
`fullname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户姓名',
`user_type` char(1) DEFAULT NULL COMMENT '用户类型',
PRIMARY KEY (`user_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

2. Configuración

 2.1 Configuración de la biblioteca principal:

vim /etc/my.cnf

Nota: (configuración incorrecta)

Muchos blogs en Internet están configurados de la siguiente manera. Lo configuré de la misma manera al principio. Una vez completada la configuración, no se reiniciará mysql.

[mysqld]
#开启日志
log‐bin = mysql‐bin
#设置服务id,主从不能一致
server‐id = 1
#设置需要同步的数据库
binlog‐do‐db=user_db
#屏蔽系统库同步
binlog‐ignore‐db=mysql
binlog‐ignore‐db=information_schema
binlog‐ignore‐db=performance_schema

Solicitar el uso de systemctl status mysqld.service y journalctl -xe para ver el mensaje de error;

Y use el comando: cat /var/log/mysqld.log para ver el registro de mysql, informará errores similares de la siguiente manera: 

2019-12-25T13:34:26.236167Z 0 [ERROR] unknown variable 'binlog‐do‐db=user_db'
2019-12-25T13:34:26.236192Z 0 [ERROR] Aborting

Configuración correcta (configuración completa) : (en lugar de usar-, use _ en su lugar)

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html

[mysqld]

validate_password=off
max_connect_errors=1000
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin

##################主从配置的新增部分
#开启日志文件
log_bin=mysql-bin
#设置服务id,主从不能一致
server_id=1
#设置需要同步的数据库
binlog_do_db=user_db
##屏蔽系统库同步
binlog_ignore_db=mysql
binlog_ignore_db=information_schema
binlog_ignore_db=performance_schema


# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0                                                      

Después de la configuración correcta, reinicie el servicio mysql; use el comando: systemctl restart mysqld

 

2.2 Configuración esclava: (configuración completa)

[mysqld]

validate_password=off
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin

#开启日志
log_bin=mysql‐bin
#设置服务id,主从不能一致
server_id=2
#设置需要同步的数据库
replicate_wild_do_table=user_db.%
#屏蔽系统库同步
replicate_wild_ignore_table=mysql.%
replicate_wild_ignore_table=information_schema.%
replicate_wild_ignore_table=performance_schema.%


# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

 Después de la configuración correcta, reinicie el servicio mysql; use el comando: systemctl restart mysqld

2.3 Compruebe si log_bin se ha abierto correctamente ( se pueden consultar las bibliotecas maestra y esclava )

3. Crear un usuario para la replicación ( biblioteca maestra )

#切换至主库bin目录,登录主库,输入密码
mysql ‐uroot ‐p 

#授权主备复制专用账号
grant replication slave on *.* to 'slave'@'%' identified by '123456';

#刷新权限
FLUSH PRIVILEGES;

#确认位点 记录下文件名以及位点
show master status;

Captura de pantalla: (use el comando show master status; descubra lo que necesita más adelante en la configuración de la biblioteca )

4. Configure la biblioteca esclava en la biblioteca maestra para sincronizar datos y verifique el enlace

#切换至从库bin目录,登录从库(输入密码)
mysql ‐uroot ‐p

#先停止同步
STOP SLAVE;

#修改从库指向到主库,使用上一步记录的文件名以及位点
CHANGE MASTER TO
master_host = '192.168.87.133',
master_user = 'slave',
master_password = '123456',
master_log_file = 'mysql-bin.000009',
master_log_pos = 582;

#启动同步
START SLAVE;

#查看从库状态Slave_IO_Runing和Slave_SQL_Runing都为Yes说明同步成功,如果不为Yes,请检error_log,#然后排查相关异常。
show slave status\G

######(一般不需要执行)注意: 如果之前此备库已有主库指向 需要先执行以下命令清空#########
STOP SLAVE IO_THREAD FOR CHANNEL '';
reset slave all;

PD:

master_host nodo maestro: dirección ip
maestro_usuario nodo maestro: la cuenta creada por el nodo maestro para la replicación
contraseña maestra nodo maestro principal: la contraseña creada por el nodo maestro para la replicación
master_log_file El nodo maestro: el valor del campo del archivo consultado por el comando sql show master status
master_log_pos  Nodo maestro maestro: el valor del campo Posición consultado por el comando sql show master status

Captura de pantalla completa:

ps: Ver el estado del esclavo Slave_IO_Runing y Slave_SQL_Runing son Sí para indicar que la sincronización es exitosa. Si no es Sí, verifique error_log y luego solucione los problemas relacionados.

5. Prueba:

Inserte una pieza de datos en la tabla t_user en la biblioteca maestra (192.168.87.133); luego actualice la tabla t_user en la biblioteca esclava para ver si los datos se han sincronizado.

5.1 Biblioteca principal : t_user

5.2 Esclavo: t_user  (tabla de actualización)

 

 
186 artículos originales publicados · elogiados 146 · 490,000 visitas

Supongo que te gusta

Origin blog.csdn.net/qq_37495786/article/details/103731681
Recomendado
Clasificación