La construcción de la replicación maestro-esclavo de la base de datos mysql en el entorno docker

La construcción de la replicación maestro-esclavo de la base de datos mysql en el entorno docker

1. Prepare dos servidores mysql

Instale la base de datos maestra mysql en el primer servidor usando el comando dicker:

docker run --name mysql_master -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest

Explicación del comando:

通过镜像 mysql:latest 启动一个名为 mysql_master 的 MySQL 服务器,
端口号是3306,
映射的宿主机端口号是3306,
root 账号密码是123456

imagen-20210813164653463

Use el mismo comando para instalar la base de datos esclava:

docker run --name mysql_slave -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest

Ver la instalación del contenedor: docker ps -a

imagen-20210813182923732

Vaya dentro del contenedor y modifique el archivo de configuración –my.cnf:

docker exec -it a448f237b877 /bin/bash
#进入到文件夹中
cd /etc/mysql
# 修改配置文件
vi my.cnf

#如果出现报错:vim: command not found
#则先安装编辑插件:先执行:
apt-get update
#再执行
apt-get install vim


Modifique el archivo de configuración:

[mysqld]
## 设置server_id,一般设置为IP,同一局域网内注意要唯一
server_id=100  
## 复制过滤:也就是指定哪个数据库不用同步(mysql库一般不同步)
binlog-ignore-db=mysql  
## 开启二进制日志功能,可以随便取,最好有含义(关键就是这里了)
log-bin=edu-mysql-bin  
## 为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存
binlog_cache_size=1M  
## 主从复制的格式(mixed,statement,row,默认格式是statement)
binlog_format=mixed  
## 二进制日志自动删除/过期的天数。默认值为0,表示不自动删除。
expire_logs_days=7  
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062  

Salga y reinicie el contenedor mysql

dockers restart mysql_master

Cree un usuario de sincronización de datos en la base de datos principal:

CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';   

2. Configurar el servidor esclavo

Modifique también el archivo de configuración –my.cnf

[mysqld]
## 设置server_id,一般设置为IP,注意要唯一
server_id=101  
## 复制过滤:也就是指定哪个数据库不用同步(mysql库一般不同步)
binlog-ignore-db=mysql  
## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=edu-mysql-slave1-bin  
## 为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存
binlog_cache_size=1M  
## 主从复制的格式(mixed,statement,row,默认格式是statement)
binlog_format=mixed  
## 二进制日志自动删除/过期的天数。默认值为0,表示不自动删除。
expire_logs_days=7  
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062  
## relay_log配置中继日志
relay_log=edu-mysql-relay-bin  
## log_slave_updates表示slave将复制事件写进自己的二进制日志
log_slave_updates=1  
## 防止改变数据(除了特殊的线程)
read_only=1  

3. Complete los enlaces Maestro y Esclavo

Tenga en cuenta que es necesario asegurarse de que los datos en otras bases de datos deben ser consistentes entre el Maestro y el Esclavo, excepto las bases de datos que no están sincronizadas.
Ingrese MySQL en el maestro y luego ejecute el comando:

show master status;

imagen-20210813185749805

Registre los valores de los campos Archivo y Posición, que se utilizarán más adelante.

Luego ve a mysql en Slave y ejecuta el comando:

change master to master_host='10.10.246.13', master_user='slave', master_password='123456', master_port=3306, master_log_file='edu-mysql-bin.000001', master_log_pos=156, master_connect_retry=30;  

Explicación del comando:

master_host: Master 的IP地址
master_user:Master 中授权的用于数据同步的用户
master_password: 同步数据的用户的密码
master_port: Master 的数据库的端口号
master_log_file: 指定 Slave 从哪个日志文件开始复制数据,即上文中提到的 File 字段的值
master_log_pos: 从哪个 Position 开始读,即上文中提到的 Position 字段的值
master_connect_retry: 当重新建立主从连接时,如果连接失败,重试的时间间隔,单位是秒,默认是60秒。

Ejecute en la terminal MySQL del Esclavo para ver el estado de sincronización maestro-esclavo:

show slave status \G;

resultado:

imagen-20210813190342406

SlaveIORunning y SlaveSQLRunning son No, lo que indica que Slave no ha iniciado el proceso de replicación. Por el contrario, SlaveIORunning y SlaveSQLRunning son Sí, lo que indica que han comenzado a funcionar, porque ya los ejecuté, por lo que mi pantalla es Sí.

Ejecute el siguiente comando para iniciar la sincronización maestro-esclavo:

start slave;

Resultado: SlaveSQLRunning se convierte en sí

imagen-20210813190704477

¡Ya terminaste!

4. Prueba real

El último paso es probar si se puede sincronizar. Hay muchos métodos de prueba. Puede agregar una base de datos al Maestro y luego ir al Esclavo para verificar si se ha sincronizado. De lo contrario, verifique cuidadosamente su archivo de configuración y el proceso de configuración.

Después de crear una nueva base de datos en el maestro, se crea una nueva base de datos en el esclavo al mismo tiempo y la configuración es exitosa:

imagen-20210813191737937

Supongo que te gusta

Origin blog.csdn.net/SHUKAI618/article/details/119721201
Recomendado
Clasificación