在Haproxy负载均衡模式下,P e rcona8.0可以得到后端Java/PHP应用程序的真实IP。
架构:Java -> Haproxy -> MySQL Slave(对从库做负载均衡读)
在MySQL 8.0里,执行show processlist或者查看慢日志slow.log,只能查看到Haproxy的代理IP,无法得到真实应用的IP地址。
这对于排查线上慢SQL,给研发带来了难度,定位问题很困难。
那么你可以切换到Percona8.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进程生效。
2) 需要用Percona替换MySQL
设置参数
proxy_protocol_networks = *
注:重启mysqld进程生效
此时,你登录Percona 8.0里,执行show processlist或者查看慢日志slow.log,就可以查看到真实的应用程序IP了。
参考: https://docs.percona.com/percona-server/8.0/proxy-protocol-support.html#proxy_protocol_networks