docker部署mysql一主一从

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/my.cnf
echo 'server-id = 2 
relay-log = relay-log'>>/mysql/mysql2/my.cnf

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

docker部署mysql一主一从_第1张图片
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

docker部署mysql一主一从_第2张图片
测试

你可能感兴趣的:(mysql,docker)