CentOS7下docker mysql PXC集群
PXC全称为Percona Xtradb Cluster,基于Galera插件的MySQL集群,是一种MySQL高可用性和可扩展性的解决方案,特性为
1.同步复制,事务要么在所有节点提交或不提交
2.多主复制,可以在任意节点进行写操作
3.在从服务器上并行应用事件,真正意义上的并行复制
4.节点自动配置。
5.保证数据一致性,不再是异步复制
PXC优点为:
1.当执行一个查询时,在本地节点上执行。因为所有数据都在本地,无需进行远程访问
2.无需集中化管理,可以在任何时间点失去任何节点,集群将照常工作不受任何影响
3.良好的读负载扩展,任意节点都可以查询
PXC缺点为:
1.加入新节点,性能开销大,需要复制完整的数据到新节点
2.不能有效的解决写缩放问题,所有的写操作都将发生在所有节点上
3.有多少个节点就有多少重复的数据
实验环境
pxcdb1 192.168.0.22
pxcdb2 192.168.0.23
pxcdb3 192.168.0.24
校准系统时间
yum install docker-ce docker-ce-cli containerd.io yum install ntp ntpdate -y ntpdate 0.asia.pool.ntp.org hwclock --systohc
系统配置
systemctl enable firewalld && systemctl start firewalld && systemctl status firewalld echo 1 > /proc/sys/net/ipv4/ip_forward firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --zone=public --add-port=4444/tcp --permanent firewall-cmd --zone=public --add-port=4567/tcp --permanent firewall-cmd --zone=public --add-port=4568/tcp --permanent firewall-cmd --reload firewall-cmd --list-all
3306:数据库对外服务的端口
4444:请求增量同步
4567: 组成员之间进行沟通端口
4568: 传输全量同步用的
加速拉取
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io systemctl restart docker
拉取镜像并重命名
docker pull percona/percona-xtradb-cluster:5.7 docker tag percona/percona-xtradb-cluster:5.7 pxc docker rmi percona/percona-xtradb-cluster:5.7
创建本地目录
mkdir -p /home/pxc/mysql /home/pxc/data chmod 777 /home/pxc/mysql /home/pxc/data
启动节点1
docker run -d \ -v /home/pxc/mysql:/var/lib/mysql \ -v /home/pxc/data:/data \ -e MYSQL_ROOT_PASSWORD=Vos123com \ -e XTRABACKUP_PASSWORD=Vos123com \ -e CLUSTER_NAME=PXC \ --privileged --name=pxcdb1 --net=host pxc
启动后使用navicat进行测试连接,连接正常后再启动其他节点
启动节点2
docker run -d \ -v /home/pxc/mysql:/var/lib/mysql \ -v /home/pxc/data:/data \ -e MYSQL_ROOT_PASSWORD=Vos123com \ -e XTRABACKUP_PASSWORD=Vos123com \ -e CLUSTER_NAME=PXC \ -e CLUSTER_JOIN=192.168.0.22 \ --privileged --name=pxcdb2 --net=host pxc
启动节点3
docker run -d \ -v /home/pxc/mysql:/var/lib/mysql \ -v /home/pxc/data:/data \ -e MYSQL_ROOT_PASSWORD=Vos123com \ -e XTRABACKUP_PASSWORD=Vos123com \ -e CLUSTER_NAME=PXC \ -e CLUSTER_JOIN=192.168.0.22 \ --privileged --name=pxcdb3 --net=host pxc
如果重启后PXC容器无法正常启动
vi /home/pxc/mysql/grastate.dat 修改safe_to_bootstrap值为1
使用nginx进行负载均衡
vim /home/docker/nginx/conf/nginx.conf 添加 stream { upstream PXC_cluster { server 192.168.0.22:3306; server 192.168.0.23:3306; server 192.168.0.24:3306; zone tcp_servers 64k; least_conn; } server { listen 3306; proxy_pass PXC_cluster; proxy_connect_timeout 1s; } }
本站所有文章均可随意转载,转载时请保留原文链接及作者。