天天看点

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 [email protected]'%' identified by '123';" #授权用户
           
mysql -uroot -p123 -e 'flush privileges;'   #刷新权限
           
mysql -uroot -p123 -e 'show master status'  #查看二进位置
exit
           
docker部署mysql一主一从

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一主一从

测试