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.
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 id
ambos auto_increment_offset
deben 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
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 master2
usuario 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
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)
2月 10 10:51:06 localhost.localdomain systemd[1]: Starting firewalld - dynamic f....
2月 10 10:51:10 localhost.localdomain systemd[1]: Started firewalld - dynamic fi....
2月 10 10:51:11 localhost.localdomain firewalld[804]: WARNING: AllowZoneDrifting ...
2月 10 10:52:44 localhost.localdomain systemd[1]: Stopping firewalld - dynamic f....
2月 10 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
3月 25 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...).
3月 25 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.
3月 25 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...).
3月 25 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...).
3月 25 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!