一.
1.首先拉取docker镜像,我们这里使用5.7版本的mysql:
docker pull mysql:5.7
2.分别启动主从两个容器:
docker run -p 3339:3306 --name mymysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7(从)
docker run -p 3339:3306 --name mysqli -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7(主)
3.
此时可以使用Navicat等工具测试连接mysql
Docker容器
一 .配置主容器(mysqli):
① 通过docker exec -it 627a2368c865 /bin/bash
命令进入到Master容器内部
② cd /etc/mysql
切换到/etc/mysql目录下,然后vi my.cnf
对my.cnf进行编辑。此时会报出bash: vi: command not found
,需要我们在docker容器内部自行安装vim。使 用 , apt-get install vim
命令安装vim
③ 会出现以下问题:
Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package vim
解决方式:执行apt-get update
,然后再次执行apt-get install vim
即可成功安装vim
④ 使用vim编辑my.cnf,在my.cnf中添加:
[mysqld]
## 同一局域网内注意要唯一
server-id=100
## 开启二进制日志功能,可以随便取(关键)
log-bin=mysql-bin
⑤.使用service mysql restart
完成重启
需要docker start mysql-master
启动容器
⑥
下一步在Master数据库创建数据同步用户,授予用户 slave REPLICATION SLAVE权限和REPLICATION CLIENT权限,用于在主从库之间同步数据。
CREATE USER ‘slave‘@‘%‘ IDENTIFIED BY ‘123456‘;
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO ‘slave‘@‘%‘;
二.配置从数据库:
① 在my.cnf中添加相同配置(注意server-id改为101)
[mysqld]
## 同一局域网内注意要唯一
server-id=101
## 开启二进制日志功能,可以随便取(关键)
log-bin=mysql-bin
② 重启mysql服务和docker容器,操作和配置Master(主)一致
③ 在mysqli(主容器)进入mysql,执行show master status
④ 通过docker inspect --format=‘{{.NetworkSettings.IPAddress}}‘ 容器名称|容器id
查询容器的ip
⑤ 在mymysql(从容器)中进入 mysql,执行change 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;//用户名 密码与 一(6中密码一致)
可能报错
解决方式:停止从服务器
⑥ show slave status \G;
使用start slave
开启主从复制过程,然后再次查询主从同步状态show slave status \G;
。
⑦
报错原因
- 网络不通
检查ip,端口
- 密码不对
检查是否创建用于同步的用户和用户密码是否正确
- pos不对
检查Master的 Position
⑧ 使用start slave
开启主从复制过程,然后再次查询主从同步状态show slave status \G;
。
三. 在主服务器创建数据库,检查是否成功
主
从
原文地址:https://www.cnblogs.com/chaihtml/p/10712470.html