由于一台服务器压力太大,希望两台机器分担查询任务:初步想到几种解决方案:
1,ip级别的负载均衡,每次提交的请求由ipvs分发给不同的http服务器。
虽然请求的分流上不涉及到mysql,但是个方案必须得让两台服务器的数据库内容实现主主同步,感觉很麻烦,目前主从同步还没掌握,风险太大!2,在mysql层面上,将sql语句分发给不同的服务器。但是我希望能实现如下的功能:
在提交一个sql select查询语句的时候,能够将之分发给不同的服务器;对于update 和 insert等更新数据库的操作则都留给主服务器,从服务器则通过log-bin来同步主服务器的数据则可!这样就不用还得实现主主同步,风险太大,不敢做过多尝试!希望各位不吝赐教,各方面的意见均会考虑!

解决方案 »

  1.   

    1、mysql的主从复制这么简单了还闲麻烦?
    2、mysql的主从复制就是使用binlog来实现的负载均衡以及自动将语句查询和修改分开发到主从上,可以用mysql-proxy来实现
      

  2.   

    由于一台服务器压力太大,希望两台机器分担查询任务
    ----------------------------------------
    如果主要以读为主,写比较少
    那建立master-slave的方式,进行读、写分离(如果单是2台机器的话,那只有1台读,一台写了,前面的调用也不用动态分配访问了;若是多台读,则可以通过lvs或proxy来给前端程序访问这些多台只读的机器群)另外,这种方式支持水平扩展比较方便(如,写着业务的发展,读瓶颈越来越明显,那很轻易的增加只读服务器来进行扩展,达到提高“读”性能。
      

  3.   


    对,是多台读,一台写!
    除了lvs,mysql本身是否提供机制,满足这种需求呢?就是说,能够分发读到不通的服务器上,但仅仅把写留给主服务器!
      

  4.   

    当下我不太想用lvs的原因是,除了数据库要同步,还有别的一些文件需要同步,而那些文件的同步并不太实时,系统的读的工作量确实也比较大,目前能够分担这写压力也就知足了!