在Haproxy负载均衡模式下,P e rcona8.0可以得到后端Java/PHP应用程序的真实IP。

架构:Java -> Haproxy -> MySQL Slave(对从库做负载均衡读)

在MySQL 8.0里,执行show processlist或者查看慢日志slow.log,只能查看到Haproxy的代理IP,无法得到真实应用的IP地址。

这对于排查线上慢SQL,给研发带来了难度,定位问题很困难。

那么你可以切换到P e rcona8.0。


实现:

1) 需要在Haproxy里设置send-proxy

server 192.168.198.239 192.168.198.239:3306 send-proxy inter 2000 rise 3

fall 3

注:(192.168.198.239为后端MySQL节点)

重启haproxy进程生效。


  1. 需要用P e rcona替换MySQL

设置参数

proxy_protocol_networks = *

注:重启mysqld进程生效


此时,你登录P e rcona 8.0里,执行show processlist或者查看慢日志slow.log,就可以查看到真实的应用程序IP了。

参考:https://docs.percona.com/percona-server/8.0/proxy-protocol-support.html#proxy_protocol_networks