我使用ubuntu docker建立主从复制
Ubuntu 18.04.3 LTS码头工人19.03.5mysql 8.0.18
mysql-master /etc/mysql/conf.d/mysql.cnf
[mysqld]
## 同一局域网内注意要唯一
server-id=100
## 开启二进制日志功能,可以随便取(关键)
log-bin=mysql-bin
bind-address = 0.0.0.0
mysql-slave /etc/mysql/conf.d/mysql.cnf
[mysqld]
## 设置server_id,注意要唯一
server-id=101
## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=mysql-slave-bin
## relay_log配置中继日志
relay_log=edu-mysql-relay-bin
当我使用“显示从属状态\ G”
"Slave_IO_Running: Connecting"
"ERROR 2003 (HY000): Can’t connect to MySQL server on ‘192.168.1.X’ (111)"
怎么了?我该怎么办
更好地使用bitnami-docker-mysql image,它提供了一种从环境变量配置主从配置的方法。
设置复制群集
可以使用Bitnami MySQL Docker映像使用以下环境变量轻松设置零停机MySQL主从复制群集:
MYSQL_REPLICATION_MODE
:复制模式。可能的值主从。没有默认值。
MYSQL_REPLICATION_USER:
在主服务器上创建的复制用户在第一次运行。没有默认值。
MYSQL_REPLICATION_PASSWORD:
复制用户密码。没有默认值。
MYSQL_MASTER_HOST: Hostname/IP
复制主服务器(从服务器参数)。没有默认值。
MYSQL_MASTER_PORT_NUMBER:
复制主机的服务器端口(从站参数)。默认值为3306。
MYSQL_MASTER_ROOT_USER:
复制主服务器上的用户有权访问MYSQL_DATABASE(从参数)。默认为root
MYSQL_MASTER_ROOT_PASSWORD:
复制主机上的用户密码可以访问MYSQL_DATABASE(从参数)。没有默认值。在一个复制群集中可以有一个主节点,零个或多个从节点。启用复制后,主节点将处于读写模式,当从机处于只读模式时。为了获得最佳性能,建议将读取限制为从属。
version: '2'
services:
mysql-master:
image: 'bitnami/mysql:latest'
ports:
- '3306'
volumes:
- /path/to/mysql-persistence:/bitnami/mysql/data
environment:
- MYSQL_REPLICATION_MODE=master
- MYSQL_REPLICATION_USER=repl_user
- MYSQL_REPLICATION_PASSWORD=repl_password
- MYSQL_ROOT_PASSWORD=master_root_password
- MYSQL_USER=my_user
- MYSQL_PASSWORD=my_password
- MYSQL_DATABASE=my_database
mysql-slave:
image: 'bitnami/mysql:latest'
ports:
- '3306'
depends_on:
- mysql-master
environment:
- MYSQL_REPLICATION_MODE=slave
- MYSQL_REPLICATION_USER=repl_user
- MYSQL_REPLICATION_PASSWORD=repl_password
- MYSQL_MASTER_HOST=mysql-master
- MYSQL_MASTER_PORT_NUMBER=3306
- MYSQL_MASTER_ROOT_PASSWORD=master_root_password