linux上使用amoeba实现MySql集群,以及读写分离,主从复制
一、由于是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集群,以及读写分离,主从复制的更多相关文章
- 2.Mysql集群------Mycat读写分离
前言: Mycat: 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务.ACID.可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群 一 ...
- mycat+mysql集群:实现读写分离,分库分表
1.mycat文档:https://github.com/MyCATApache/Mycat-doc 官方网站:http://www.mycat.org.cn/ 2.mycat的优点: 配 ...
- Docker安装MySQL集群【读写分离】
Centos7系统Docker安装 目录 Centos7系统Docker安装 目录 Centos7系统Docker安装 1.下载mysql镜像 2.创建Master实例并启动 参数说明 3.创建Sla ...
- 在Linux上使用Nginx为Solr集群做负载均衡
在Linux上使用Nginx为Solr集群做负载均衡 在Linux上搭建solr集群时需要用到负载均衡,但测试环境下没有F5 Big-IP负载均衡交换机可以用,于是先后试了weblogic的proxy ...
- atlas+mysql主主集群实现读写分离
atlas+mysql主主集群实现读写分离 前言: 目前线上系统数据库采用的是主主架构.其中一台主仅在故障时切换使用,(仅单台服务器对外提供服务,当一台出现问题,切换至另一台).该结构很难支撑较大并 ...
- Mysql数据库优化一:集群(读写分离)之主从服务器的安装与配置
Mysql数据库的集群(读写分离),说白了就是将读操作和写操作分开在不同的服务器上实现,以达到提高效率的目的. 大致原理如下: 数据库中的所有操作都是有日志记录的(前提是要打开这个日志记录功能) 1. ...
- Linux上搭建Hadoop2.6.3集群以及WIN7通过Eclipse开发MapReduce的demo
近期为了分析国内航空旅游业常见安全漏洞,想到了用大数据来分析,其实数据也不大,只是生产项目没有使用Hadoop,因此这里实际使用一次. 先看一下通过hadoop分析后的结果吧,最终通过hadoop分析 ...
- mysql与mycat搭建实现集群与读写分离
数据库性能优化普遍采用集群方式,oracle集群软硬件投入昂贵,今天花了一天时间搭建基于mysql的集群环境. 主要思路 简单说,实现mysql主备复制-->利用mycat实现负载均衡. 比较了 ...
- MySQL集群之MyCat
MySQL集群之MyCat 一.MyCat简介及分析 1.1 MyCat是什么? 1.2 关键特性及应用场景 1.2.1 关键特性 1.2.2 应用场景 1.2.3 MyCat不适合的应用场景 1.3 ...
随机推荐
- 关于padding与margin的区别
代码一:全为padding. <!doctype html><html><head> <meta charset="UTF-8"&g ...
- 不同版本strtotime("2016-09-04")输出不同问题
在php版本改变后,突然发现查询没结果.然后发现是时间不同了,测试以后发现以前版本的php和现在版本的phpstrtotime输出不同.原来是时区配置问题,解决办法:http://zhidao.bai ...
- Learn ZYNQ Programming(1)
GPIO LED AND KEY: part1:gpio leds and gpio btns combination. (include 1~4) part2:use gpio btns inter ...
- BizTalk开发系列(五) 属性字段
在根据消息内容进行路由的时候经常使用的是可分辨字段和属性字段.属性字段可以在各个 BizTalk Server 组件(包括管道和业务流程)中进行访问.属性字段还可用于消息路由.如果需要在上下文(而不是 ...
- Python的时间模块小结(转自:不懂真人)
import datetimeprint time.time() #时间戳 print time.localtime(time.time()) #时间元组 print time.strftime('% ...
- Object对象类
Object对象类是所有类的祖先,他是默认自动继承的 Java为什么要做一个对象类呢?对象类的目的就是归一了类型,他就是把所有的类所有的对象归纳成为 Object类型.因为对象他认为对象应该拥有一些什 ...
- 有趣的BAT
最近某个用到的第三方程序会产生很多日志文件在logs目录中,每天一个log文件,类似 2014-05-07001.log.日积月累这个目录文件数量非常多,手动清除还是比较麻烦的. 由于这个软件不是自己 ...
- Sublime Text3 常用快捷键
1. 更改变量名的几种方法 a.选中变量,ctrl+d 一个个选择 b.选中变量,alt+F3 2.查找打开过的文件:Ctrl+P,然后输入最近的文件名就可以即时预览到文件内容. 3.ctrl+r ...
- UIView添加手势
_shareImage.userInteractionEnabled=YES; UITapGestureRecognizer *imagegesture=[[UITapGestureRecognize ...
- Visual Studio 2012 常用快捷键
1. 强迫智能感知:Ctrl+J:2.强迫智能感知显示参数信息:Ctrl-Shift-空格:3.格式化整个块:Ctrl+K+F4. 检查括号匹配(在左右括号间切换): Ctrl +]5. 选中从光标起 ...