La base de datos MySQL implementa la sincronización maestro-maestro

prefacio

从数据库La sincronización maestro-maestro de MySQL en realidad se actualiza sobre la base de la sincronización maestro-esclavo 主数据库, para que puedan leer y escribir bases de datos entre sí, y la base de datos esclava se convierte en la base de datos maestra; conexión de autorización mutua maestro-esclavo, leer el registro binlog de cada uno y actualícelo a la base de datos local En el proceso, siempre que cambien los datos de la otra parte, usted cambiará en consecuencia.
inserte la descripción de la imagen aquí

1. Ventajas y desventajas de la sincronización maestro-maestro

De hecho, cada tecnología tiene sus ventajas y desventajas, entre las funciones debemos elegir el servicio técnico que más se adecue a nuestro uso.
Ventajas de la sincronización maestro-maestro

  • Mejore la disponibilidad de datos : la sincronización maestro-maestro de MySQL puede sincronizar datos entre varios servidores MySQL. Cuando uno de los servidores falla, otros servidores pueden continuar brindando servicios, mejorando así la disponibilidad de datos.
  • Seguridad de datos mejorada : la sincronización maestro-maestro de MySQL puede realizar copias de seguridad y replicación de datos.Cuando los datos se pierden o dañan en uno de los servidores, otros servidores pueden proporcionar datos de respaldo, mejorando así la seguridad de los datos.
  • Admite la separación de lectura y escritura : la sincronización maestro-maestro de MySQL puede realizar la separación de lectura y escritura, es decir, distribuir solicitudes de lectura y escritura a diferentes servidores MySQL, mejorando así el rendimiento de lectura y escritura de la base de datos.

Desventajas de la sincronización maestro-maestro

  • Retraso en la sincronización de datos : la sincronización maestro-maestro de MySQL tiene el problema del retraso en la sincronización de datos, es decir, la inconsistencia de los datos puede ocurrir durante la sincronización de datos. Cuando un servidor MySQL modifica datos, otros servidores necesitan una cierta cantidad de tiempo para completar la sincronización de datos, por lo que pueden producirse retrasos en la sincronización de datos.
  • Necesidad de coordinar múltiples servidores MySQL : la sincronización maestro-maestro de MySQL necesita coordinar la sincronización de datos entre múltiples servidores MySQL, por lo que se requiere más trabajo de administración y mantenimiento, incluida la configuración, el monitoreo y la resolución de problemas.
  • Degradación del rendimiento de la base de datos : la sincronización maestro-maestro de MySQL puede reducir el rendimiento de la base de datos, especialmente en el proceso de sincronización de datos, que puede ocupar demasiados recursos del sistema, lo que afecta el rendimiento de la base de datos.

En resumen, la sincronización maestro-maestro de MySQL tiene las ventajas de mejorar la disponibilidad de los datos, mejorar la seguridad de los datos y admitir la separación de lectura y escritura, pero también tiene desventajas como los retrasos en la sincronización de datos, la necesidad de coordinar varios servidores MySQL y el rendimiento de la base de datos. degradación. Por lo tanto, al seleccionar un método de sincronización de base de datos, es necesario considerar exhaustivamente la situación real.

1. Implementar la base de datos MySQL

Todavía es necesario instalar la base de datos MySQL8.0 en ambos servidores al mismo tiempo, aquí hay una demostración rápida.

1.1 Primeros preparativos

Para que todo el procedimiento experimental sea relativamente fluido, el firewall y selinux deben cerrarse con anticipación.

iptables -F
systemctl stop firewalld.service
setenforce 0

Aquí el segundo servidor ya no es un esclavo, sino que ambos son bases de datos maestras.

sistema IP versión de la base de datos
CentOS7.9 192.168.116.166(maestro1) mysql8.0
CentOS7.9 192.168.116.128(maestro2) mysql8.0

1.2 Instalar la base de datos

Ambos servidores necesitan instalar la base de datos, lo cual es un requisito previo y debe estar instalado.
Para conocer los pasos detallados, consulte "Instalación e implementación de MySQL8.0"

#备份源
[root@localhost yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak

#下载网络源
[root@localhost yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

#清空现有的文件和软件包
[root@localhost yum.repos.d]# rpm -qa | grep mysql
[root@localhost yum.repos.d]# rpm -qa | grep mariadb
mariadb-libs-5.5.68-1.el7.x86_64
[root@localhost yum.repos.d]# rpm -e mariadb-libs --nodeps

[root@localhost yum.repos.d]# find / -name mysql
/etc/selinux/targeted/active/modules/100/mysql
/usr/lib64/mysql
[root@localhost yum.repos.d]# rm -rf /etc/selinux/targeted/active/modules/100/mysql /usr/lib64/mysql

#下载安装MySQL8.0
[root@localhost yum.repos.d]# rpm -ivh https://repo.mysql.com/mysql80-community-release-el7.rpm
[root@localhost yum.repos.d]# yum install mysql-community-server -y
[root@localhost yum.repos.d]# systemctl restart mysqld

#找到初始化密码,为下一步登录修改密码做准备
[root@localhost yum.repos.d]# grep -iwa "Password" /var/log/mysqld.log 
2023-03-07T06:56:53.564861Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: h-Ijft/b/9W*

#修改数据库密码
[root@localhost yum.repos.d]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.32

Copyright (c) 2000, 2023, 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> alter user 'root'@'localhost' identified by 'Admin#123';
Query OK, 0 rows affected (0.00 sec)

mysql> exit

Una vez instalado, puede comenzar a configurar la sincronización maestro-maestro.

1.3 Ideas

Establezca el primer servidor como maestro maestro 1 y el segundo servidor como maestro maestro 2.
El maestro maestro 1 y el maestro maestro 2 realizan la sincronización maestro-esclavo primero para que sean maestro-esclavo entre sí. La segunda vez se invierte para permitir que el maestro actuar como esclavo. , dejar que los subordinados decidan.
Sobre esta base, definitivamente es necesario modificar el archivo de configuración, por lo que primero modificaremos master1.

2. Configurar maestro maestro1

Para aumentar el reconocimiento, modifique el nombre de host del primer servidor de antemano

[root@localhost ~]# hostname master1
[root@localhost ~]# bash
[root@master1 ~]# 

2.1 Modificar el archivo de configuración

[root@master1 ~]# vim /etc/my.cnf
[root@master1 ~]# sed 4,+5p -n /etc/my.cnf
[mysqld]
server-id=11     
log-bin=mysql-bin  
auto_increment_increment=2  
auto_increment_offset=1
replicate-do-db=demo_db
  • server-id=11 #El ID único de la base de datos
  • log-bin=mysql-bin #Almacenar ubicación del archivo de registro
  • auto_increment_increment=2 #Controla el tamaño del paso del auto-incremento de la clave principal, establece algunos para varios servidores
  • auto_increment_offset=1 #Establece el valor de inicio del incremento automático. Este es el primero, luego el 1 y el siguiente el 2.
  • replicate-do-db=demo_db #Seleccione la base de datos a sincronizar.

Después de modificar el archivo de configuración, recuerde reiniciar el servicio, porque modificar el archivo de configuración equivale a reasignar variables; sin reiniciar el servicio, el valor de inodo del archivo no se sincronizará con el kernel, por lo que reiniciar el servicio es dejar que el kernel conoce el nuevo valor de inodo de un proceso.

[root@master1 ~]# systemctl restart mysqld

2.2 Crear usuario maestro1

Crear un usuario master1 en la base de datos

[root@master1 ~]# mysql -uroot -p'Admin#123'
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.32 MySQL Community Server - GPL

Copyright (c) 2000, 2023, 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> create user 'master1'@'%' identified with mysql_native_password by '#Master1';
Query OK, 0 rows affected (0.01 sec)

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

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> show grants for 'master1'@'%';
+-------------------------------------------------+
| Grants for master1@%                            |
+-------------------------------------------------+
| GRANT REPLICATION SLAVE ON *.* TO `master1`@`%` |
+-------------------------------------------------+
1 row in set (0.00 sec)
create user 'master1'@'%' identified with mysql_native_password by '#Master1';
  • El significado de esta declaración es crear un usuario llamado maestro 1. El nombre del usuario puede ser definido por uno mismo, @'%' significa que la base de datos se puede iniciar sesión de forma remota, y la declaración identificada con mysql_native_password por es una forma fija de escribir en MySQL 8. establecer contraseña.
grant replication slave on *.* to 'master'@'%';
  • Esta declaración indica la autoridad para autorizar la base de datos a este usuario, *.básicamente significa otorgar todos los permisos, el primero indica todas las bases de datos, y el segundo indica la tabla de la base de datos.
flush privileges;
  • Esta declaración significa actualizar la base de datos, de modo que el contenido establecido previamente se pueda sincronizar con la base de datos.
show grants for 'master1'@'%';
  • Compruebe si los permisos establecidos anteriormente se han escrito en la base de datos y el contenido que se muestra indica que la escritura se ha realizado correctamente.

A continuación, continúe verificando el estado de master1

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000002 |      157 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
  • El archivo es el archivo de almacenamiento del contenedor de registro que acabamos de configurar, que se usa para registrar el archivo de registro de la operación mysql.
  • La posición representa el desplazamiento
  • Binlog_Do_DB La base de datos que necesita ser sincronizada
  • Binlog_Ignore_DB no sincroniza la base de datos

El valor de este desplazamiento cambiará cada vez que se opere la base de datos, por lo tanto, después de verificar el estado, es mejor no continuar operando ningún contenido en la base de datos master1.
Luego comience a modificar la segunda base de datos.

3. Configurar slave1 desde la base de datos

Esta configuración opera en el segundo servidor
para modificar el nombre de host

[root@localhost ~]# hostname master2
[root@localhost ~]# bash
[root@master2 ~]# 

3.1 Modificar el archivo de configuración

Modifique el archivo de configuración /etc/my.cnf, este es el segundo servidor, por lo que idambos auto_increment_offsetdeben ajustarse a 2.

[root@master2 ~]# vim /etc/my.cnf
[root@master2 ~]# sed 4,+5p -n /etc/my.cnf
[mysqld]
server-id=12
log-bin=mysql-bin
auto_increment_increment=2
auto_increment_offset=2
replicate-do-db=demo_db

Sigue igual, modificar el archivo de configuración debe reiniciar el servicio

[root@master2 ~]# systemctl restart mysqld

3.2 Vincular la base de datos master1 principal

mysql> change master to master_host='192.168.116.166',
    -> master_user='master1',
    -> master_password='#Master1',
    -> master_log_file='mysql-bin.000002',
    -> master_log_pos=157;
Query OK, 0 rows affected, 8 warnings (0.00 sec)

mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> show slave status \G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for source to send event
                  Master_Host: 192.168.116.166
                  Master_User: master1
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000002
          Read_Master_Log_Pos: 157
               Relay_Log_File: master2-relay-bin.000002
                Relay_Log_Pos: 326
        Relay_Master_Log_File: mysql-bin.000002
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: demo_db
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
......
1 row in set, 1 warning (0.00 sec)

De hecho, solo hay unas pocas oraciones en la declaración anterior que deben ejecutarse. Echemos un vistazo juntos.
La plantilla de esta información se puede copiar directamente, y la IP, el nombre de usuario, la contraseña, el archivo de registro y el desplazamiento de su propia definición deben modificarse después del signo igual.

change master to master_host='192.168.116.166',  #填写您自己的IP
master_user='master1', 		#填写您自己在第一台服务器上创建的用户名称
master_password='#Master1',   #填写在第一台服务器上创建的用户密码
master_log_file='mysql-bin.000002',  #填写第一台服务器上master的日志信息
master_log_pos=157;  			#填写在第一台服务器上master的偏移量

Utilice esta declaración para ver el estado de la base de datos esclava;

show slave status \G

inserte la descripción de la imagen aquí

Ver que estos dos valores son sí significa que la sincronización ha sido exitosa.

4. Configurar la base de datos master2

A continuación, continúe con la configuración del servidor master2 actual

4.1 Crear usuario maestro2

Crear un master2usuario llamado

mysql> create user 'master2'@'%' identified with mysql_native_password by '#Master2';
Query OK, 0 rows affected (0.01 sec)

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

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

Ver el estado de master2

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000004 |      157 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

En este punto, no necesita continuar operando, o puede salir directamente del sistema de administración mysql.
Regrese al primer servidor y continúe sincronizando el segundo usuario de la base de datos

5. Configurar la base de datos slave2

De hecho, slave2 también es master1, y todavía está vinculado de la misma manera.

5.1 Enlace y sincronización de la base de datos master2 principal

mysql> change master to master_host='192.168.116.128', master_user='master2',
    -> master_password='#Master2',master_log_file='mysql-bin.000004',
    -> master_log_pos=157;
Query OK, 0 rows affected, 8 warnings (0.00 sec)

mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.02 sec)

mysql> show slave status \G
*************************** 1. row ***************************
               Slave_IO_State: Connecting to source
                  Master_Host: 192.168.116.128
                  Master_User: master2
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000004
          Read_Master_Log_Pos: 157
               Relay_Log_File: master1-relay-bin.000001
                Relay_Log_Pos: 4
        Relay_Master_Log_File: mysql-bin.000004
             Slave_IO_Running: Connecting
            Slave_SQL_Running: Yes
              Replicate_Do_DB: demo_db
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 157
              Relay_Log_Space: 157
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 2003
                Last_IO_Error: error connecting to master '[email protected]:3306' - retry-time: 60 retries: 1 message: Can't connect to MySQL server on '192.168.116.128:3306' (113)
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
......
1 row in set, 1 warning (0.00 sec)

Como puede ver, al ver el estado del esclavo, hay un valor que no es sí.

Slave_IO_Running: Connecting
Slave_SQL_Running: Yes

inserte la descripción de la imagen aquí
Puede ver la causa del error aquí. Por supuesto, hay muchas razones que afectan el valor de IO is Connecting. Veámoslas una por una.

5.2 Soluciones

No es terrible encontrar errores. Puede pensar en los pasos que ha realizado antes y volver para verificar si los pasos anteriores se ejecutaron correctamente. Si es correcto, verifique si se trata de un problema de selinux, firewall, red y otros. .

Motivo del error de configuración:

  • La red no está disponible; puede intentar hacer ping al nombre de dominio del sitio web
  • Firewall, selinux no está cerrado: vuelva a ejecutar la operación cerrada
  • La contraseña de usuario se ingresó incorrectamente: vuelva a configurarla, confírmela claramente y luego ingrésela
  • Error de IP: confirme si es la IP del servidor local
  • Compensación y errores de archivo de registro: reinicie el servicio y vuelva a configurarlo

Ambos servidores necesitan ser revisados

[root@master1 ~]# hostname -I 
192.168.116.166 192.168.122.1 
[root@master1 ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since 五 2023-02-10 10:52:45 CST; 1 months 12 days ago
     Docs: man:firewalld(1)
 Main PID: 804 (code=exited, status=0/SUCCESS)

210 10:51:06 localhost.localdomain systemd[1]: Starting firewalld - dynamic f....
210 10:51:10 localhost.localdomain systemd[1]: Started firewalld - dynamic fi....
210 10:51:11 localhost.localdomain firewalld[804]: WARNING: AllowZoneDrifting ...
210 10:52:44 localhost.localdomain systemd[1]: Stopping firewalld - dynamic f....
210 10:52:45 localhost.localdomain systemd[1]: Stopped firewalld - dynamic fi....
Hint: Some lines were ellipsized, use -l to show in full.
[root@master1 ~]# ping -c 1 www.baidu.com
PING www.a.shifen.com (14.215.177.38) 56(84) bytes of data.
64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=1 ttl=53 time=37.8 ms

--- www.a.shifen.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 37.807/37.807/37.807/0.000 ms
[root@master1 ~]# getenforce 
Permissive
[root@master1 ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination      

La primera prueba del servidor está bien.


A continuación, pruebe el segundo servidor.

[root@master2 ~]# hostname -I
192.168.116.128 192.168.122.1 

[root@master2 ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since 六 2023-03-25 15:28:38 CST; 2s ago
     Docs: man:firewalld(1)
 Main PID: 70425 (firewalld)
    Tasks: 2
   CGroup: /system.slice/firewalld.service
           └─70425 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid

325 15:28:39 master2 firewalld[70425]: WARNING: COMMAND_FAILED: '/usr/sbin/ipt...).
3月 25 15:28:39 master2 firewalld[70425]: WARNING: COMMAND_FAILED: '/usr/sbin/ipt...).
325 15:28:39 master2 firewalld[70425]: WARNING: COMMAND_FAILED: '/usr/sbin/ipt...).
3月 25 15:28:39 master2 firewalld[70425]: WARNING: COMMAND_FAILED: '/usr/sbin/ipt...e.
325 15:28:39 master2 firewalld[70425]: WARNING: COMMAND_FAILED: '/usr/sbin/ipt...e.
3月 25 15:28:39 master2 firewalld[70425]: WARNING: COMMAND_FAILED: '/usr/sbin/ipt...).
325 15:28:39 master2 firewalld[70425]: WARNING: COMMAND_FAILED: '/usr/sbin/ipt...).
3月 25 15:28:39 master2 firewalld[70425]: WARNING: COMMAND_FAILED: '/usr/sbin/ipt...).
325 15:28:39 master2 firewalld[70425]: WARNING: COMMAND_FAILED: '/usr/sbin/ipt...).
3月 25 15:28:39 master2 firewalld[70425]: WARNING: COMMAND_FAILED: '/usr/sbin/ipt...).
Hint: Some lines were ellipsized, use -l to show in full.

Se descubrió que el cortafuegos del segundo servidor no estaba cerrado, lo que probablemente se vio afectado por estos problemas, y luego se apagó el cortafuegos.

[root@master2 ~]# systemctl stop firewalld.service 

Después de cerrar, continúe enlazando el servidor en el primer servidor.
Es más fácil lidiar con el problema del firewall Primero, cierre el esclavo, reinícielo y luego ábralo.

stop slave;
reset slave;
start slave;
mysql> stop slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> reset slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.04 sec)

mysql> show slave status \G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for source to send event
                  Master_Host: 192.168.116.128
                  Master_User: master2
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000004
          Read_Master_Log_Pos: 157
               Relay_Log_File: master1-relay-bin.000006
                Relay_Log_Pos: 373
        Relay_Master_Log_File: mysql-bin.000004
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: demo_db
          Replicate_Ignore_DB: 
......
1 row in set, 1 warning (0.00 sec)

Comprueba que ambos valores son sí, lo que indica que la sincronización ha sido exitosa.

6. Resultados de la prueba

Lo anterior es todo el contenido de la sincronización maestro-maestro, es hora de comprobar si ha sido completamente exitosa.
Creamos la base de datos que elegimos para sincronizar en el primer maestro1, luego creamos una tabla para esta base de datos y luego insertamos algunas filas de información en la tabla.

6.1 La primera prueba de la base de datos

[root@master1 ~]# mysql -uroot -pAdmin#123
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 32
Server version: 8.0.32 MySQL Community Server - GPL

Copyright (c) 2000, 2023, 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> create database demo_db;
Query OK, 1 row affected (0.01 sec)

mysql> use demo_db
Database changed
mysql> create table demo_tb(id int not null,name varchar(20) default 'username');
Query OK, 0 rows affected (0.02 sec)

mysql> insert into demo_tb values(1,'zhangsan'), (2,'lisi'), (3,'kunkun');
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0

6.2 Segunda prueba de la base de datos

[root@master2 ~]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 16
Server version: 8.0.32 MySQL Community Server - GPL

Copyright (c) 2000, 2023, 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 databases;
+--------------------+
| Database           |
+--------------------+
| demo_db            |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

mysql> select * from demo_db.demo_tb;
+----+----------+
| id | name     |
+----+----------+
|  1 | zhangsan |
|  2 | lisi     |
|  3 | kunkun   |
+----+----------+
3 rows in set (0.01 sec)

mysql> use demo_db
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> insert into demo_tb values(4,'liao'),
    -> (5,'chengpi'),
    -> (6,'mahua');
Query OK, 3 rows affected (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 0

En la primera base de datos, vea si el contenido insertado por la segunda también se puede escribir con éxito.

mysql> select * from demo_tb;
+----+----------+
| id | name     |
+----+----------+
|  1 | zhangsan |
|  2 | lisi     |
|  3 | kunkun   |
|  4 | liao     |
|  5 | chengpi  |
|  6 | mahua    |
+----+----------+
6 rows in set (0.00 sec)

Verifique el contenido de entrada de la segunda base de datos, y también se puede sincronizar con la primera base de datos, lo que indica que se ha realizado correctamente.

Resumir

Lo anterior es todo el contenido de este artículo. Si ha leído "La base de datos MySQL realiza la sincronización maestro-esclavo" de ayer, encontrará que la sincronización maestro-esclavo es solo una sincronización maestro-esclavo en la sincronización maestro-esclavo. Si crees que el contenido anterior está bien, ¡puedes darle me gusta y apoyarlo!
inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/rhn_111/article/details/129764802
Recomendado
Clasificación