1、首先拉取mysql:5.7镜像
docker pull mysql:5.7
2、拷贝容器mysql配置文件,并配置,以便挂载
docker run --name mysql -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123 mysql:5.7
docker cp mysql1:/etc/mysql/mysql.conf.d /mysql/mysql1 #拷贝容器mysql配置文件,到宿主机上,方便修改
cp -a /mysql/mysql1 /mysql/mysql2 #mysql1主配置,mysql2从配置
docker rm -f mysql #删除容器
echo 'server-id=1
log-bin=mysql-bin'>>/mysql/mysql1
echo 'server-id = 2
relay-log = relay-log'>>/mysql/mysql2
3、运行两个mysql容器
docker run --name mysql1 -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123 -v /mysql/mysql1:/etc/mysql/mysql.conf.d mysql:5.7
docker run --name mysql2 -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123 -v /mysql/mysql2:/etc/mysql/mysql.conf.d mysql:5.7
mysql1端口:10.0.0.41:3306
mysql2端口:10.0.0.41:3307
4、配置mysql主从
mysql1
docker exec -it mysql1 /bin/bash
mysql -uroot -p123 -e "grant all on *.* to he@'%' identified by '123';" #授权用户
mysql -uroot -p123 -e 'flush privileges;' #刷新权限
mysql -uroot -p123 -e 'show master status' #查看二进位置
exit
mysql2
docker exec -it mysql2 /bin/bash
mysql -uroot -p123 -e "change master to master_host='10.0.0.41', master_user='he', master_password='123', master_log_file='mysql-bin.000003', master_log_pos=584;"
mysql -uroot -p123 -e "start slave;"
mysql -uroot -p123 -e "show slave status\G;"
exit
测试