• Amoeba For MySQL读写分离


    Amoeba安装,参考http://hi.baidu.com/itfenqing/item/79fe989838e1e8ad83d2959c

    Amoeba版本为:amoeba-mysql-1.3.1-BETA.zip

    更改amoeba.xml配置文件,配置如下:

    <?xml version="1.0" encoding="gbk"?>

    <!DOCTYPE amoeba:configuration SYSTEM "amoeba.dtd">
    <amoeba:configuration xmlns:amoeba="http://amoeba.meidusa.com/">

        <server>
            <!-- proxy server绑定的端口 -->
            <property name="port">8066</property>
           
            <!-- proxy server绑定的IP -->
            <property name="ipAddress">192.168.1.110</property>
            <!-- proxy server net IO Read thread size -->
            <property name="readThreadPoolSize">20</property>
           
            <!-- proxy server client process thread size -->
            <property name="clientSideThreadPoolSize">30</property>
           
            <!-- mysql server data packet process thread size -->
            <property name="serverSideThreadPoolSize">30</property>
           
            <!-- socket Send and receive BufferSize(unit:K)  -->
            <property name="netBufferSize">128</property>
           
            <!-- Enable/disable TCP_NODELAY (disable/enable Nagle's algorithm). -->
            <property name="tcpNoDelay">true</property>
           
            <!-- 对外验证的用户名 -->
            <property name="user">root</property>
           
            <!-- 对外验证的密码 -->
            <property name="password">password</property>
           
            <!-- query timeout( default: 60 second , TimeUnit:second) -->
            <property name="queryTimeout">60</property>
        </server>
       
        <!--
            每个ConnectionManager都将作为一个线程启动。
            manager负责Connection IO读写/死亡检测
        -->
        <connectionManagerList>
            <connectionManager name="defaultManager" class="com.meidusa.amoeba.net.MultiConnectionManagerWrapper">
                <property name="subManagerClassName">com.meidusa.amoeba.net.AuthingableConnectionManager</property>
               
                <!--
                  default value is avaliable Processors
                <property name="processors">5</property>
                 -->
            </connectionManager>
        </connectionManagerList>
       
        <dbServerList>
            <!--
                一台mysqlServer 需要配置一个pool,
                如果多台 平等的mysql需要进行loadBalance,
                平台已经提供一个具有负载均衡能力的objectPool:com.meidusa.amoeba.mysql.server.MultipleServerPool
                简单的配置是属性加上 virtual="true",该Pool 不允许配置factoryConfig
                或者自己写一个ObjectPool。
            -->
            <dbServer name="server1">
               
                <!-- PoolableObjectFactory实现类 -->
                <factoryConfig class="com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory">
                    <property name="manager">defaultManager</property>
                   
                    <!-- 真实mysql数据库端口 -->
                    <property name="port">3306</property>
                   
                    <!-- 真实mysql数据库IP -->
                    <property name="ipAddress">192.168.1.121</property>
                    <property name="schema">test</property>
                   
                    <!-- 用于登陆mysql的用户名 -->
                    <property name="user">zhang</property>
                   
                    <!-- 用于登陆mysql的密码 -->
                   
                    <property name="password">zhang123</property>
                   
                </factoryConfig>
               
                <!-- ObjectPool实现类 -->
                <poolConfig class="com.meidusa.amoeba.net.poolable.PoolableObjectPool">
                    <property name="maxActive">200</property>
                    <property name="maxIdle">200</property>
                    <property name="minIdle">10</property>
                    <property name="minEvictableIdleTimeMillis">600000</property>
                    <property name="timeBetweenEvictionRunsMillis">600000</property>
                    <property name="testOnBorrow">true</property>
                    <property name="testWhileIdle">true</property>
                </poolConfig>
            </dbServer>
           

            <dbServer name="server2">
               
                <!-- PoolableObjectFactory实现类 -->
                <factoryConfig class="com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory">
                    <property name="manager">defaultManager</property>
                   
                    <!-- 真实mysql数据库端口 -->
                    <property name="port">3306</property>
                   
                    <!-- 真实mysql数据库IP -->
                    <property name="ipAddress">192.168.1.108</property>
                    <property name="schema">test</property>
                   
                    <!-- 用于登陆mysql的用户名 -->
                    <property name="user">zhang</property>
                   
                    <!-- 用于登陆mysql的密码 -->
                   
                    <property name="password">zhang123</property>
                   
                </factoryConfig>
               
                <!-- ObjectPool实现类 -->
                <poolConfig class="com.meidusa.amoeba.net.poolable.PoolableObjectPool">
                    <property name="maxActive">200</property>
                    <property name="maxIdle">200</property>
                    <property name="minIdle">10</property>
                    <property name="minEvictableIdleTimeMillis">600000</property>
                    <property name="timeBetweenEvictionRunsMillis">600000</property>
                    <property name="testOnBorrow">true</property>
                    <property name="testWhileIdle">true</property>
                </poolConfig>
            </dbServer>

           
            <dbServer name="master" virtual="true">
                <poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">
                    <!-- 负载均衡参数 1=ROUNDROBIN , 2=WEIGHTBASED , 3=HA-->
                    <property name="loadbalance">1</property>
                   
                    <!-- 参与该pool负载均衡的poolName列表以逗号分割 -->
                    <property name="poolNames">server1</property>
                </poolConfig>
            </dbServer>

            <dbServer name="slave" virtual="true">
                <poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">
                    <!-- 负载均衡参数 1=ROUNDROBIN , 2=WEIGHTBASED , 3=HA-->
                    <property name="loadbalance">1</property>
                   
                    <!-- 参与该pool负载均衡的poolName列表以逗号分割 -->
                    <property name="poolNames">server1,server2</property>
                </poolConfig>
            </dbServer>
           
        </dbServerList>
       
        <queryRouter class="com.meidusa.amoeba.mysql.parser.MysqlQueryRouter">
            <property name="ruleConfig">${amoeba.home}/conf/rule.xml</property>
            <property name="functionConfig">${amoeba.home}/conf/functionMap.xml</property>
            <property name="ruleFunctionConfig">${amoeba.home}/conf/ruleFunctionMap.xml</property>
            <property name="LRUMapSize">1500</property>
            <property name="defaultPool">master</property>
           
            <property name="writePool">master</property>
            <property name="readPool">slave</property>
            <property name="needParse">true</property>
        </queryRouter>
    </amoeba:configuration>

    本配置文件来源于:http://blog.chinaunix.net/uid-20639775-id-154600.html

    启动amoeba:

    /PATH/amoeba &

    如果出现以下错误:

    The stack size specified is too small, Specify at least 160k
    Error: Could not create the Java Virtual Machine.

    Error: A fatal exception has occurred. Program will exit.

    解决方法:

    打开bin目录下 的amoeba启动文件

    # vim amoeba

    修改58行的Xss参数:

    DEFAULT_OPTS="-server -Xms1024m -Xmx1024m -Xss128k"

    修改为:
    DEFAULT_OPTS="-server -Xms1024m -Xmx1024m -Xss256k"

  • 相关阅读:
    弗尤博客(二)
    弗尤博客(一)
    第一系列完
    C# 关闭子窗体释放子窗体对象问题
    C#设置IE代理
    C# 计算位置居中
    C# 绘图
    From传值
    pictureBox绑定Base64字符串
    C# 绘制圆角矩形
  • 原文地址:https://www.cnblogs.com/itfenqing/p/4429384.html
Copyright © 2020-2023  润新知