docker swarm搭建docker集群及Msyql集群

docker swarm init

将选中的内容粘贴到另外一台虚拟机执行

 管理节点的主机需要开放2377端口

firewall-cmd --zone=public --add-port=2377/tcp --permanent
firewall-cmd --reload

 * 代表主节点

解散swarm集群

docker swarm leave -f

解除后,重新创建swarm集群,worker节点重新加入时需要先脱离原来的swarm集群

创建自定义的swarm虚拟网络

docker network create -d overlay --attachable swarm_mysql

删除命令

docker network rm exciq424xlds

swarm集群还需要开放以下端口,其他节点也要开放端口

firewall-cmd --zone=public --add-port=2377/tcp --permanent
firewall-cmd --zone=public --add-port=4789/tcp --permanent
firewall-cmd --zone=public --add-port=4789/udp --permanent
firewall-cmd --zone=public --add-port=7946/tcp --permanent
firewall-cmd --zone=public --add-port=7946/udp --permanent
firewall-cmd --reload

搭建PXC集群.mysql的PXC集群的数据是强一致性的

// 下载
docker pull percona/percona-xtradb-cluster
// 重命名
docker tag percona/percona-xtradb-cluster pxc
// 删除
docker rmi percona/percona-xtradb-cluster

docker run -d -p 9001:3306 -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 -v pnv1:/var/lib/mysql --privileged --name=pn1 --net=swarm_mysql pxc

docker run -d -p 9001:3306 -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 -e CLUSTER_JOIN=pn1 -v pnv2:/var/lib/mysql --privileged --name=pn2 --net=swarm_mysql pxc

在创建从节点时可能会遇到的错误

查看主节点的挂载卷,并进入

docker inspect pnv1

将这5个文件复制出来,然后通过工具上传到从节点的挂载卷

 

然后再启动从节点

PXC节点重启以及宕机操作

重启:

1.修改主节点数据卷中 "grastate.dat" 文件的 safe_to_bootstrap 参数为 1

2.启动主节点,等待主节点启动成功再启动从节点

假设主节点宕机时,如果从节点只有1个,会提示WSREP has not yet prepared node for application use, 此时数据库不能进行读写操作 (建议集群节点数量≥3个)

PXC(Percona Xtradb Cluster)为了保证数据一致性只允许小于50%的节点脱离集群,当节点数小于50%的子集群会进入非主模式拒绝对外提供服务.会导致集群暂时无法对外提供服务.

查询节点状态显示为non-Primary

show status like '%wsrep_cluster%';

解决办法,将节点强制提升为主节点,对外继续提供读写

SET GLOBAL wsrep_provider_options='pc.bootstrap=YES';

然后恢复主节点.  删除主节点容器

docker rm -f pn1

重新创建容器,加入到pn2集群,同步pn2的数据

docker run -d -p 9001:3306 -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 -e CLUSTER_JOIN=pn2 -v pnv1:/var/lib/mysql --privileged --name=pn1 --net=swarm_mysql pxc

 

搭建replication集群

docker pull mishamx/mysql
docker tag mishamx/mysql rep
docker rmi mishamx/mysql

//创建同步数据用的账户backup和密码123456
docker run -d -p 9003:3306 --name rn1 -e MYSQL_MASTER_PORT=3306 -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_REPLICATION_USER=backup -e  MYSQL_REPLICATION_PASSWORD=123456 -v rnv1:/var/lib/mysql --privileged --net=swarm_mysql rep

docker run -d -p 9003:3306 --name rn2 -e MYSQL_MASTER_HOST=rn1 -e MYSQL_MASTER_PORT=3306 -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_REPLICATION_USER=backup -e  MYSQL_REPLICATION_PASSWORD=123456 -v rnv2:/var/lib/mysql --privileged --net=swarm_mysql rep

在master节点建表添加数据,到slave节点查看同步数据.  注意:在slave节点添加/修改/删除的数据是不会同步到master节点的 

docker pull adoptopenjdk/openjdk8
docker tag adoptopenjdk/openjdk8 openjdk8
docker rmi adoptopenjdk/openjdk8

创建mycat容器 

docker run -d -it --name mycat -v mycat:/root/server --privileged --net=host openjdk8

 

mycat需要开放8066和9066端口

 将下载的mycat压缩包上传 到宿主机的挂载卷并解压

schema对应server.xml中的schema

PXC集群每个节点都是可读可写的,配置blance=0,writeType=1, dataHost name是自定义的

配置读写分离,适用于replication集群的一主多从

参考资料

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值