Linux MySQL sincronización maestro-esclavo la configuración detallada
1. premisa
Prepare dos servidores, un servidor primario (maestro), el otro desde el servidor (esclavo), y luego asegurarse de que el Maestro y la versión Esclavo Maestro a la misma y no puede ser superior a la versión auxiliar, por lo general es prudente versión el formato mismo porque binlog (log binario) puede ser diferente entre diferentes versiones de MySQL, con el tiempo como resultado de sincronización anormal.
Presentado por primera vez aquí, nos confirma la siguiente información acerca de los dos servidores:
- servidor maestro (master)
IP:10.16.195.49
系统:Linux(redhat centos7 64)
mysql版本:8.0.17
同步数据库:model_slave
同步帐号:model_slave
同步密码:slave123
- Desde el servidor (esclavo)
IP:10.16.195.50
系统:Linux(redhat centos7 64)
mysql版本:8.0.17
同步数据库:model_slave
Configuración del servidor 2.master
1. Modificar el archivo de configuración del servidor principal
sudo vim /etc/my.cnf
[mysqld]
# 新增如下
server-id=1
log_bin=/data/mysql/mysql-bin.log
expire_logs_days=10
max_binlog_size=100M
binlog_do_db=myslave # 如果需要同时同步多个数据库,请另起一行设置binlog_do_db=需要同步的数据库名称
binlog_ignore_db=mysql # 不想同步的数据库
2. Guardar la salida, reinicie el servicio
service mysql restart
Si no pudo comenzar, no se pudo iniciar mirando el registro de MySQL, en busca de soluciones a partir de los contenidos del registro.
cat /data/mysql/mysql.log | tail -30
3. Comprobar y recordar el nombre binario maestro actual y el desplazamiento.
El propósito de esta operación es partir de la base de datos, a partir de este punto para iniciar la recuperación de datos.
mysql> show master status;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| mysql-bin.000002 | 155 | model_slave |mysql |
+---------------+----------+--------------+------------------+
1 row in set (0.00 sec)
Configuración del servidor 3.slave
1. modificar la configuración desde el servidor
sudo vim /etc/my.cnf
[mysqld]
server-id=2
master-host=192.168.8.10
master-user=rep1
master-password=test123456
master-port=3306
replicate-do-db=cmdb
2. Reiniciar en el servidor
service mysql restart
En este momento, dado: mysqld: desconocidos variables '= master-anfitrionas
La razón es mysql5.5 + versión de la replicación maestro-esclavo no admite estas variables, es necesario utilizar el conjunto de comandos de la biblioteca:
mysql> CHANGE MASTER TO MASTER_HOST='192.168.8.10',
MASTER_PORT=3306,
MASTER_USER='rep1',
MASTER_PASSWORD='test123456',
MASTER_LOG_FILE='mysql-bin.000002',
MASTER_LOG_POS=155; # 后面两个参数的值与主库保持一致
Nota, id_servidor todavía tiene que ser configurado en el archivo de configuración, o la voluntad y el acuerdo marco no se puede abrir desde el maestro.
3. esclavo de inicio
mysql> slave start;
Query OK, 0 rows affected (0.04 sec)
4. Comprobar el estado de esclavo
show slave status\G;
Si estos es sí, significa el éxito:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
3. Sincronizar los datos existentes en la biblioteca principal de la biblioteca
operaciones de la biblioteca principales:
1. Detener la actualización de datos de repositorio maestro
mysql>flush tables with read lock;
2. recientemente inaugurado terminal, generar una copia de seguridad (exportar la base de datos) de la base de datos primaria
--master-datos: volcado asegurará que cuando el nombre del registro y el valor de desplazamiento binlog
--lock-all-tables: Para no hay otros nuevos datos en los datos en el momento de la exportación, para garantizar la coherencia
mysqldump –master-data=1 –lock-all-tables=true -uroot -pmysql123 model_slave > /home/model_slave_bak_20200317.sql
3. Los archivos de copia de seguridad a la biblioteca
scp cmdb.sql [email protected]:/home/
4, desbloquear la biblioteca principal
mysql>unlock tables;
De las operaciones de la biblioteca:
1. Detener el esclavo de la biblioteca
mysql>slave stop;
2. Crear una nueva base de datos model_slave
mysql> create database model_slave charset=utf8;
3, los datos de importación
[gz_admin@ops-dev ~]$ mysql -uroot -pmysql123 model_slave</home/model_slave_bak_20200317.sql
o
mysql> use myslave;
mysql> source /home/model_slave_bak_20200317.sql;
4, la vista desde la base de datos de la biblioteca y los datos existentes
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| model_slave |
| mysql |
| performance_schema |
| test |
+--------------------+
4. La sincronización de prueba
1. Insertar un conjunto de datos de maestro
mysql> use model_slave;
mysql> INSERT INTO users(id,name,info) VALUES(1, "jack","handsom");
2. Después de la inserción exitosa, espere un momento, se puede ver el mismo registro en el servidor esclavo.
Sin éxito, a continuación, comprobar cuidadosamente algunos archivos de configuración.
3. Compruebe la información actual estado de sincronización y los valores de desplazamiento como servidor esclavo
more /var/lib/mysql/master.info
Puede comprobar el esclavo ejecuta el archivo binlog
more /var/lib/mysql/relay-log.info