准备两个mysql的docker容器,并将对应的配置文件映射到主机目录中(或者不做映射,直接进入容器进行修改)。
直接准备两台虚拟机或者实体机,安装上mysql数据库
[mysqld] ## 同一局域网中要注意唯一 server-id=1 ## 开启二进制日志文件功能,可以自定义名称(关键) log-bin=mysql-bin
docker exec -it mysql /bin/bash
service mysql restart
docker restart mysql
service restart mysqld
确保在主服务器上的 skip_networking 选项处于 OFF 关闭状态,这是默认值。
如果是启用的,则从数据库服务与主数据库通信,并且复制失败。
## 登录 mysql:mysql -u root -p "密码" ## 查看状态 show variables like '%skip_networking%';
CREATE USER 'repl'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
[mysqld] server-id=2
在从数据库服务器配置连接到主数据服务器的相关信息
## 登录到从数据库 mysql -u root -p "密码" ## 执行 ## xxx.xxx.xxx.xxx 主数据库ip地址,分为两种情况 ## 如果是同一台服务器上的两个docker容器,则使用 docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称/容器ID; mysql > **CHANGE MASTER TO MASTER_HOST='XXX.XXX.XXX.XXX',MASTER_PORT=3306,MASTER_USER='repl',MASTER_PASSWORD='password';** ## 启动从服务器数据库同步线程 mysql > start slave;
show slave status \G;
在主服务器数据库,创建一个数据库,发现从服务器数据库中同步新建的相同的数据库,就成功。
如果还需要配置多余的从服务器数据库,可以遵循上面的配置,添加一个配置就行。新建的从服务器数据库,会自动保存主服务器数据库之前的数据。