搞完了发现一直打不开监控页面,反复卸载重装了很多次,最后发现是安全组没开。
我特么的!!!
pxc集群
下载镜像
docker pull percona/percona-xtradb-cluster:5.7.21
重命名
docker tag percona/percona-xtradb-cluster:5.7.21 pxc
创建挂卷
docker volume create --name v1
创建pxc容器
节点1
docker run -d -p 33006:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -v v1:/var/lib/mysql --name=node1 --network=swarm_mysql pxc
节点2
docker run -d -p 33007:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -v v2:/var/lib/mysql --name=node2 --net=swarm_mysql pxc
节点3
docker run -d -p 33008:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -v v3:/var/lib/mysql --name=node3 --net=swarm_mysql pxc
遇到问题
简单粗暴处理
-bash-4.2# netstat -tanlp
kill -9 1240
又遇到问题
又简单粗暴处理
docker ps -a
docker rm node1
haproxy
数据库中新增用户
#指定数据库
use mysql;
#创建用户
create user 'haproxy'@'%' identified by '';
创建一个haproxy.cfg文件
mkdir /haoke/haproxy/haproxy.cfg
如果报错
不是一个文件。。。之类的
就加个 -p
mkdir -p /haoke/haproxy/haproxy.cfg
haproxy文件里面写内容
global
#日志文件,使用rsyslog服务中local5日志设备(/var/log/local5),等级info
log 127.0.0.1 local5 info
#守护进程运行
daemon
defaults
log global
mode http
#日志格式
option httplog
#日志中不记录负载均衡的心跳检测记录
option dontlognull
#连接超时(毫秒)
timeout connect 5000
#客户端超时(毫秒)
timeout client 50000
#服务器超时(毫秒)
timeout server 50000
#监控界面
listen admin_stats
#监控界面的访问的IP和端口
bind 0.0.0.0:8888
#访问协议
mode http
#URI相对地址
stats uri /dbs
#统计报告格式
stats realm Global\ statistics
#登陆帐户信息
stats auth admin:abc123456
#数据库负载均衡
listen proxy-mysql
#访问的IP和端口
bind 0.0.0.0:3307
#网络协议
mode tcp
#负载均衡算法(轮询算法)
#轮询算法:roundrobin
#权重算法:static-rr
#最少连接算法:leastconn
#请求源IP算法:source
balance roundrobin
#日志格式
option tcplog
#在MySQL中创建一个没有权限的haproxy用户,密码为空。Haproxy使用这个账户对MySQL数据库心跳检测
option mysql-check user haproxy
server node1 47.101.163.8:33006 check weight 1 maxconn 2000
server node2 47.101.163.8:33007 check weight 1 maxconn 2000
server node3 47.101.163.8:33008 check weight 1 maxconn 2000
#使用keepalive检测死链
option tcpka
拉取镜像
docker pull haproxy
创建容器
查看历史命令
history
创建容器命令
docker run -it -d -p 8888:8888 -p 4002:3306 -v /haoke/haproxy:/usr/local/etc/haproxy --name haproxy --net=swarm_mysql --privileged haproxy
监控页面展示
http://47.101.163.8:8888/dbs
记住这边现在是异常的,粉色代表异常,卧槽 好像不是粉色,我色盲?
连数据库
idea中连不上数据库
Connection to 47.101.163.8 failed.
[08001] Could not create connection to database server. Attempted reconnect 3 times. Giving up.
但是xshell中是可以的
安全组里面端口是开了的
打算重新删除重建
重建之后现在好了:
然后页面上也正常了
任何原因重启Mysql节点
node2、node3
这两个节点随便造,删除后,按照命令重新建立即可。
node1
这个节点删除后,重新用文章开头命令重建不行。数据不会同步过去,且HaProxy会报错
Layer7 wrong status: #28000Access denied for user ‘haproxy’@‘47.101.163.8’ (using password: NO)
执行这个命令
docker run -d -p 33006:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node2 -v v1:/var/lib/mysql --name=node1 --net=swarm_mysql pxc
成功,数据是同步过去了的。
2023年1月6日19:35:13
还有其他方法:
1、删除v1卷下的grastate.dat文件
2、删除pxc1容器。
3、新建pxc1容器。
4、依次建立其他容器即可。
问题来源见这里:
https://blog.csdn.net/weixin_43555115/article/details/128581268
2023年2月21日13:52:06
navicat 连接haproxy连接不上
分析了一大推,其实要看下
1、docker run 的那个haproxy脚本的端口是什么,如本帖中写的是haproxy配置文件中是3307,但是脚本中是4002:3306,所以导致navicat一直连接不上。
经修改后,脚本改成了33005,配置文件也改成了33005,最终连接成功。