# wsl2 docker run pxc server + haporxy
```
docker swarm init
docker network create -d overlay --attachable pxc-network
docker run -d -p 9001:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=cluster1 -e XTRABACKUP_PASSWORD=abc123456 -v pnv1:/var/lib/mysql --privileged --name=node1 --net=pxc-network percona/percona-xtradb-cluster
docker run -d -p 9002:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=cluster1 -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -v pnv2:/var/lib/mysql --privileged --name=node2 --net=pxc-network percona/percona-xtradb-cluster
docker run -d -p 9003:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=cluster1 -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -v pnv3:/var/lib/mysql --privileged --name=node3 --net=pxc-network percona/percona-xtradb-cluster
mysql -uroot -pabc123456 -h127.0.0.1 -P9001
mysql -uroot -pabc123456 -h127.0.0.1 -P9002
mysql -uroot -pabc123456 -h127.0.0.1 -P9003
```

隨便執行一條 sql 就可以完成同步了


# 負載平衡
docker run -d -p 9001:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=cluster1 -e XTRABACKUP_PASSWORD=abc123456 -v pnv1:/var/lib/mysql --privileged --name=node1 --net=pxc-network percona/percona-xtradb-cluster
docker run -d -p 9002:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=cluster1 -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -v pnv2:/var/lib/mysql --privileged --name=node2 --net=pxc-network percona/percona-xtradb-cluster
docker run -d -p 9003:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=cluster1 -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -v pnv3:/var/lib/mysql --privileged --name=node3 --net=pxc-network percona/percona-xtradb-cluster
# install haporxy
嘗試用 docker 部屬失敗了
>docker run -d -it -p 4001:3306 -p 4002:8888 --name haproxy -v "/$(pwd)/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro" haproxy
docker run -d -it -p 4001:3388 -p 4002:8888 --name haproxy -v "/$(pwd)/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro" haproxy --privileged --net=pxc-network
>
採用原生安裝 haporxy
>
mysql -uroot -pabc123456 -h127.0.0.1 -P9001
mysql -uroot -pabc123456 -h127.0.0.1 -P9002
mysql -uroot -pabc123456 -h127.0.0.1 -P9003
CREATE USER 'haproxy'@'%' IDENTIFIED BY '';
FLUSH PRIVILEGES;
>
這個目的 是為了 haproxy 去做心跳檢測機制
sudo docker exec -it -u root node1 /bin/bash
# checkconfig
haporxy debug模式
> /usr/sbin/haproxy -d -f /etc/haproxy/haproxy.cfg
>


對節點 9090進行創建表就會自己選擇 mysql
```confing
listen proxy-mysql
bind 0.0.0.0:9090
# 网络协议
mode tcp
# 负载均衡算法(轮询)
balance roundrobin
# 日志格式
option tcplog
# 心跳检测,需要在mysql中创建一个没有权限的haproxy用户,密码为空。Haproxy使用这个账户对MySQL进行心跳检测
option mysql-check user haproxy
server MYSQL_1 172.18.18.247:9001 check weight 1 maxconn 2000
server MYSQL_2 172.18.18.247:9002 check weight 1 maxconn 2000
server MYSQL_3 172.18.18.247:9003 check weight 1 maxconn 2000
# 使用keepalive检测死链
option tcpka
```