查看mysql的用户:select user,host from mysql.user;
删除用户:drop user rep@'192.168.142.%';
一。ProxySQL的描述:
ProxySQL是 MySQL 的高性能、高可用性、协议感知代理。以下为结合主从复制对ProxySQL读写分离、黑白名单、路由规则等做些基本测试。
1.1 基本介绍:
先简单介绍下ProxySQL及其功能和配置,主要包括:
最基本的读/写分离,且方式有多种;
可定制基于用户、基于schema、基于语句的规则对SQL语句进行路由,规则很灵活;
动态加载配置,即绝大部分的配置可以在线修改,但有少部分参数还是需要重启来生效;
可缓存查询结果。虽然缓存策略比较简陋,但实现了基本的缓存功能;
过滤危险的SQL,增加防火墙等功能;
提供连接池、日志记录、审计日志等功能;
1.2 请求流程
流量从客户端发出 → ProxySQL进行处理转发 → 后端处理 → ProxySQL的前端连接 → 返回客户端的基本流程
二。读写分离:可查询走从库,写入走主库
简单Sharding:ProxySQL的sharding是通过正则匹配来实现的,对于需要拆分SQL以及合并SQL执行结果的不能支持,所以写了简单sharding
连接池管理:常规功能,为了提高SQL执行效率。
多路复用:主要优化点在后端mysql连接的复用,对比smart client,中间层不仅对前端建连也会对后端建连,可自行控制后端连接的复用逻辑。
流量管控:kill连接和kill query;whitelist配置。
高可用:底层mysql,如果从库挂了,自动摘除流量;主库挂了暂不处理。proxysql自身高可用,提供cluster的功能,cluster内部会自行同步元数据以及配置变更信息。
查询缓存:对username+schema+query的key进行缓存,设置ttl过期,不适合写完就查的场景,因为在数据在未过期之前可能是脏数据。
动态配置:大部分的配置可动态变更,先load到runtime,在save到disk,通过cluster的功能同步到其他的节点。
流量镜像:同一份流量可以多出写入,但是并不保证mirror的流量一定成功。
SQL改写:在query rules中配置replace规则,可以对指定的SQL进行改写。
当ProxySQL启动后,将监听两个端口:
(1).admin管理接口,默认端口为6032。该端口用于查看、配置ProxySQL。
(2).接收SQL语句的接口,默认端口为6033,这个接口类似于MySQL的3306端口。
三。ProxySQL的结构:
1. Qurey Processor 用于匹配查询规则并根据规则决定是否缓存查询或者将查询加入黑名单或者重新路由、重写查询或者镜像查询到其他hostgroup。
2.User Auth 为底层后端数据库认证提供了用户凭证。
3.Hostgroup manager – 负责管理发送SQL请求都后端数据库并跟踪SQL请求状态。
4.Connection pool – 负责管理后端数据库连接,连接池中建立的连接被所有的前端应用程序共享。
5.Monitoring – 负责监控后端数据库健康状态主从复制延时并临时下线不正常的数据库实例。
四。核心配置表: