Docker搭建pxc集群的资料实在太少,碰到的就是如下图所示一模一样的问题,但是还是没解决方案,然后找了半天的资料终于定位到问题的地方,就先开个记录贴
过程大致就是
1.pxc容器运行后提示用navicat连接提示是没有权限登录,在Mysql中就是没开远程登录权限的意思,然后就想进目录看一下有没有配置文件。
2.docker exec -it node1 bash进入容器后命令行是bash-4.2# 而不是root#******
3.找到了命令docker exec -u root -it node1 bash进入了root权限,修改了配置文件还是启动失败
4.想进mysql内创建远程账号但是mysql -uroot -p一直提示–ck错误
5.还原到最原始的状态重来然后重启部署环境看日志文件,发现首次运行卡在mysql加载中然后运行失败。
6.完全借鉴各地方资料重新部署,终于发现有一种情况能启动成功
//启动成功案例
docker run -d \
-p 3301:3306 \
--name=node1 \
-e MYSQL_ROOT_PASSWORD=root \
-e CLUSTER_NAME=cluster1 \
--net=pxc \
pxc
7.将我自己的不成功命令逐句删除对比,最后定位到
-e CLUSTER_NAME=cluster1
这里的name是cluster1的时候就能启动,然后其他名字我都试过了都卡在Mysql启动状态最后失败
期间也下载过其他的pxc镜像,也或多或少都有些问题,弄了好久一点头绪没有差点放弃了。
另外还有一个很重要的地方就是node1要先等他启动成功后再运行node2,否则也会启动失败
排除掉这个坑点…pxc集群的搭建确实还比较方便,运行后什么都不用配置新建数据库数据表都能直接同步成功
分享一下我最终的笔记,CLUSTER_NAME的问题暂时也没搞明白,因为很多教程的CLUSTER_NAME都是不一样的,但是我这只有cluster1 这个成功跑起来了
docker pull percona/percona-xtradb-cluster
//创建挂载目录
docker volume rm v1
docker volume rm v2
docker volume rm v3
docker volume create --name v1
docker volume create --name v2
docker volume create --name v3
//查看目录
docker volume inspect v1
//创建网络
docker network create --subnet=172.19.0.0/24 pxc
//开防火墙
firewall-cmd --zone=public --add-port=3301/tcp --permanent
firewall-cmd --zone=public --add-port=3302/tcp --permanent
firewall-cmd --reload
docker run \
-p 3301:3306 \
--name=node1 \
--privileged=true \
-e CLUSTER_NAME=cluster1 \
-e MYSQL_ROOT_PASSWORD=root \
-e XTRABACKUP_PASSWORD=root \
--net=pxc \
--ip 172.19.0.2 \
-d pxc
docker run \
-p 3302:3306 \
--name=node2 \
--privileged=true \
-e CLUSTER_NAME=cluster1 \
-e MYSQL_ROOT_PASSWORD=root \
-e XTRABACKUP_PASSWORD=root \
-e CLUSTER_JOIN=node1 \
--net=pxc \
--ip 172.19.0.3 \
-d pxc