docker安装mysql集群

1. 拉取mysql镜像

docker pull mysql:5.7

2. 创建挂载目录

mkdir -p /home/mysql/mysql01/data

mkdir -p /home/mysql/mysql01/conf.d

将附件中的 mysqld.cnf 分别拷贝至conf.d中,如果是单主机docker虚拟仨个容器,需改端口port和server-id

mkdir -p /home/mysql/data

mkdir -p /home/mysql/conf.d

3. 使用镜像创建容器东侧可让

docker run --name mysql01 --net=host --privileged=true -v /home/mysql/mysql01/data:/var/lib/mysql -v /home/mysql/mysql01/conf.d:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root111 -d mysql:5.7

docker run --name mysql02 --net=host --privileged=true -v /home/mysql/mysql02/data:/var/lib/mysql -v /home/mysql/mysql02/conf.d:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root222 -d mysql:5.7

docker run --name mysql03 --net=host --privileged=true -v /home/mysql/mysql03/data:/var/lib/mysql -v /home/mysql/mysql03/conf.d:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root333 -d mysql:5.7

# --net=host 单主机docker容器间联系需开放端口

-p 3306:3306 多主机直接开放防火墙端口

docker run --name mysql252 --net=host --privileged=true -v /home/mysql/data:/var/lib/mysql -v /home/mysql/conf.d:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root123 -d mysql:5.7

4. 创建 mysql-master(mysql01)

###进入容器 docker exec -i -t mysql-master /bin/bash

4.1 进入mysql

mysql -p3306 -uroot -p

4.2 创建一个具有slave复制权限的用户:atlp

GRANT REPLICATION SLAVE ON *.* to 'atlp'@'%' identified by 'atlp123';

4.3 刷新权限

flush privileges;

4.4 显示 master 状态,如下图:

show master status;

mysql-bin.000007 15734

mysql-bin.000008 1549476

5. 创建 mysql-slave(mysql02)

###进入容器 docker exec -i -t mysql-slave137 /bin/bash

5.1 进入mysql

mysql -p3306 -uroot -p

5.2 重置slave

stop slave;

reset slave;

change master to master_host='IP地址',master_user='atlp',master_password='atlp123',master_log_file='mysql-bin.000007',master_log_pos=15734;

#master_host:mysql-master 的 ip 地址;

#master_user:在 4.2 中设置的拥有 slave 复制权限的用户:atlp;

#master_password:用户密码;

#master_log_file:在 4.4 图例中的第一列“File”的值;

#master_log_pos: 在 4.4 图例中的第二列“Position”的值;

5.3 启动slave

start slave;

5.4 查看slave状态

show slave status \G

# --Slave_IO_Running和Slave_SQL_Running 即成功

6. 创建mysql-slave(mysql03)

同上

###查看mysql服务器id

show variables like '%server_id%';

###查看docker日志

docker logs -f -t --since="2019-01-17" --tail=100 mysql02

7. 防火墙设置

#添加(--permanent永久生效,没有此参数重启后失效)

firewall-cmd --zone=public --add-port=3306/tcp --permanent

firewall-cmd --zone=public --add-port=3307/tcp --permanent

firewall-cmd --zone=public --add-port=3308/tcp --permanent

#重新载入

firewall-cmd --reload

#查看

firewall-cmd --list-ports

#删除(如果添加错误可以删除)

firewall-cmd --zone= public --remove-port=80/tcp --permanent

你可能感兴趣的:(docker安装mysql集群)