主节点
docker run --name mysqlMaster -e MYSQL_ROOT_PASSWORD=123456 -d -i -p 3340:3306 --restart=always mysql:5.7
从节点
docker run --name mysqlSlave -e MYSQL_ROOT_PASSWORD=123456 -d -i -p 3340:3306 --restart=always mysql:5.7
若是无法连接上,看具体报错
若是报1103。进入mysql的执行命令下进行命令执行
mysql -u root -p
mysql>use mysql;
mysql>select 'host' from user where user='root';
mysql>update user set host = '%' where user ='root';
mysql>flush privileges;
mysql>select 'host' from user where user='root';
修改docker的密码为
SET PASSWORD FOR 'root' = PASSWORD('*******');
1.修改文件进行编辑
#将master容器内的my.cnf文件复制出来
docker cp mysqlMaster:/etc/mysql/my.cnf master.cnf
#修改master的my.cnf文件
vim master.cnf
如果没有安装vim可以使用apt安装vim
apt-get update
apt-get install vim
在最后追加
## 设置server_id,注意要唯一
server-id=1
## 开启二进制日志功能
log-bin=mysql-bin
#保存,将修改后的my.cnf 复制到容器中
docker cp master.cnf mysqlMaster:/etc/mysql/my.cnf
#将slave容器内的my.cnf文件复制出来
docker cp slave:/etc/mysql/my.cnf slave.cnf
#修改slave的my.cnf文件
vim slave.cnf
在最后追加
## 设置server_id,注意要唯一
server-id=2
## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=mysql-slave-bin
## relay_log配置中继日志
relay_log=edu-mysql-relay-bin
#保存,将修改后的my.cnf 复制到容器中
docker cp slave.cnf slave:/etc/mysql/my.cnf
2.通过ehco添加
## 进入master容器中
docker exec -it mysqlMaster bash
## 执行追加命令
echo '[mysqld]'>/etc/mysql/my.cnf
echo '## 设置server_id,注意要唯一'>>/etc/mysql/my.cnf
echo 'server-id=1'>>/etc/mysql/my.cnf
echo '## 开启二进制日志功能'>>/etc/mysql/my.cnf
echo 'log-bin=mysql-bin'>>/etc/mysql/my.cnf
echo '!includedir /etc/mysql/conf.d/'>>/etc/mysql/my.cnf
echo '!includedir /etc/mysql/mysql.conf.d/'>>/etc/mysql/my.cnf
## 进入slave容器中
docker exec -it mysqlSlave bash
## 执行追加命令
echo '[mysqld]'>/etc/mysql/my.cnf
echo '## 设置server_id,注意要唯一'>>/etc/mysql/my.cnf
echo 'server-id=2'>>/etc/mysql/my.cnf
echo '## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用'>>/etc/mysql/my.cnf
echo 'log-bin=mysql-slave-bin'>>/etc/mysql/my.cnf
echo '## relay_log配置中继日志'>>/etc/mysql/my.cnf
echo 'relay_log=edu-mysql-relay-bin'>>/etc/mysql/my.cnf
echo '!includedir /etc/mysql/conf.d/'>>/etc/mysql/my.cnf
echo '!includedir /etc/mysql/mysql.conf.d/'>>/etc/mysql/my.cnf
#重启主节点和从节点
docker restart mysqlMaster
docker restart mysqlSlave
#如果报错请查看docker的日志
docker logs 容器名|容器id
show GLOBAL VARIABLES like 'log_bin%';
#进入master的sql连接中执行
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
flush privileges;
1.准备主节点信息,查询的两个字段信息从节点是需要的
show master status;
docker inspect --format='{{.NetworkSettings.IPAddress}}' mysqlMaste
master_user 主从节点创建的用户信息和密码
change master to master_host='(主节点docker的ip)', master_user='slave', master_password='123456', master_port=3306, master_log_file='(主节点file字段的信息)', master_log_pos= (主节点position节点信息), master_connect_retry=30;
创建完执行
start slave;
再查看信息
show slave status;//或者从客户端查看
从主节点随意创建表。可以在从节点看到就可以了