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
  • 相关阅读:
    Mysql安装
    mysql 密码过期
    svn 合并分支
    idea 分支主干管理
    linux删除数据恢复,extundelete
    linux 转换文件编码
    sina 接口 根据ip获取各个国家和地区
    SQL中char、varchar、nvarchar的区别
    C#中virtual和abstract区别,举例子
    父类和子类的关系、代码例子
  • 原文地址:https://www.cnblogs.com/tingqianzhu/p/8716108.html
Copyright © 2011-2022 走看看