docker-mysql(集群)

发布时间 2023-07-31 15:06:29作者: vba是最好的语言

第一步:安装docker+并获取mysql镜像

第二步:运行master的mysql容器

docker run -id \
--name=mysql_master \
-p 3307:3306 \
-v $PWD/mysql-master/conf:/etc/mysql/conf.d \
-v $PWD/mysql-master/logs:/logs \
-v $PWD/mysql-master/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql

命令比较简单。主要-v的使用,保证在容器挂了的时候,数据不会丢失。$PWD表示当前目录地址。

 第三步,修改my.cnf配置文件

1.先copy到虚拟机目录上

docker cp 0a70ced7b5e1:/etc/my.cnf /Users/hicheer/
/Users/hicheer/ --虚拟机上的一个临时目录,要注意修改为自己的路径。

2 修改my.cnf文件

 插入的代码:

log-bin=mysql-bin
server-id=1

3在copy回去,覆盖原有mysql容器中原因配置,命令如下:注意目录和容器ID的替换。

docker cp /Users/hicheer/my.cnf 0a70ced7b5e1:/etc/

4重启一下容器。

docker restart 容器ID

第四步:新建一个用户,用来给从数据库访问主数据库。

进入mysql:docker exec -it mysql-master bash;mysql -uroot -p;输入密码即可。

新建用户命令:

grant replication slave on *.* to 'test'@'%' identified by '123456'; flush privileges;

查看当前主数据库binglog日志状态 

show master status;

 这里主要看看两个参数:“File” 与 “Position” 记住并复制到记事本上,等下要用。

第五步:运行一个slave的mysql容器。

docker run -id \
--name=mysql_slave \
-p 3308:3306 \
-v $PWD/mysql-slave/conf:/etc/mysql/conf.d \
-v $PWD/mysql-slave/logs:/logs \
-v $PWD/mysql-slave/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql

同样的修改my.conf配置文件。

docker cp 8ca6a479d042:/etc/my.cnf /tmp/mysql-temp/ 
docker cp /tmp/mysql-temp/my.cnf 8ca6a479d042:/etc/

修改地方

 

log-bin=mysql-bin
server-id=2

再重启一下当前容器。

docker restart 8ca6a479d042

第六步,设置从主关系

1 进入从容器内部。

docker exec -it 8ca6a479d042 bash
mysql -uroot -p --输入密码

2 准备从数据库连接主数据库内容.

 1)获取主数据库容器的ip地址

docker inspect -f '{{.Name}} - {{.NetworkSettings.IPAddress }}' $(docker ps -aq)

 用上面参数替换下面命令中的参数

change master to master_host='你的IP', master_user='test账户名', master_password='test账户密码', master_port=默认端口号, master_log_file='你保存的File参数值', master_log_pos=你保存的Position参数值, master_connect_retry=30;

开启主从复制

start slave;

查看是否开启

show slave status\G

但我这个一直在Connecting中。 

 

参考地址:https://blog.csdn.net/weixin_49457704/article/details/127902985

 

 


2.