mysql-proxy配置起来太复杂了。
想用amoeba,查了下,说是暂时不支持事务、DDL语句目前只会分配给默认的数据库执行,Amoeba不支持跨库join和排序等Insert语句必须指定表的列名,Amoeba需要更严格的SQL语句规范,From 关键字后面如果不是子查询,一律不能带括号”()”;如果的表中字段名与关键字或者函数名一样需要带上字符` (比如:mytable.`order`)。如果使用的是hibernate会出现这样的问题吗?大家读写分离都用得什么做的?

解决方案 »

  1.   

    使用备份数据库啊。master-slave。
    如果写的话,直接访问master。如果是读的话,就读取slave的数据。可以设置多个slave,多个slave可以使用负载平衡。
      

  2.   

    读写分离,就是建立在主从基础上的。想知道amoeba的一些实际使用情况,包括jvm的配置
      

  3.   

    mysql-proxy配置起来太复杂了。 其实很简单。一般的读写分离都是从程序来实现,因为程序知道业务逻辑之间的写和读,是应该分开,还是应该在一起。
    proxy只能是简单的分发SQL语句,发现是SELECT的,就分发到读机器上。发现是INSERT等,就分发到写机器上,但是存在这样业务
    insert into tbname....
    select .....tbname....
    第二个SELECT是检查第一个insert是否成功的,这时候proxy分发时,会到读机器查询,由于主从复制之间的延迟问题,可能造成虽然写入了,但是从机器没有实时得到复制数据,业务逻辑认为写入失败。类似这样的业务逻辑,proxy无能为力了,但是如果用程序处理,就很简单了,2个都去写机器取数据,就可以保证是正确的。
      

  4.   


    amoeba的我已经配好了。
    mysql-proxy的lua太难配置了