专栏首页python3部署Amoeba3.X实现Mysql读写

部署Amoeba3.X实现Mysql读写

项目介绍:

   Amoeba for Mysql软件,致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQL的时候充当SQL路由功能,专注于分布式数据库代理层(Database Proxy)开发。座落与Client、DB之间,对客户端透明。具有负载均衡、高可用性、SQL过滤、读写分离、可路由相关的到目标数据库、可并发请求多台数据库合并结果。

实验环境:

Master:192.168.0.1

Slave1:192.168.0.2

Slave2:192.168.0.3

Amoeba:192.168.0.4

均在Amoeba机器上操作

安装JDK,Amoeba for mysq是基于JAVA环境开发的,所以系统要支持JAVA

wget http://download.oracle.com/otn/java/jdk/6u45-b06/jdk-6u45-linux-x64-rpm.bin
chmod +x jdk-6u45-linux-x64-rpm.bin
./jdk-6u45-linux-x64-rpm.bin

配置JAVA环境

JKD默认安装到/usr/java/下

创建软链接

ln -s /usr/java/jdk1.6.0_45 /usr/java/jdk

编辑~/.bash_profile,添加以下内容

JAVA_HOME=/usr/java/jdk
export JAVA_HOME
export CLASSPATH=.:JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
export PATH

安装Amoeba for mysql

wget http://jaist.dl.sourceforge.net/project/amoeba/Amoeba%20for%20mysql/3.x/amoeba-mysql-3.0.5-RC-distribution.zip
unzip  amoeba-mysql-3.0.5-RC-distribution.zip
mv amoeba-mysql-3.0.5-RC /usr/local/amoeba

Amoeba到此就安装完毕,接下来就是配置读写分离,因为Amoeba3.x较2.x有较大改动,所以贴下我的配置项。

首先,设置conf/dbServer.xml中连接的库名及帐号密码

<dbServer name="abstractServer" abstractive="true">
- - - - - 省略 - - - - - -               
            <!-- mysql port -->
            <property name="port">3306</property>
                                                                                                                                                                                                                                                                                                                           
            <!-- mysql schema -->
            <property name="schema">数据库名</property>
                                                                                                                                                                                                                                                                                                                           
            <!-- mysql user -->
            <property name="user">账号</property>
                                                                                                                                                                                                                                                                                                                           
            <property name="password">密码</property>
- - - - - - - - - 省略 - - - - - - -
    </dbServer>

    设置数据库池,其中Slave1,Slave2作轮询

<dbServer name="Master"  parent="abstractServer">
        <factoryConfig>
            <!-- mysql ip -->
            <property name="ipAddress">192.168.0.1</property>
        </factoryConfig>
    </dbServer>
                                                                                                                                                                                                                                                                                                             
    <dbServer name="Slave1"  parent="abstractServer">
        <factoryConfig>
            <!-- mysql ip -->
            <property name="ipAddress">192.168.0.2</property>
        </factoryConfig>
    </dbServer>
    <dbServer name="Slave2"  parent="abstractServer">
        <factoryConfig>
            <!-- mysql ip -->
            <property name="ipAddress">192.168.0.3</property>
        </factoryConfig>
    </dbServer>
    <dbServer name="VirtualPool" 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,Slave2</property>
        </poolConfig>
    </dbServer>

接下来配置amoeba.xml

<property name="authenticateProvider">
- - - - - - 省略 - - -                   
                    <property name="user">账号</property>
                                                                                                                                                                                                                                                                                                                
                    <property name="password">密码</property>
                                                                                                                                                                                                                                                                                                                
                    <property name="filter">
       - - - - - - 省略 - - -
            </property>
<queryRouter class="com.meidusa.amoeba.mysql.parser.MysqlQueryRouter">
    - - - - - - 省略 - - - - -   
        <property name="defaultPool">Master</property>
        <property name="writePool">Master</property>
        <property name="readPool">VirtualPool</property>
    - - - - - - 省略 - - - - -
    </queryRouter>

读写分离到此配置完成,接着启动amoebe

/usr/local/amoeba2/bin/launcher

在部署Amoeba时,注意下

1:防火墙要开放8066端口

2:给bin目录执行权限:chmod +x bin/*

优化性能:

1:在amoeba目录下有个JVM的配置文件,设置其中的JVM_OPTIONS="-server -Xms1024m -Xmx1024m -Xss256k -XX:PermSize=16m -XX:MaxPermSize=96m"可提升JVM性能,具体大小看各位需求;

2:多线程配置:runtime元素;

3:网络相关(缓冲区等):connectionFactory

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • c3p0的3种配置方式

    1.通过setters方法一个个地设置各个配置项 2.类路径下提供一个c3p0.properties文件 3.类路径下提供一个c3p0-config.xml文件

    py3study
  • Spring2 Hibernate3 J

    <beans xmlns="http://www.springframework.org/schema/beans"

    py3study
  • 初识数据库

    是为管理数据库而设计的电脑软件系统,一般具有存储、截取、安全保障、备份等基础功能。

    py3study
  • JDBC连接池

    当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器。

    羊羽shine
  • MySQL连接池

    Linux
  • Mysql读写分离方案-Amoeba环境部署记录

    Mysql的读写分离可以使用MySQL Proxy,也可以使用Amoeba。Amoeba(变形虫)项目是一个类似MySQL Proxy的分布式数据库中间代理层软...

    洗尽了浮华
  • 用NumPy写深度模型,用Julia可微分编程写函数,这是WAIC开发者日

    WAIC 世界人工智能大会已于近日在上海开幕。在昨天由机器之心承办的开发者日主单元上,阿里技术副总裁贾扬清、亚马逊机器学习副总裁 Alex Smola、百度 A...

    机器之心
  • Ubnt UniFi 产品开箱

    家里的无线网络覆盖一直有些问题,虽然说已经在家里部署了两个无线AP,但是还是一些小问题,首先信号覆盖还是有一些死角,比如说,卫生间,一进卫生间,信号强度瞬间掉到...

    Allen Cheng
  • 百度搜索引擎指令大全

    把搜索词放在双引号中,代表完全匹配搜索,也就是说搜索结果返回的页面包含双引号中出现的所有的词,连顺序也必须完全匹配。百度和Google 都支持这个指令。

    V站CEO-西顾
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)

    发布于 2018-09-02 14:27 更新于 2018-09...

    walterlv

扫码关注云+社区

领取腾讯云代金券