-
首先基于docker拉取mysql镜像
docker pull mysql:5.7
-
使用下载好的镜像,启动主从两个容器
docker run -p 3339:3306 --name mymysql –e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 # 主 docker run -p 3340:3306 --name mymysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 # 从
-
配置主从
docker exec -it 627a2368c865 /bin/bash # 进入容器,627a2368c865是容器的id,而mysql-master是容器的名称 apt-get update apt-get install vim # 在容器中手动安装 vim
-
vi my.cnf,进入/etc/mysql目录下,对my.cnf进行编辑
[mysqld] server-id = 100 log-bin = mysql-bin ------------------------------------------ service mysql restart # 重启mysql docker start mysql-master # 启动容器
-
创建主从所需权限用户
CREATE USER 'slave'@'%' IDENTIFIED BY '123456' # 创建用户 GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%' # 设置权限
-
配置从数据库
[mysqld]
server-id = 101
------------------------------------------
service mysql restart # 重启mysql
docker start mysql-master # 启动容器
------------------------------------------
# 这3个是 一行
change master to master_host='172.17.0.2', master_user='slave',
master_password='123456', master_port=3306, master_log_file='mysql-bin.000001',
master_log_pos= 254, master_connect_retry=30;
-
这里需要注意的是,有两个参数来自于主库,可以通过主库中运行
show master status
查看得到,分别是master_log_file
以及master_log_pos
。 -
最终在从库执行
show slave status
查看从库状态即可。看到IO与SQL线程处于活跃状态即为正常。