使用docker搭建pxc集群采的巨坑

搭建pxc集群中间遇到许多坑,特此记录一下

首先pull镜像

docker pull percona/percona-xtradb-cluster:5.7

对镜像重命名

docker tag percona/percona-xtradb-cluster:5.7 pxc

创建网络(用于pxc集群内部使用)

docker network create --subnet=172.30.0.0/24 pxc-network

附删除网络命令

docker network rm 你创建的网络名

查看网络

docker inspect 你创建的网络名

#创建数据卷(存储路径:/var/lib/docker/volumes)
docker volume create v1
docker volume create v2
docker volume create v3

删除数据卷

docker volume rm 你创建的数据卷的名字

查看数据卷

docker inspect 你创建的数据卷的名字

接下来创建容器

第一节点

docker create -p 13306:3306 -v v1:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e CLUSTER_NAME=pxc --name=pxc-node1 --net=pxc-network --ip=172.30.0.2 pxc

第二节点(增加了CLUSTER_JOIN参数)
docker create -p 13307:3306 -v v2:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e CLUSTER_NAME=pxc --name=pxc-node2 -e CLUSTER_JOIN=pxc-node1 --net=pxc-network --ip=172.30.0.3 pxc

第三节点(增加了CLUSTER_JOIN参数)
docker create -p 13308:3306 -v v3:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e CLUSTER_NAME=pxc --name=pxc-node3 -e CLUSTER_JOIN=pxc-node1 --net=pxc-network --ip=172.30.0.4 pxc

-p:端口映射

-v:数据映射 

启动容器(一定要注意,启动的时候要先启动第一个容器,等第一个容器能连上再去开启第二个和第三个,不然会连接不上集群)

接下来说说遇到的问题

第一个问题就是查看容器启动日志的时间,一直显示mysql初始化状态,如下图

中间试了好几次,也都是这样,后来换了一种命令创建容器

docker run -di -p 13306:3306 -v v1:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e CLUSTER_NAME=pxc --name=pxc-node1 --net=pxc-network --ip=172.30.0.2 pxc

发现也是启动两分钟后自动断开连接

于是百度,大概说内存不够,接着清除缓存echo 3 > /proc/sys/vm/drop_caches

发现启动成功了

第二个问题来了

使用Sqlyog或Nativecat连接显示不允许连接,如下图

大概意思是mysql里的user表root账户对应的host属性是localhost

索引修改成所有都可以访问吧,也可以指定固定ip

docker exec -it pxc-node1(容器名) /bin/bash

然后进入mysql

mysql -u -root -p 发现又报了错

Access denied for user 'root'@'localhost'(using password:YES)

通过vi /etc/mysql/node.cnf

在[mysqlId]下加入skip-grant-tables 意思是跳过密码校验

重新进入mysql发现成功了

使用Sqlyog连接发现也能连成功了,找到mysql下的user表把root账户对应的host属性localhost改成%

另外修改root密码为root,执行如下命令

update user set authentication_string=PASSWORD("root") where user='root'

保存退出之后重启容器,发现就没什么问题了

猜你喜欢

转载自www.cnblogs.com/fanlx/p/12059734.html
今日推荐