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集群的一主多从