利用Docker搭建主从服务器
首先拉取docker镜像,我们这里使用5.7版本的mysql:
docker pull mysql:5.7
然后使用此镜像启动容器,这里需要分别启动主从两个容器
Master(主):
docker run -p 3339:3306 --name mymysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
Slave(从):
docker run -p 3340:3306 --name mymysql1 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
使用docker ps
命令查看正在运行的容器:
此时可以使用Navicat等工具测试连接mysql创建两个以上端口的连接
配置mymysql(主)
通过docker exec -it 容器id /bin/bash
命令进入到mymysql容器内部,也可以通过docker exec -it 容器名称 /bin/bash
命令进入。
cd /etc/mysql
切换到/etc/mysql目录下,然后vim my.cnf 或者 vi my.cnf 如果没有vi或者vim
apt-get update
apt-get install vim 命令安装vim
进入my.cnf
[mysqld] ## 同一局域网内注意要唯一 server-id=100 ## 开启二进制日志功能,可以随便取(关键) log-bin=mysql-bin
配置完成之后,需要重启mysql服务使配置生效。使用service mysql restart
完成重启。
重启mysql服务时会使得docker容器停止,我们还需要docker start 容器id
启动容器。
下一步在mymysql(主)数据库创建数据同步用户,授予用户 mymysql1 REPLICATION SLAVE权限和REPLICATION CLIENT权限,用于在主从库之间同步数据。
CREATE USER ‘mymysql1‘@‘%‘ IDENTIFIED BY ‘123456‘;
只要出现这个表示成功然后运行下一个
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO ‘mymysql1‘@‘%‘;
配置mymysql1(从)
和配置mymysql(主)一样,在mymysql1配置文件my.cnf中添加如下配置:
[mysqld]
## 设置server_id,注意要唯一
server-id=101
## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=mysql-mymysql-bin
## relay_log配置中继日志
relay_log=edu-mysql-relay-bin
配置完成后也需要重启mysql服务和docker容器
链接mymysql(主)和mymysql1(从)
在mymysql1(从)进入mysql,mysql -u root -p 密码:123456 执行show master status;
在mymysql1中进入MySQL 执行
change master to
master_host=‘172.17.0.2‘,(主容器ip 用docker inspect 容器ID查看)
master_user=‘mymysql1‘,
master_log_file=‘mysql-bin.000001‘,(主File的值)
master_log_pos=1070,(主Position的值)
master_port=3306,
master_password=‘123456‘;
start slave;
然后执行show slave status \G;查看
这两个都是yes表示成功
在主连接中创建库在从连接中就可以看见
3.3 如在配置主从同步前master中已有数据,则需提前进行数据同步操作
登录master,执行锁表操作
mysql -u root -p1234 -h 127.0.0.1 -P 3307
FLUSH TABLES WITH READ LOCK;
将master中需要同步的db的数据dump出来
mysqldump -u root -p -h 127.0.0.1 -P 3307 mytest > mytest.dump
将数据导入slave
mysql -u root -p -h 127.0.0.1 -P 3308 mytest < mytest.dump
按前文所述步骤开启主从同步,然后解锁master
UNLOCK TABLES;
作者:yangziwen
链接:https://www.jianshu.com/p/f1c56fa3b20d
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
原文地址:https://www.cnblogs.com/gwhm/p/10900246.html