当前位置:首页 > 数据库 > CentOS7下docker mysql PXC集群

CentOS7下docker mysql PXC集群

数据库2年前 (2021-09-15)

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;
    }
}


本站所有文章均可随意转载,转载时请保留原文链接及作者。

本文链接:https://www.vos.cn/db/508.html

相关文章

CentOS7 搭建LNMP

CentOS7 搭建LNMP

使用CentOS 1708,其实就是RHEL 7.4,使用YUM搭建LNMP环境(Linux、Nginx、MariaDB、PHP),全部使用新版组件,比如Nginx 1.12.2、MariaDB 10...

Wing FTP Server与MySQL联动

Wing FTP Server与MySQL联动

使用Wing FTP Server 5.1.2搭建FTP服务器,数据存储方式使用MySQL 8.0.12下载MySQL 8.0登录https://dev.mysql.com/download...

RHEL7.4 MySQL5.7自动备份脚本

RHEL7.4 MySQL5.7自动备份脚本

创建MySQL自动备份脚本,设置定时任务每天凌晨4点开始备份#!/bin/sh DATABASE_Name=zabbix # current running ...

解决Zabbix4 history_uint.ibd数据库过大问题

解决Zabbix4 history_uint.ibd数据库过大问题

Zabbix数据库太大是因为histroy表记录了详细的历史数据,所以需要定期进行清理,这里设置自动清理7天前的数据查看占用容量cd /var/lib/mysql/zabbix ls&nb...

重置windows下mysql root密码

重置windows下mysql root密码

重置windows下mysql root密码先关闭mysql服务net stop mysql跳过权限,窗口不要关闭mysqld --defaults-file="...

将MySQL数据库迁移至SQL Server数据库

将MySQL数据库迁移至SQL Server数据库

使用Microsoft SQL Server Migration Assistant将MySQL5.6的数据库迁移至SQL Server2012数据库前期准备使用SQL Server Manageme...