搭建主数据库
1、拉取镜像
docker pull mysql:5.7
2、运行主数据库
docker run -p 12345:3306 --name mysql_master \
-v /docker/mysql_master/conf:/etc/mysql/conf.d \
-v /docker/mysql_master/logs:/logs \
-v /docker/mysql_master/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
3、查看mysql运行没有有报错
docker logs mysql_master
cd /docker/mysql_master/conf
vim my.cnf
粘贴以下内容
[mysqld]
## 同一局域网内注意要唯一
server-id=1
## 开启二进制日志功能,可以随便取(关键)
log-bin=mysql-bin
5、进入mysql容器
docker exec -it mysql_master bash
6、重启mysql服务,重启之后mysql容器会被停掉
service mysql restart
7、启动mysql容器
docker start mysql_master
8、校验mysql能否搭建为主从复制
docker exec -it mysql_master bash
mysql -uroot -p123456
show variables like '%skip_networking%';
状态为OFF则ok
CREATE USER 'repl'@'%' identified by '123456';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
搭建从数据库
可以在别的机器搭建也可以在同一台机器搭建,我是在另一台服务器搭从数据库,操作基本和主数据库一样。
1、拉取镜像
2、运行镜像,端口 1024~65535之间 随便改,只要没被使用过就行
docker run -p 12345:3306 --name mysql_slave \
-v /docker/mysql_slave/conf:/etc/mysql/conf.d \
-v /docker/mysql_slave/logs:/logs \
-v /docker/mysql_slave/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
3、创建配置文件
cd /docker/mysql_slave/conf
vim my.cnf
复制一下内容
[mysqld]
server-id=2
4、重启mysql容器,使配置生效
docker restart mysql_slave
5、配置主服务器信息
docker exec -it mysql_slave bash
mysql -uroot -p123456
CHANGE MASTER TO MASTER_HOST='118.31.8.238', MASTER_PORT=12345,MASTER_USER='repl',MASTER_PASSWORD='123456';
start slave;
出现下面画面表示成功,如果提示叫你指定服务id,则配置没生效,需要重新创建配置文件并重启
docker inspect --format=’{{.NetworkSettings.IPAddress}}’ mysql_master
可以看到主数据库的ip为172.17.0.3
show slave status \G;
没有看到啥ERROR显示,表示连接主库成功
Navicat连接测试
使用navicat分别连接主数据库、从数据库(注意:如果使用云服务器,记得安全组那边开放端口)