pecona XtraDB Cluster 业界主流的mysql数据库集群方案,数据同步强一致性,只支持innodb引擎。
1、容器会不会损耗mysql性能,不会。
2、容器崩溃如何提取mysql数据,目录映射。
首先要放开如下端口
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/udp --permanent
firewall-cmd --zone=public --add-port=4789/udp --permanent
firewall-cmd --reload
拉取pxc集群
docker pull percona/percona-xtradb-cluster
docker tag percona/percona-xtradb-cluster pxc
docker rmi percona/percona-xtradb-cluster
第一个启动的PXC节点是主节点,它要初始化集群环境,PXC启动后就没有主节点了。
docker run -d -p 9001:3306 -e MYSQL_ROOT_PASSWORD=123 -e CLUSTER_NAME=pxc -e XTRABACKUP_PASSWORD=123 -v pnv1:/var/lib/mysql --privileged --name=pn1 --net=swarm_mysql pxc
创建第二个节点
docker run -d -p 9001:3306 -e MYSQL_ROOT_PASSWORD=123 -e CLUSTER_NAME=pxc -e XTRABACKUP_PASSWORD=123 -e CLUSTER_JOIN=pn1 -v pnv1:/var/lib/mysql --privileged --name=pn2 --net=swarm_mysql pxc
数据卷相当于给容器挂载一个虚拟的磁盘,管理数据卷的指令如下
docker volume ls 查看
docker volume inspect xxx 查看详情
docker volume create xxx 创建
docker volume rm xx 删除
docker volume prune
pxc节点最后退出的节点最先启动,而且要按主节点启动,docker不能改变容器启动参数,如果从节点后退出,就只能修改启动参数grastate.dat文件,safe_to_bootstrap = 0修改0
pxc传输数据是双向的,强一致性的,pxc集群数量不能太多,太多会影响数据同步速度。实现数据切分需要构建不同的pxc数据集群,称为pxc分片。