一、由于是MySql集群,所以就不可能只有一个MySql,需要多个MySql,具体安装步骤,可以参考http://www.cnblogs.com/ywzq/p/4882140.html这个地址进行安装配置和启动。

  二、现在MySql有了,开始安装Ameoba

    1.下载文件:amoeba-mysql-0.32.tar.gz

    2.创建文件amoeba

    mkdir amoeba

    cd amoeba

    3.解压文件(由于amoeba的作者打包时没太注意,所以你要先件个文件)

      tar amoeba-mysql-0.32.tar.gz

      cd conf/

        配置前端访问接口<server></server>如:     

            <server>
              <property name="port">8066</property>

              <property name="ipAddress">101.201.140.214</property>

              <property name="readThreadPoolSize">500</property>

              <property name="clientSideThreadPoolSize">500</property>

              <property name="serverSideThreadPoolSize">500</property>

              <property name="netBufferSize">200</property>

              <property name="tcpNoDelay">true</property>

              <property name="user">root</property>

              <property name="password">root</property>
            </server>

        配置监听:

            

            <connectionManagerList>
              <connectionManager name="defaultManager" class="com.meidusa.amoeba.net.AuthingableConnectionManager"/>
            </connectionManagerList>

     搭建主从复制,读写分离的架构

        配置多个数据<dbServerList></dbServerList>

            配置Master(主)MySql数据库:     

            <dbServer name="master">
              <factoryConfig class="com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory">

              <property name="manager">defaultManager</property>

              <property name="port">4308</property>

              <property name="ipAddress">101.201.140.214</property>

              <property name="schema">test</property>

              <property name="user">root</property>

              <property name="password">root4308</property>

             </factoryConfig>

                <poolConfig class="com.meidusa.amoeba.net.poolable.PoolableObjectPool">
                <property name="maxActive">500</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>

            配置Slave(从>1)

            <dbServer name="slave1">
              <factoryConfig class="com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory">
                <property name="manager">defaultManager</property>

                <property name="port">4306</property>

                <property name="ipAddress">101.201.140.214</property>
               <property name="schema">test</property>

                <property name="user">root</property>

                <property name="password">root4306</property>

              </factoryConfig>
                <poolConfig class="com.meidusa.amoeba.net.poolable.PoolableObjectPool">
                <property name="maxActive">500</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>

            配置Slave(从>1)

            <dbServer name="slave2">

              <factoryConfig class="com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory">
                <property name="manager">defaultManager</property>

                <property name="port">4307</property>

                <property name="ipAddress">101.201.140.214</property>

                <property name="schema">test</property>

                <property name="user">root</property>

                <property name="password">root4307</property>

              </factoryConfig>
              <poolConfig class="com.meidusa.amoeba.net.poolable.PoolableObjectPool">
                <property name="maxActive">500</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>

            配置写入MySql

            <dbServer name="virtualSlave" virtual="true">
              <poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">
                <!-- 1=ROUNDROBIN , 2=WEIGHTBASED -->
                <property name="loadbalance">1</property>
                <property name="poolNames">slave1,slave2</property>
              </poolConfig>
            </dbServer>

            分配读写使用的数据库  

            <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">virtualSlave</property>
              <property name="needParse">true</property>
            </queryRouter>

            修改权限文件

          <amoeba:rule xmlns:amoeba="http://amoeba.meidusa.com/"> 

            <tableRule name="test_horiz" schema="test" defaultPools="master">

              <rule name="rule1">
                <parameters>ID</parameters>
                <expression><![CDATA[ ID <= 1000000]]></expression>
                <defaultPools>master</defaultPools>
                <readPools>slave1</readPools>
                <writePools>master</writePools>
              </rule>

              <rule name="rule2">    

                ==========

                <expression><![CDATA[ ID between 1000001 and 2000000 ]]></expression>

                <defaultPools>master</defaultPools>

                <writePools>master2</writePools>

                <readPools>slave2</readPools>

              </rule>

              <rule name="rule3">

                ==========

                <expression><![CDATA[ ID > 20000000 ]]></expression>

                <defaultPools>master</defaultPools>

              </rule>  

            </tableRule>

          

            <tableRule name="master" schema="test" defaultPools="master"/>
            <tableRule name="slave1" schema="test" defaultPools="slave1"/>
            <tableRule name="slave2" schema="test" defaultPools="slave1"/>
            <tableRule name="master" schema="t" defaultPools="master"/>

          </amoeba:rule>

  三.主从复制

    1、修改MySql配置文件my.cnf

      mast(主库)配置文件:

        server-id = 4308
        log-bin = mysql-bin
        log-bin-index = mysql-bin.index
        binlog-do-db= ng_base
        binlog-do-db= ng_push
        binlog-ignore-db = test
        binlog-ignore-db = mysql
        binlog-ignore-db = information_schema

      slave(从库1)配置文件:

        server-id = 4307

        log-bin = mysql-bin
        log-bin-index = mysql-bin.index
        relay-log = slave-relay-bin
        relay-log-index = slave-relay-bin.index
        sync_master_info = 1
        sync_relay_log = 1
        sync_relay_log_info = 1

  二、配置主从复制  

    1、主库操作

      授权给从数据库服务器192.168.10.131
      mysql> GRANT REPLICATION slave ON *.* to 'rep1'@'192.168.10.131' identified by ‘root4308’;

      查询主数据库状态
      Mysql> show master status;

        | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
        +------------------+----------+--------------+------------------+
        | mysql-bin.000005 | 261 | | |

 

    -- SLAVE STOP;

    2、 从库操作

    change master to
    master_host='101.201.140.214',
    master_user='slave',
    master_password='root4308',
    master_log_file='binlog.000005',
    master_log_pos=107;

    正确执行后启动Slave同步进程

    SLAVE START;

    可以使用show slave status\G检查

          

linux上使用amoeba实现MySql集群,以及读写分离,主从复制的更多相关文章

  1. 2.Mysql集群------Mycat读写分离

    前言: Mycat: 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务.ACID.可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群 一 ...

  2. mycat+mysql集群:实现读写分离,分库分表

    1.mycat文档:https://github.com/MyCATApache/Mycat-doc       官方网站:http://www.mycat.org.cn/ 2.mycat的优点: 配 ...

  3. Docker安装MySQL集群【读写分离】

    Centos7系统Docker安装 目录 Centos7系统Docker安装 目录 Centos7系统Docker安装 1.下载mysql镜像 2.创建Master实例并启动 参数说明 3.创建Sla ...

  4. 在Linux上使用Nginx为Solr集群做负载均衡

    在Linux上使用Nginx为Solr集群做负载均衡 在Linux上搭建solr集群时需要用到负载均衡,但测试环境下没有F5 Big-IP负载均衡交换机可以用,于是先后试了weblogic的proxy ...

  5. atlas+mysql主主集群实现读写分离

     atlas+mysql主主集群实现读写分离 前言: 目前线上系统数据库采用的是主主架构.其中一台主仅在故障时切换使用,(仅单台服务器对外提供服务,当一台出现问题,切换至另一台).该结构很难支撑较大并 ...

  6. Mysql数据库优化一:集群(读写分离)之主从服务器的安装与配置

    Mysql数据库的集群(读写分离),说白了就是将读操作和写操作分开在不同的服务器上实现,以达到提高效率的目的. 大致原理如下: 数据库中的所有操作都是有日志记录的(前提是要打开这个日志记录功能) 1. ...

  7. Linux上搭建Hadoop2.6.3集群以及WIN7通过Eclipse开发MapReduce的demo

    近期为了分析国内航空旅游业常见安全漏洞,想到了用大数据来分析,其实数据也不大,只是生产项目没有使用Hadoop,因此这里实际使用一次. 先看一下通过hadoop分析后的结果吧,最终通过hadoop分析 ...

  8. mysql与mycat搭建实现集群与读写分离

    数据库性能优化普遍采用集群方式,oracle集群软硬件投入昂贵,今天花了一天时间搭建基于mysql的集群环境. 主要思路 简单说,实现mysql主备复制-->利用mycat实现负载均衡. 比较了 ...

  9. MySQL集群之MyCat

    MySQL集群之MyCat 一.MyCat简介及分析 1.1 MyCat是什么? 1.2 关键特性及应用场景 1.2.1 关键特性 1.2.2 应用场景 1.2.3 MyCat不适合的应用场景 1.3 ...

随机推荐

  1. zk编程语言: 如何改变datebox框值的大小及高度

    <?page title="" contentType="text/html;charset=UTF-8"?> <zk > <st ...

  2. Xtrabackup2.3.4安装

    安装过程种有很多报错,这里我就不一一解释. wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.3.5/bin ...

  3. c++ basic 整理2

    ​//拷贝函数 //拷贝构造函数是一种特殊的构造函数,函数的名称必须和类名称一致,它必须的一个参数是本类型的一个引用变量. //不显式指定拷贝函数时,编译器会生成默认拷贝函数. //使用默认拷贝函数 ...

  4. 使用方法:mail_sendmail($params)

    使用方法:mail_sendmail($params) 类构造函数,$params是一个关联数组,你可以设定sendmail的参数,目前只有sendmail_path是有效的,用来设置sendmail ...

  5. ServletConfig对象和它在开发中的应用场

    package cn.itcast; import java.io.IOException; import java.io.PrintWriter; import java.util.Enumerat ...

  6. YII2 blockui

    https://packagist.org/packages/ayrozjlc/yii2-blockui

  7. Task示例,多线程

    class Program { static void Main(string[] args) { Run(); } public static async void Run() { var task ...

  8. 3D touch的 使用心得

    一.设置图标touch 快捷进入 1.静态标签 静态标签是我们在项目的配置plist文件中配置的标签,在用户安装程序后就可以使用,并且排序会在动态标签的前面. 我们先来看静态标签的配置: 首先,在in ...

  9. 【Android测试】【第十八节】Espresso——环境搭建

    ◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/5604642.html 前言 首先还是老规矩,看看官方文档吧 ...

  10. node crypto md5加密,并解决中文不相同的问题

    在用crypto模块时碰到了加密中文不相同的问题,多谢群里面@蚂蚁指定 1:解决中文不同的问题 function md5Pay(str) { str = (new Buffer(str)).toStr ...