zoukankan      html  css  js  c++  java
  • 基于Amoeba+MySQL的读写分离

    项目基于上一篇的mysql主从备份

    资料准备

    1、服务器:192.168.1.52部署安装Amoeba

    2、Amoeba版本:amoeba-mysql-3.0.5-RC-distribution

    3、JDK:jdk-10_windows-x64

    安装JDK

    直接双击安装jdk-10_windows-x64_bin.exe,完成后,配置JAVA_HOME和PATH即可。

    打开cmd命令,执行java -version查看版本,执行where java查看JAVA_HOME和PATH配置是否正确。

    安装Amoeba

    直接解压,然后在conf文件夹,打开dbServers.xml文件,修改内容如下:

    <!-- mysql port -->
                <property name="port">3306</property>
                
                <!-- mysql schema -->
                <property name="schema">ms_test</property>
                
                <!-- mysql user -->
                <property name="user">amoebaUser</property>
                
                <property name="password">123456</property>

    这里指定数据库名称和端口,以及访问数据库使用的账户和密码,这里的账户要特别注意,必须是主从允许远程访问的用户,不是主从的本地用户。

    配置主从库:

    <dbServer name="master"  parent="abstractServer">
            <factoryConfig>
                <!-- mysql ip -->
                <property name="ipAddress">192.168.0.30</property>
            </factoryConfig>
        </dbServer>
        
        <dbServer name="slave1"  parent="abstractServer">
            <factoryConfig>
                <!-- mysql ip -->
                <property name="ipAddress">192.168.1.52</property>
            </factoryConfig>
        </dbServer>
        
        <dbServer name="virtualSlave" virtual="true">
            <poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">
                <!-- Load balancing strategy: 1=ROUNDROBIN , 2=WEIGHTBASED , 3=HA-->
                <property name="loadbalance">1</property>
                
                <!-- Separated by commas,such as: server1,server2,server1 -->
                <property name="poolNames">slave1</property>
            </poolConfig>
        </dbServer>

    打开amoeba.xml文件,修改内容如下:

    <!-- service class must implements com.meidusa.amoeba.service.Service -->
            <service name="Amoeba for Mysql" class="com.meidusa.amoeba.mysql.server.MySQLService">
                <!-- port -->
                <property name="port">8066</property>
                
                <!-- bind ipAddress -->
                <property name="ipAddress">192.168.1.52</property>
    
                
                <property name="connectionFactory">
                    <bean class="com.meidusa.amoeba.mysql.net.MysqlClientConnectionFactory">
                        <property name="sendBufferSize">128</property>
                        <property name="receiveBufferSize">64</property>
                    </bean>
                </property>
                
                <property name="authenticateProvider">
                    <bean class="com.meidusa.amoeba.mysql.server.MysqlClientAuthenticator">
                        
                        <property name="user">root</property>
                        
                        <property name="password">123456</property>
                        
                        <property name="filter">
                            <bean class="com.meidusa.toolkit.net.authenticate.server.IPAccessController">
                                <property name="ipFile">${amoeba.home}/conf/access_list.conf</property>
                            </bean>
                        </property>
                    </bean>
                </property>
                
            </service>

    设定IP和端口,以及用户和密码,这是对外代理使用的,客户端程序只需要连接这个IP和端口,使用这个的用户和密码即可。

    配置路由:

    <queryRouter class="com.meidusa.amoeba.mysql.parser.MysqlQueryRouter">
            <property name="ruleLoader">
                <bean class="com.meidusa.amoeba.route.TableRuleFileLoader">
                    <property name="ruleFile">${amoeba.home}/conf/rule.xml</property>
                    <property name="functionFile">${amoeba.home}/conf/ruleFunctionMap.xml</property>
                </bean>
            </property>
            <property name="sqlFunctionFile">${amoeba.home}/conf/functionMap.xml</property>
            <property name="LRUMapSize">1500</property>
            <property name="defaultPool">master</property>
            
    
            <property name="writePool">master</property>
            <property name="readPool">virtualSlave</property>
    
            <property name="needParse">true</property>
        </queryRouter>

    配置完成,运行bin目录下的launcher.bat即可。

    如果提示The stack size specified is too small, Specify at least....

    则需要修改amoeba-mysql-3.0.5-RC目录下的jvm.properties

    JVM_OPTIONS="-server -Xms1024m -Xmx1024m -Xss256k -XX:PermSize=16m -XX:MaxPermSize=96m"

    并且修改bin目录下lanucher.bat里面的:

    set DEFAULT_OPTS=-server -Xms256m -Xmx1024m -Xss256k
  • 相关阅读:
    ajax 函数外调用
    a连接 h5点击有背景阴影
    禁止微信上下滑动
    ios 倒计时 不动 例如 2017-09-06 00:24:35
    6-10位 a-z || A-Z ||0-9 正则
    正则 不能输入中文
    正整数正则 (选择商品数量)
    手机号正则
    input输入框只能输入数字而且开头不能为零
    do...while02
  • 原文地址:https://www.cnblogs.com/tingqianzhu/p/8716108.html
Copyright © 2011-2022 走看看