在线架构(mysql + linux +java)如下:
1主(读写)----2从(只读)这个架构数据完成 ,在应用前代码是不关心ip 的 。
但现在是3个ip了, 开发人员 提出问题如下  java 代码里的 更新语句(update insert delete)
直接被转向到 主服务器 ;select 语句能否不经过处理可以根据连接数情况直接
均衡分布到 3台机器上;? 当下最主要的是如何在java里不需要
手工到处指定ip地址  (这个架构用之前只有一个ip地址所有不需要制定数据库链接)首先更新语句(update insert delete)和select能否通过某种方式自动分离,不需要代码制定;
之后select能否做到均衡,如何做到?  

解决方案 »

  1.   

    MySQL Proxy可以做到。求MySQL Proxy的WINDOWS下安装说明。
      

  2.   

    用MySQL-Proxy实现读写分离作者 Gavin Terrill 译者 郭晓刚 发布于 2007年10月17日 下午1时6分社区
        架构 
    主题
        性能和可伸缩性 , 
        集群与缓存 
    标签
        LAMP , 
        MySQL 分享 Share |MySQL-Proxy, 6月份发布的MySQL-Proxy是处在你的MySQL数据库客户和服务端之间的程序,它还支持嵌入性脚本语言Lua。这个代理可以用来分析、监控和变换(transform)通信数据,它支持非常广泛的使用场景:    * 负载平衡和故障转移处理
        * 查询分析和日志
        * SQL宏(SQL macros)
        * 查询重写(query rewriting)
        * 执行shell命令MySQL Proxy更强大的一项功能是实现“读写分离(Read/Write Splitting)”。基本的原理是让主数据库处理事务性查询,而从数据库处理SELECT查询。数据库复制被用来把事务性查询导致的变更同步到集群中的从数据库。Jan Kneschke在《MySQL Proxy learns R/W Splitting》中介绍了这种技巧,他还谈到了连接池的问题:    为了实现读写分离我们需要连接池。我们仅在已打开了到一个后端的一条经过认证的连接的情况下,才切换到该后端。MySQL协议首先进行握手。当进入到查询/返回结果的阶段再认证新连接就太晚了。我们必须保证拥有足够的打开的连接才能保持运作正常。 实现读写分离的LUA脚本是简单明了的:  -- 读写分离
      --
      -
      --http://www.infoq.com/cn/news/2007/10/mysqlproxyrwsplitting
      

  3.   


    Mysql-Proxy安装配置      作者:Lightning@小宝 发布时间:July 27, 2009 分类:MySQL备份&优化&架构 作者:老王MySQL-Proxy的二进制版本的安装相对简单,无需多言,下面介绍的是源代码安装:安装pkg-config:tar zxvf pkg-config-0.23.tar.gz
    cd pkg-config-0.23
    ./configure
    make
    make install确保PKG_CONFIG_PATH环境变量包含了相关的pkg-config配置文件路径:export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig安装libevent:tar zxvf libevent-1.4.10-stable.tar.gz
    cd libevent-1.4.10-stable
    ./configure
    make
    make install安装glib:tar zxvf glib-2.20.0.tar.gz
    cd glib-2.20.0
    ./configure
    make
    make install安装lua:tar zxvf lua-5.1.4.tar.gz
    cd lua-5.1.4如果你的服务器是64位的,这时要调整一下Makefile:vi src/Makefile,在CFLAGS里加上-fPIC,否则会出错:/usr/bin/ld: /usr/local/lib/liblua.a(lapi.o):
    relocation R_X86_64_32 against `luaO_nilobject_' can not be used when making a shared object;
    recompile with -fPIC
    /usr/local/lib/liblua.a: could not read symbols: Bad value接下来不用执行常见的configure,直接make:make linux
    make install安装pkg-config配置文件,以便编译mysql-proxy时能找到lua:cp etc/lua.pc /usr/local/lib/pkgconfig/lua5.1.pc如果没有执行此步骤的话,在后面编译安装mysql-proxy的时候,会得到类似下面的错误信息:Package lua5.1 was not found in the pkg-config search path.
    Perhaps you should add the directory containing `lua5.1.pc'
    to the PKG_CONFIG_PATH environment variable
    No package 'lua5.1' found安装mysql:这里介绍的是完整安装mysql,其实你只要安装mysql开发包即可。tar zxvf mysql-5.1.33.tar.gz
    cd tar zxvf mysql-5.1.33
    ./configure
    make
    make install
    cp support-files/mysql.server /etc/init.d/mysql
    chown +x /etc/init.d/mysql
    cp support-files/my-[small|medium|large|huge|innodb-heavy-4G].cnf /etc/my.cnf如果my.cnf里有skip-federated选项,就注释它,否则安装数据库的时候会出现类似下面的错误:
    [ERROR] /usr/local/libexec/mysqld: unknown option '--skip-federated'/usr/local/bin/mysql_install_db --user=mysql
    /usr/local/bin/mysqld_safe --user=mysql &保证系统能找到mysql_config,后面编译mysql-proxy会用到它:export PATH=$PATH:/usr/local/bin还要保证系统能找到mysql库文件:vi /etc/ld.so.conf 加入/usr/local/lib目录执行:/sbin/ldconfig /etc/ld.so.conf安装mysql-proxy:tar zxvf mysql-proxy-0.7.0.tar.gz
    cd mysql-proxy-0.7.0
    ./configure
    make
    make install按照官方介绍做好启动脚本/etc/init.d/mysql-proxy和参数脚本/etc/sysconfig/mysql-proxy,并设置:chmod +x /etc/init.d/mysql-proxy
    chkconfig --add mysql-proxy搞定了,测试一下:/usr/local/sbin/mysql-proxy -V。官方论坛里有很多讨论,可以参阅。注意:你的操作系统式32位还是64位我在32位服务器上使用MySQL-Proxy,感觉非常不稳定,时不时出错:Lost connection to server during query,MySQL server has gone away此时,MySQL-Proxy进程往往会挂掉,同时也会报类似下面的错误:network-mysqld-proxy.c.3318: COM_(0x03), packet 4 should not be (NULL|EOF), got: fffffffe换到64位服务器后,稳定性大大提高。所以如果想在产品环境上使用MySQL-Proxy,强烈建议使用64位。至于MySQL-Proxy版本的选择,最好各个版本的MySQL-Proxy都装上试试看,不一定是版本越高越稳定。如果把MySQL-Proxy用于读写分离目的的话,以我自己的测试结果来看,目前最稳定的版本是64位服务器下的0.6.X版本(和0.7.X比较),当然,这个结论不一定适用于你,最好自己实际动手测试看看。补充:官方网站好像只保留MySQL-Proxy的最新版本,如果需要历史版本的话,可以去这里下载:http://mirrors.dotsrc.org/mysql/Downloads/MySQL-Proxy/标签: MySQL, mysql-proxy 分类: MySQL备份&优化&架构
    http://www.xinqdian.com/index.php/archives/53/