经过几天的探索,使用docker+percona-xtradb-cluster搭建mysql集群环境终于成功了。期间遇到一些错误,先分享一下:
1.docker pull percona/percona-xtradb-cluster,这个最新版本搭建时,第一主节点可以搭建成功,但是第2节点连接集群时出现闪退,查docker日志发现报错“New joining cluster node didn't find needed SSL artifacts”,应该是此版本要求节点间通讯使用SSL,配置的问题,大概是这个版本还没有解决兼容性等问题,目前先不采用此版本。
2.目前采用docker pull percona/percona-xtradb-cluster:5.7的版本搭建可以成功。
搭建步骤说明如下:
1.获得percona-xtradb-cluster的docker镜像
#docker pull percona/percona-xtradb-cluster:5.7
更名为简写模式
#docker tag percona/percona-xtradb-cluster:5.7 pxc
2.建立第一节点
#docker run -d -p 3301:3306 --privileged --name mysql_s01 -e MYSQL_ROOT_PASSWORD=root123 -e CLUSTER_NAME=PXC_mysql -e XTRABACKUP_PASSWORD=root123 --net=pxc-net pxc成功后,用docker ps -a查看docker容器状态,若正常up起来,则测试连接
#docker exec -it mysql_s01 bash
进入容器连接mysql,#mysql -uroot -p
连接成功说明,mysql正常
3.建立第2个节点
docker run -d --privileged --name mysql_s02 -e MYSQL_ROOT_PASSWORD=root123 -e CLUSTER_NAME=PXC_mysql -e XTRABACKUP_PASSWORD=root123 -p 3302:3306 -e CLUSTER_JOIN=mysql_s01 --net=pxc-net pxc同样用docker查看容器状态,mysql_s02节点是否成功
再测试mysql的连通性
依次建立第3、4等后续集群节点。
注:如果外网访问3301、3302端口等,需要在网络提供商(如阿里云端)开通3301等相应的安全组的配置安全规则,以及开通防火墙。
4.测试集群节点的同步
测试方法举例:可以在节点1中创建表test,并建立相应的字段,如果其他节点如(节点2等)也同时创建了同样的表test,说明集群生效,同时我们也可以做数据测试,在其中一个节点录入数据,那么相应的其他节点也会自动同步数据,我们可以对表进行CRUD等操作,观察其他节点是否能够正常同步数据,如果成功,说明集群的同步功能都是正常生效的。如下图就是所做的2个节点mysql集群的测试案例截图。
还可以进行故障转移的测试,负载均衡的测试。
本文待后续持续完善改进。