dtcms插件 wordpress vim复制 iic cakephp orm grunt vue前端开发 jmeter性能测试视频 jq去除空格 list获取最后一个元素 linux超级用户 mac版的matlab好用吗 升级python版本 excel带格式复制粘贴 jquery获取兄弟节点 重置hosts python运算符优先级 python用什么ide java开发 java集合遍历 javahttp java获取url参数 php案例 图吧导航怎么样 js四舍五入 狮子狗出装 jb51 pyh 华为交换机学习指南 pr蒙版 网卡驱动安装包 sendto函数 qq飞车刷车 studioone 小米手环怎么连接手机 产品修图 马哥python 三菱plc序列号 total同级生2下载
当前位置: 首页 > 学习教程  > 编程语言

Centos7使用Docker搭建PXC集群(5.7版本)

2020/7/24 11:21:07 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

创建Docker Swarm虚拟网络

docker swarm init


在运行成功之后有:docker swarm join --token SWMTKN-1-65jot7h7i3qpvyoii12u0oz6djay4k7aifhgicwdigypuvykey-2piyc2vowv25zv9hcziz4wvl5 10.1.6.223:2377
在其他节点运行该命令就可以加入改Swarm

查看Swarm节点下的主机,只能在主机下查看

docker node ls

删除节点下的某一台主机

如果节点处于Active下需要加-f,否则不需要加。

docker node rm -f vhmhgzyfyl710x0ojkbg9yywm(节点ID)

解散Swarm集群

由于Swarm主机不能踢除自己,所以要用下面的这个命令解散

docker swarm leave -f

由于Swarm主机踢出节点之后,节点默认以为自己还在原先的Swarm集群中,所以当需要加入新的Swarm集群,需要执行下面的命令

docker swarm leave

查看Swarm集群网络,只能在Swaram主节点运行

docker network ls

创建虚拟网络

docker network create -d overlay --attachable swarm_mysql(虚拟网络名称自定义)


如果将所有的容器都放在同一个虚拟网络中,IP可能会被分配完,创建多个虚拟网络就可以解决这个问题,比如Mysql集群可以放在一个Mysql的虚拟网络中。

删除虚拟网络

docker network rm swarm_mysql(虚拟网络名称)

创建分布式容器

docker run -it --net=swarm_test(虚拟网络名称)

开放端口

2377:让其他节点加入Swarm集群的端口
7946、4789:Swarm集群中互相通讯的端口,且要打开TCP/UDP

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

搭建PXC集群

介绍

  1. Pecona XtraDB Cluster 是业界主流的Mysql集群方案
  2. PXC集群的数据同步具有强一直性(阿里的OceanBase也借鉴了这一点)
  3. PXC集群只支持InnoDB引擎

下载

PXC镜像详细介绍

这里使用5.7版本的,一开始我使用了8.0的会有SSL错误,需要另外单独配置这个。具体8.0的说明参考官方的文档。
PXC8.0官方说明:https://www.percona.com/doc/percona-xtradb-cluster/8.0/howtos/upgrade_guide.html
官网描述:https://www.percona.com/doc/percona-xtradb-cluster/8.0/security/encrypt-traffic.html#ssl-auto-conf

// 拉取PXC
docker pull percona/percona-xtradb-cluster:5.7.21
// 修改镜像名称为PXC
docker tag percona/percona-xtradb-cluster:5.7.21 pxc
// 删除原来的percona/percona-xtradb-cluster镜像
docker rmi percona/percona-xtradb-cluster:5.7.21

PXC主节点容器

  1. 第一个启动的PXC节点就是主节点,它负责初始化PXC集群
  2. PXC启动之后,就没有主节点的角色了
  3. PXC集群中任何节点都是可以读写数据

创建主节点

创建主节点之后,稍微等一会,会初始化一些东西
官方文档

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

-e MYSQL_ROOT_PASSWORD=123456:Mysql的root密码
-e CLUSTER_NAME=PXC1:PXC集群名称
-e XTRABACKUP_PASSWORD=123456:PXC集群之间数据同步的密码
-v pnv1:/var/lib/mysql:数据卷挂载,pnv1为数据卷名称。可以理解为虚拟的磁盘,容器在保存数据的时候往/var/lib/mysql路径保存数据,其实就是把数据包存在数据卷上了。
–privileged:表示有读写权限
–name=pn1:容器名称
–net=swarm_mysql:加入到swram_mysql的虚拟网络
pxc:来自那个镜像创建

数据卷操作
// 查看当前存在的数据卷
docker volume ls
// 创建一个的数据卷,name:数据卷名称
docker volume create ${name}
// 删除某个数据卷,name:数据卷名称
docker volume rm ${name}
// 查看某个数据卷,name:数据卷名称
docker volume inspect ${name}

创建从节点

只有主节点可以访问了,才能创建从节点,否则会闪退。

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

额外增加的运行命令:
CLUSTER_JOIN=pn1:加入的主节点名称,要跟主节点的名称保持一直

创建完毕之后可以在这两个数据库创建库进行测试,不管在哪个创建或其他操作,另一个都会进行同步。
默认情况下
创建client表,另一个节点就会自动同步

PS

之前我采用的是8.0的PXC,但是就是报SSL错误。
报错信息是:
New joining cluster node didn’t find needed SSL artifacts

找了很久的资料文档,在官方的文档中找到:是由于8.0默认开启了pxc-encrypt-cluster-traffic,强制使用SSL,后来我在容器的配置中找到mysql的配置,把这个属性改为OFF,重启容器和docker,子节点还是不能加入,也不是很清楚为什么,后来就先用5.7版本跑通。主要就是要主从节点使用同一份SSL证书。
PXC8.0官方说明:https://www.percona.com/doc/percona-xtradb-cluster/8.0/howtos/upgrade_guide.html
官网描述对8.0属性pxc-encrypt-cluster-traffic描述:https://www.percona.com/doc/percona-xtradb-cluster/8.0/security/encrypt-traffic.html#ssl-auto-conf


本文链接: http://www.dtmao.cc/news_show_50401.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?