1 安装PXC镜像
docker pull percona/percona-xtradb-cluster:5.7.21
2 为PXC镜像改名
docker tag percona/percona-xtradb-cluster:5.7.21 pxc
3 创建net1网段
docker network create --subnet=172.18.0.0/16 net1
4 创建5个数据卷
docker volume create --name v1
docker volume create --name v2
docker volume create --name v3
docker volume create --name v4
docker volume create --name v5
5 创建备份数据卷(用于热备份数据)
docker volume create --name backup
6 创建5节点的PXC集群
注意,每个MySQL容器创建之后,因为要执行PXC的初始化和加入集群等工作,耐心等待1分钟左右再用客户端连接MySQL。另外,必须第1个MySQL节点启动成功,用MySQL客户端能连接上之后,再去创建其他MySQL节点。
创建第1个MySQL节点
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -v v1:/var/lib/mysql -v backup:/data --privileged --name=node1 --net=net1 --ip 172.18.0.2 pxc
#创建第2个MySQL节点
docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -v v2:/var/lib/mysql -v backup:/data --privileged --name=node2 --net=net1 --ip 172.18.0.3 pxc
#创建第3个MySQL节点
docker run -d -p 3308:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -v v3:/var/lib/mysql --privileged --name=node3 --net=net1 --ip 172.18.0.4 pxc
#创建第4个MySQL节点
docker run -d -p 3309:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -v v4:/var/lib/mysql --privileged --name=node4 --net=net1 --ip 172.18.0.5 pxc
#创建第5个MySQL节点
docker run -d -p 3310:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -v v5:/var/lib/mysql -v backup:/data --privileged --name=node5 --net=net1 --ip 172.18.0.6 pxc
brew install haproxy
vim haproxy/haproxy.cfg
global
daemon #以后台形式运行harpoxy
########默认配置############
defaults
mode tcp #设置HAProxy默认的工作模式,有tcp,http,health三种
timeout connect 5000ms #连接超时
timeout client 30000ms #客户端超时
timeout server 30000ms #服务器超时
timeout check 2000 #心跳检测超时
log 127.0.0.1 local0 err
########统计页面配置########
listen test1 #这里是配置负载均衡,test1是名字,可以任意
bind 0.0.0.0:9000 #这里是监听的IP地址和端口,端口号可以在0-65535之间,要避>免端口冲突
mode tcp #连接的协议,这里是tcp协议
option mysql-check user root
server s1 127.0.0.1:3306 #负载的机器
server s2 127.0.0.1:3307
server s3 127.0.0.1:3308
haproxy -f ~/haproxy/haproxy.cfg -d
spring:
application:
name: cloud-payment-service
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:9000/user?useUnicode=true&characterEncoding=utf-8&useSSL=false
username: root
password: abc123456
druid:
test-on-borrow: false
test-while-idle: true
test-on-return: false
validation-query: select 1