docker 搭建部署mysql主从复制

1.安装mysql

主节点
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

2.使用mysql连接工具查看是否能连接上

docker 搭建部署mysql主从复制_第1张图片
若是无法连接上,看具体报错
若是报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('*******');

3.修改mysql的配置文件

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

4.重启mysql

#重启主节点和从节点
docker restart mysqlMaster
docker restart mysqlSlave
#如果报错请查看docker的日志
docker logs 容器名|容器id

5.查看my.cnf是否成功

show GLOBAL VARIABLES like 'log_bin%';

docker 搭建部署mysql主从复制_第2张图片

6.创建主从复制用户信息

#进入master的sql连接中执行
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
flush privileges;

7.开启主从复制

1.准备主节点信息,查询的两个字段信息从节点是需要的

show master status;

在这里插入图片描述
2.从节点准备

  1. 获取主节点docker的ip
 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;//或者从客户端查看

docker 搭建部署mysql主从复制_第3张图片
在这里插入图片描述

8测试

从主节点随意创建表。可以在从节点看到就可以了

你可能感兴趣的:(mysql,docker,linux)