¿Por qué construir con base acoplable?
- Los recursos limitados
- máquina virtual creada en la configuración de la máquina que se requiere, y un paso complicado de instalar MySQL
- Una pluralidad de recipientes se puede ejecutar en una sola máquina acoplable
- contenedores de Docker son, IP independiente independiente, no entren en conflicto
- Acoplable utilizar sencillos pasos para iniciar el segundo nivel en el contenedor
Estructuras desde el servidor maestro utilizando acoplable
Primer espejo cargador de muelle de tracción, que aquí utilizar la versión 5.7 de MySQL:
docker pull mysql:5.7
Esta imagen se utiliza a continuación para iniciar el recipiente, donde la necesidad de partir de dos recipientes principal independiente
Master (principal):
docker run -p 3339:3306 --name mymysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
Esclavo (desde):
docker run -p 3340:3306 --name mymysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
Mapa extranjera Maestro del puerto es 3339, la asignación de puertos Esclavo externo es 3340. Debido a que los contenedores ventana acoplable son independientes entre sí, cada contenedor tiene su propia IP independiente, por lo que un recipiente diferente usando el mismo puerto y no entrará en conflicto. Aquí debemos tratar de puerto por defecto usar MySQL 3306, o pueden no aparecer en la edición mediante conexión IP de MySQL contenedor ventana acoplable.
Utilice docker ps
el comando para ver los contenedores están ejecutando:
En este momento, otras herramientas se pueden utilizar para probar la conexión Navicat MySQL
Configuración Master (Principal)
Por docker exec -it 627a2368c865 /bin/bash
comando Maestro en el interior del contenedor, también se puede docker exec -it mysql-master /bin/bash
mandar a entrar. 627a2368c865 es el ID del contenedor, y MySQL-master es el nombre de la embarcación.
cd /etc/mysql
Cambie al directorio en / etc / mysql, y luego vi my.cnf
a editar my.cnf. En serán reportados a cabo este punto bash: vi: command not found
, tenemos que instalar vim a sí mismos dentro del contenedor ventana acoplable. El uso apt-get install vim
de comandos para instalar vim
Aparecerá las siguientes preguntas:
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package vim
Ejecución apt-get update
, y luego ejecuta de nuevo apt-get install vim
para instalar correctamente vim. Entonces podemos usar vim para editar my.cnf, agregue la siguiente configuración en el my.cnf:
[mysqld]
## 同一局域网内注意要唯一
server-id=100
## 开启二进制日志功能,可以随便取(关键)
log-bin=mysql-bin
Después de la configuración, deberá reiniciar la configuración del servicio MySQL para tener efecto. Utilice service mysql restart
reinicio completo. Hará que el contenedor ventana acoplable para detener el servicio reinicio de MySQL, también tenemos que docker start mysql-master
iniciar el contenedor.
El siguiente paso se crea en la base de datos de sincronización de datos de usuario principal, el usuario concede permiso esclavo esclavo de replicación y privilegio de réplica de cliente para la sincronización primaria entre los datos de la base de datos.
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
Configuración del esclavo (de)
Y la configuración de maestro (primario) como añadió el fichero de configuración my.cnf sigue el esclavo:
[mysqld]
## 设置server_id,注意要唯一
server-id=101
## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=mysql-slave-bin
## relay_log配置中继日志
relay_log=edu-mysql-relay-bin
Después de la configuración y la necesidad de reiniciar la operación de servicio MySQL y configuración del maestro ventana acoplable envase (primario) consistente.
Link Master (principal) y el Esclavo (de)
En el Master en el MySQL, ejecutarshow master status;
Detrás se utilizará el valor de los campos de archivo y de posición, antes de que se haya completado la última operación, la necesidad de asegurar que la biblioteca maestro no puede hacer nada, si no causará un cambio de estado, los cambios en el valor de los campos de archivo y posición.
En esclavo entrar en MySQL, ejecutarchange master to master_host='172.17.0.2', master_user='slave', master_password='123456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos= 2830, master_connect_retry=30;
Comando Descripción:
MASTER_HOST : Dirección de maestro, en referencia al contenedor IP independiente, por docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称|容器id
contenedor de consulta ip
MASTER_PORT : número de puerto maestro, número de puerto se refiere a un recipiente
MASTER_USER datos de usuario para la sincronización:
master_password : se utiliza para sincronizar la contraseña del usuario
MASTER_LOG_FILE : Especifica Esclavo comenzar a copiar los datos a partir del cual archivo de registro, es decir, el valor del campo en el archivo citadas con anterioridad
MASTER_LOG_POS valor que debe comenzar la posición de lectura, es decir, los campos de posición antes mencionadas:
master_connect_retry : Si la conexión falla, intervalo de reintento, en cuestión de segundos, por defecto es de 60 segundos
Mysql esclavo se lleva a cabo en el terminal show slave status \G;
para la visualización de estado de sincronización maestro-esclavo.
En circunstancias normales, SlaveIORunning y SlaveSQLRunning son No, porque no hemos dado vuelta en el proceso de replicación maestro-esclavo. Use start slave
proceso de replicación maestro-esclavo abierta, y luego consultar el estado de sincronización maestro-esclavo de nuevo show slave status \G;
.
SlaveIORunning y SlaveSQLRunning son Sí, se ha abierto instrucciones de la copia maestra. En este punto se puede probar la sincronización de datos es satisfactoria.
Amo-esclavo de replicación de solución de problemas:
Use start slave
proceso de replicación maestro-esclavo abierta, si SlaveIORunning sido la conexión, entonces la replicación maestro-esclavo se ha conectado, esta situación es causada generalmente por varias razones a continuación, podemos ser excluidos de conformidad con las puntas Last_IO_Error.
-
No Red
Comprobar IP, puerto
-
contraseña incorrecta
Compruebe si se ha creado para los usuarios de sincronización y la contraseña del usuario es correcta
-
no pos
Compruebe el Maestro de la Posición
Prueba de replicación maestro-esclavo
Prueba de la replicación maestro-esclavo será mucho, la más simple es crear una base de datos de Maestro, Esclavo y luego comprobar si esta base de datos.
Maestro:
Esclavo:
¿Por qué construir con base acoplable?
- Los recursos limitados
- máquina virtual creada en la configuración de la máquina que se requiere, y un paso complicado de instalar MySQL
- Una pluralidad de recipientes se puede ejecutar en una sola máquina acoplable
- contenedores de Docker son, IP independiente independiente, no entren en conflicto
- Acoplable utilizar sencillos pasos para iniciar el segundo nivel en el contenedor
Estructuras desde el servidor maestro utilizando acoplable
Primer espejo cargador de muelle de tracción, que aquí utilizar la versión 5.7 de MySQL:
docker pull mysql:5.7
Esta imagen se utiliza a continuación para iniciar el recipiente, donde la necesidad de partir de dos recipientes principal independiente
Master (principal):
docker run -p 3339:3306 --name mymysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
Esclavo (desde):
docker run -p 3340:3306 --name mymysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
Mapa extranjera Maestro del puerto es 3339, la asignación de puertos Esclavo externo es 3340. Debido a que los contenedores ventana acoplable son independientes entre sí, cada contenedor tiene su propia IP independiente, por lo que un recipiente diferente usando el mismo puerto y no entrará en conflicto. Aquí debemos tratar de puerto por defecto usar MySQL 3306, o pueden no aparecer en la edición mediante conexión IP de MySQL contenedor ventana acoplable.
Utilice docker ps
el comando para ver los contenedores están ejecutando:
En este momento, otras herramientas se pueden utilizar para probar la conexión Navicat MySQL
Configuración Master (Principal)
Por docker exec -it 627a2368c865 /bin/bash
comando Maestro en el interior del contenedor, también se puede docker exec -it mysql-master /bin/bash
mandar a entrar. 627a2368c865 es el ID del contenedor, y MySQL-master es el nombre de la embarcación.
cd /etc/mysql
Cambie al directorio en / etc / mysql, y luego vi my.cnf
a editar my.cnf. En serán reportados a cabo este punto bash: vi: command not found
, tenemos que instalar vim a sí mismos dentro del contenedor ventana acoplable. El uso apt-get install vim
de comandos para instalar vim
Aparecerá las siguientes preguntas:
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package vim
Ejecución apt-get update
, y luego ejecuta de nuevo apt-get install vim
para instalar correctamente vim. Entonces podemos usar vim para editar my.cnf, agregue la siguiente configuración en el my.cnf:
[mysqld]
## 同一局域网内注意要唯一
server-id=100
## 开启二进制日志功能,可以随便取(关键)
log-bin=mysql-bin
Después de la configuración, deberá reiniciar la configuración del servicio MySQL para tener efecto. Utilice service mysql restart
reinicio completo. Hará que el contenedor ventana acoplable para detener el servicio reinicio de MySQL, también tenemos que docker start mysql-master
iniciar el contenedor.
El siguiente paso se crea en la base de datos de sincronización de datos de usuario principal, el usuario concede permiso esclavo esclavo de replicación y privilegio de réplica de cliente para la sincronización primaria entre los datos de la base de datos.
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
Configuración del esclavo (de)
Y la configuración de maestro (primario) como añadió el fichero de configuración my.cnf sigue el esclavo:
[mysqld]
## 设置server_id,注意要唯一
server-id=101
## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=mysql-slave-bin
## relay_log配置中继日志
relay_log=edu-mysql-relay-bin
Después de la configuración y la necesidad de reiniciar la operación de servicio MySQL y configuración del maestro ventana acoplable envase (primario) consistente.
Link Master (principal) y el Esclavo (de)
En el Master en el MySQL, ejecutarshow master status;
Detrás se utilizará el valor de los campos de archivo y de posición, antes de que se haya completado la última operación, la necesidad de asegurar que la biblioteca maestro no puede hacer nada, si no causará un cambio de estado, los cambios en el valor de los campos de archivo y posición.
En esclavo entrar en MySQL, ejecutarchange master to master_host='172.17.0.2', master_user='slave', master_password='123456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos= 2830, master_connect_retry=30;
Comando Descripción:
MASTER_HOST : Dirección de maestro, en referencia al contenedor IP independiente, por docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称|容器id
contenedor de consulta ip
MASTER_PORT : número de puerto maestro, número de puerto se refiere a un recipiente
MASTER_USER datos de usuario para la sincronización:
master_password : se utiliza para sincronizar la contraseña del usuario
MASTER_LOG_FILE : Especifica Esclavo comenzar a copiar los datos a partir del cual archivo de registro, es decir, el valor del campo en el archivo citadas con anterioridad
MASTER_LOG_POS valor que debe comenzar la posición de lectura, es decir, los campos de posición antes mencionadas:
master_connect_retry : Si la conexión falla, intervalo de reintento, en cuestión de segundos, por defecto es de 60 segundos
Mysql esclavo se lleva a cabo en el terminal show slave status \G;
para la visualización de estado de sincronización maestro-esclavo.
En circunstancias normales, SlaveIORunning y SlaveSQLRunning son No, porque no hemos dado vuelta en el proceso de replicación maestro-esclavo. Use start slave
proceso de replicación maestro-esclavo abierta, y luego consultar el estado de sincronización maestro-esclavo de nuevo show slave status \G;
.
SlaveIORunning y SlaveSQLRunning son Sí, se ha abierto instrucciones de la copia maestra. En este punto se puede probar la sincronización de datos es satisfactoria.
Amo-esclavo de replicación de solución de problemas:
Use start slave
proceso de replicación maestro-esclavo abierta, si SlaveIORunning sido la conexión, entonces la replicación maestro-esclavo se ha conectado, esta situación es causada generalmente por varias razones a continuación, podemos ser excluidos de conformidad con las puntas Last_IO_Error.
-
No Red
Comprobar IP, puerto
-
contraseña incorrecta
Compruebe si se ha creado para los usuarios de sincronización y la contraseña del usuario es correcta
-
no pos
Compruebe el Maestro de la Posición
Prueba de replicación maestro-esclavo
Prueba de la replicación maestro-esclavo será mucho, la más simple es crear una base de datos de Maestro, Esclavo y luego comprobar si esta base de datos.
Maestro:
Esclavo: