Docker instala el clúster MySQL (un maestro y un esclavo)

Docker instala el clúster MySQL (un maestro y un esclavo)

Prueba de aperitivo

1. Lleve la imagen de mysql5.7 al local

[root@aliyun ~]# docker pull mysql:5.7

2. Inicie el contenedor mysql y especifique la contraseña como 123456

[root@aliyun ~]# docker run --name mysql -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

3. Ingrese al contenedor mysql

[root@aliyun ~]# docker exec -it mysql /bin/bash
root@d9b75dcb7dae:/# 

4. Introduce la contraseña para acceder

root@d9b75dcb7dae:/# mysql -u root -p

Instalación del clúster MySQL

Utilice Docker para crear un clúster de separación de lectura y escritura MySQL "un maestro y un esclavo" .

contenedor maestro

1. Inicie el contenedor maestro y móntelo con un volumen para evitar la pérdida de datos.

[root@aliyun ~]# docker run --name mysql_master -e MYSQL_ROOT_PASSWORD=123456 
-v /root/mysql_master/data:/var/lib/mysql \
-v /root/mysql_master/log:/var/log/mysql \
-v /root/mysql_master/conf:/etc/mysql/conf.d \
-d -p 3316:3306 mysql:5.7

2. Cree un nuevo archivo my.cnf en el directorio /root/mysql_master/conf de la máquina host y escriba el siguiente contenido en él

# 设置字符集编码
[client]
default_character_set=utf8
[mysql]
default_character_set=utf8
[mysqld]
character_set_server=utf8
server_id=01 # 指定mysql唯一标识
binlog-ignore-db=mysql # 在二进制日志中忽略名为 "mysql" 的数据库的操作记录
log-bin=master-log-bin # 启用二进制日志,并指定二进制日志文件的名称为 "master-log-bin"
binlog_cache_size=1M # 二进制日志缓存的大小为 1MB
binlog_format=mixed # 设置二进制日志的格式为 "mixed"
expire_logs_days=7 # 设置二进制日志文件过期的天数为 7
slave_skip_errors=1062 # 设置当从服务器执行复制时遇到错误码为 1062 的错误时,跳过该错误并继续复制

3. Reinicie el contenedor maestro.

[root@aliyun conf]# docker restart mysql_master

4. Ingrese al contenedor para conectarse a mysql y verifique su codificación de caracteres.

[root@aliyun conf]# docker exec -it mysql_master /bin/bash
root@d61cb0fa6c50:/# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.36-log MySQL Community Server (GPL)

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

5. Cree un usuario para el mysql actual, que le permita conectarse al servidor mysql desde cualquier host ('%') y especifique la contraseña.

mysql> create user 'slave'@'%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)

6. Autorizar, otorgar al usuario 'esclavo' los permisos pertinentes para la replicación.

mysql> grant replication slave,replication client on *.* to 'slave'@'%';
Query OK, 0 rows affected (0.00 sec)

replication slaveLos permisos permiten al usuario conectarse al servidor maestro como servidor esclavo y realizar operaciones de replicación.

replication clientLos permisos permiten a los usuarios ver información relacionada con la replicación.

*.*Representa todas las bibliotecas y tablas.

contenedor de esclavos

1. Inicie el contenedor esclavo y utilice el montaje de volumen para evitar la pérdida de datos.

[root@aliyun ~]# docker run --name mysql_slave -e MYSQL_ROOT_PASSWORD=123456 
-v /root/mysql_slave/data:/var/lib/mysql 
-v /root/mysql_slave/log:/var/log/mysql 
-v /root/mysql_slave/conf:/etc/mysql/conf.d 
-d -p 3326:3306 mysql:5.7

2. Cree un nuevo archivo my.cnf en el directorio /root/mysql_slave/conf de la máquina host y escriba el siguiente contenido en él

[client]
default_character_set=utf8
[mysql]
default_character_set=utf8
[mysqld]
character_set_server=utf8

server_id=02 # 指定mysql唯一标识
binlog-ignore-db=mysql
log-bin=slave-log-bin
binlog_cache_size=1M
binlog_format=mixed
expire_logs_days=7
slave_skip_errors=1062
relay_log=relay-log-bin # 指定中继日志文件的名称前缀。中继日志文件用于记录从服务器上执行的复制操作,以便其他从服务器可以通过读取中继日志进行级联复制。
log_slave_updates=1 # 启用从服务器记录复制操作到自己的二进制日志的功能
read_only=1 # 将服务器设置为只读模式

3. Reinicie el contenedor esclavo.

[root@aliyun conf]# docker restart mysql_slave

4. Ingrese al contenedor para conectarse a mysql y verifique su codificación de caracteres.

[root@aliyun conf]# docker exec -it mysql_slave /bin/bash
root@72c2eed0b7ca:/# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.36-log MySQL Community Server (GPL)

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

Configurar la replicación maestro-esclavo

1. Ver el estado del maestro

Ejecute el comando show master status en el maestro para ver el nombre del archivo de registro binario y la posición inicial.

Insertar descripción de la imagen aquí

2. Ejecute el comando cambiar maestro a en el esclavo para especificar la información relevante del maestro que se va a conectar.

mysql> change master to master_host='172.29.121.66', #主服务器的主机名或IP地址
master_user='slave', # 主服务器指定的复制用户
master_password='123456', # 主服务器的复制用户密码
master_port=3316, # 主服务器的端口
master_log_file='master-log-bin.000001', # 主服务器的二进制日志文件名
master_log_pos=617; # 主服务器的二进制日志位置

3. El esclavo inicia la sincronización.

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

Compruebe el estado del esclavo. La sincronización ha comenzado.

Insertar descripción de la imagen aquí

prueba

1. Escribe en el maestro.

Insertar descripción de la imagen aquí

2. Leer en esclavo

Insertar descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_52589631/article/details/131960256
Recomendado
Clasificación