docker创建mysql
这里如果是mac本的话,要特别注意在拉取镜像的时候需要如下操作
首先拉取mysql镜像
docker pull mysql/mysql-server:5.7.31
创建容器
docker run -p 3351:3306 --name myMysql-3351 -v /Users/xiaobo/DockerImage/mysql/3351/conf/my.cnf:/etc/my.cnf -v /Users/xiaobo/DockerImage/mysql/3351/logs/3351.log:/var/log/mysqld.log -v /Users/xiaobo/DockerImage/mysql/3351/data:/var/lib/data -e MYSQL_ROOT_PASSWORD=123456 -d mysql/mysql-server:5.7.31
注意⚠️
- -e MYSQL_ROOT_PASSWORD=123456 是设置密码
- 如果是mac本是默认拉取镜像,或者创建容器的时候可以+
--platform linux/x86_64
- 如果docker启动不成功的话需要将挂载的my.cnf文件修改权限755
chmod 755 my.cnf
修改权限使得navicat可以登录
进入容器
docker exec -it 容器的名字 /bin/bash
输入以下命令
- use mysql - update user set Host='%' where User='root'; - 最后 flush privileges;
docker创建多实例
按照上面的步骤依次创建3351,3352,3353
相应的my.cnf内容如下图
⚠️:上面所写的-p3351:3306实际上是宿主机对容器的映射
这里在做从库同步的时候,要使用容器的ip,命令如下
docker inspect myMysql-3351
先查看主节点的状态
# 查看主节点状态 SHOW MASTER STATUS; # 刷新日志 flush logs; # 展示所有的主库binlog show master logs;
在从库同步的时候输入以下命令
# 首先要切换到从库下,然后执行上面的,SHOW MASTER STATUS;可看到如上图 CHANGE MASTER TO MASTER_HOST='172.17.0.3', MASTER_USER='root', MASTER_PASSWORD='123456', MASTER_PORT = 3306, MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=154; START SLAVE; show slave status;
上面命令执行好后会出现如下图,表示成功(这里并非绝对,对于多主多从的情况下还需要看偏移量)