数据库中间件lesmysql.pptx
第十五讲
oracle中间件weblogic
•PaaS
•部署J2EE标准应用包括servlet,JSP,JavaBean
•基于SSL安全认证
•集成扩展JDBC,JMS,JNDI,JTA等服务
•自动化部署
•基于web的分布式监控
•高可用集群:LB,failover
数据库代理的特点
•基于mysqlNET协议
•读写分离
•负载均衡
•连接池
•连接故障转移
•SQL分析,过滤
•安全认证
•对应用完全透明,仅一个入口
mysql-proxy配置
1.tar解压成proxy文件夹
2.cdproxy;mkdiretclog
3.配置etc文件,并设置权限660
4.配置账号,并在mysql里授权(针对eth0的ip授权)
5.启动mysql-proxy
./bin/mysql-proxy--defaults-
file=/home/mysql/proxy/etc/proxy.conf
6.连接测试
mysql-proxy负载均衡
•通过rw-splitting.lua脚本实现
--connectionpool
ifnotproxy.global.config.rwsplitthen
proxy.global.config.rwsplit={
min_idle_connections=4,
max_idle_connections=8,
is_debug=false
}
end
业界方案
•mysql-proxy
性能较差
LUA脚本开发和维护成本高
•amoebaformysql
性能较好
配置相对复杂,无需LUA脚本
•自行研发proxy
amoeba系列
•淘宝工程师陈思儒主导研发
•AmoebaforMySQL
•AmoebaforAladdin
•AmoebaforMongoDB
amoebaformysql
•基于java
•负载均衡
•读写分离
•高可用(读自动failover)
•query过滤
•访问控制
•数据切分,路由访问
•官网
•
amoebaformysql架构
amoebaformysql安装
•安装java1.5以上
•解压
•修改conf文件
dbServer.xml:配置master和slave的信息
amoeba.xml:配置amoeba本身信息
rule.xml:如何分片数据,如何整合返回的数据规则
access_list.conf:前端程序访问控制列表
functionMap.xml:数据库函数如何被amoeba解析
ruleFunctionMap.xml:在rule.xml中自定义hash函数
log4j.xml:配置log4j日志输出信息
amoebaformysql使用
•安装jdk1.5以上
•exportJAVA_HOME=..
•启动amoeba进程:
cdbin;
./launcher
•关闭amoeba进程
./shutdown
•连接到amoeba
使用mysql客户端即可
amoebaformysql缺陷
•不支持事务
•不适合loaddata,大数据量查询(比如一次10W)
•不支持详细分库分表,目前只支持每个切分节点库表必须
一致。
amoebaformysql实战案例
•从库宕机
dbServers.xml:
dbServername=multiPoolvirtual=true
poolConfigclass=com.meidusa.amoeba.server.MultipleServerPool
!--Loadbalancingstrategy:1=ROUNDROBIN,2=WEIGHTBASED,3=HA--
propertyname=loadbalance1/property
!--Separatedbycommas,suchas:server1,server2,server1--
propertyname=poolName