基于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
原文地址:https://www.cnblogs.com/tingqianzhu/p/8716108.html