最上层: 业务层
负载均衡: LVS
代理层: DB-PROXY
DB层: DB主库 DB从库
随着DB出现各种问题,对DB层级有了跟多的了解。
第一层认识:业务层直连到DB层
第二层认识:业务层连接到db-proxy,db-proxy负责读写分离;
第三层认识:业务层直连的其实是LVS,LVS负责转发业务层的sql语句。
db-proxy:
为什么需要db-proxy层?因为业务直连sql会出现如下问题:
1,有些sql语句很危险(delete from table),需要避免;
2,直连sql无法做到读写分离;
3,其它对sql语句的控制层可以在这一层实现。
db-proxy弊端:因为要对所有的sql检查,需要的话会重写,所以有些非标准的sql语句支持得不好,sql语句不完备。
业务出现过问题:中文字符存入读取乱码。原因是下面这条语句未在proxy的sql集合中,导致utf8格式被默认的GBK替代:
SET character_set_connection=utf8, character_set_results=utf8, character_set_client=binary
为什么需要LVS?这个需要确认。
但业务因LVS层出现过问题:慢sql会导致业务整体挂掉。