001.Amoeba读写分离部署
一 Amoeba简介
二 前期规划
1.1 主机规划
1.2 虚拟IP规划
1.3 用户列表
1.4 整体架构
三 MySQL-MMM基础部署
四 基础JDK安装
4.1 JDK下载
4.2 JDK安装及配置
1 [root@Amoeba tmp]# rpm -ivh jdk-8u144-linux-i586.rpm2 [root@Amoeba ~]# vi /etc/profile3 #set java environment4 JAVA_HOME=/usr/java/jdk1.8.0_144/5 JRE_HOME=/usr/java/jdk1.8.0_144/jre/6 CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib7 PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin8 export JAVA_HOME JRE_HOME CLASS_PATH PATH9 [root@Amoeba ~]# source /etc/profile10 [root@Amoeba ~]# java -version #验证是否安装成功
五 Amoeba安装
5.1 Amoeba下载
1 [root@Amoeba tmp]# wget https://nchc.dl.sourceforge.net/project/amoeba/Amoeba%20for%20mysql/3.x/amoeba-mysql-3.0.5-RC-distribution.zip2 [root@Amoeba tmp]# unzip amoeba-mysql-3.0.5-RC-distribution.zip -d /usr/local/3 [root@Amoeba ~]# mv /usr/local/amoeba-mysql-3.0.5-RC/ /usr/local/amoeba
5.2 Amoeba-dbServers配置
- dbServers.xml:读写分离配置文件
- access_list.conf:IP访问列表控制配置文件
- Amoeba的配置文件路径:/usr/local/amoeba/conf
1 [root@Amoeba ~]# vi /usr/local/amoeba/conf/dbServers.xml2 ……3 <property name="port">3306</property> #设置Amoeba要连接的mysql数据库的端口,默认是3306。4 <property name="schema">testdb</property>5 #设置缺省的数据库,当连接amoeba时,操作表必须显式的指定数据库名,即采用dbname.tablename的方式,不支持use dbname指定缺省库,因为操作会调度到各个后端dbserver。6 <property name="user">test1</property>7 <property name="password">x12345678</property>
1 ……2 <property name="maxActive">500</property> #最大连接数,默认5003 <property name="maxIdle">500</property> #最大空闲连接数4 <property name="minIdle">1</property> #最新空闲连接数5 ……6 <dbServer name="writedb" parent="abstractServer">7 #设置一个后端可写的dbServer,这里定义为writedb,这个名字可以任意命名,后面还会用到。8 <factoryConfig>9 <property name="ipAddress">172.24.8.100</property>10 #设置后端可写dbserver ip。11 </factoryConfig>12 </dbServer>13 14 <dbServer name="slave01" parent="abstractServer">15 <factoryConfig>16 <property name="ipAddress">172.24.8.101</property>17 </factoryConfig>18 </dbServer>19 20 <dbServer name="slave02" parent="abstractServer">21 <factoryConfig>22 <property name="ipAddress">172.24.8.102</property>23 </factoryConfig>24 </dbServer>25 26 <dbServer name="slave03" parent="abstractServer">27 <factoryConfig>28 <property name="ipAddress">172.24.8.103</property>29 </factoryConfig>30 </dbServer>31 32 <dbServer name="slave04" parent="abstractServer">33 <factoryConfig>34 <property name="ipAddress">172.24.8.104</property>35 </factoryConfig>36 </dbServer> #以上设置四台后端可读节点信息。37 <dbServer name="myslave" virtual="true">38 #设置定义一个虚拟的dbserver,实际上相当于一个dbserver组,这里将可读的数据库ip统一放到一个组中,将这个组的名字命名为myslave。39 <poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">40 <!-- Load balancing strategy: 1=ROUNDROBIN , 2=WEIGHTBASED , 3=HA-->41 <property name="loadbalance">1</property> #选择调度算法,1表示负载均衡,2表示权重,3表示HA, 这里选择1。42 43 <!-- Separated by commas,such as: server1,server2,server1 -->44 <property name="poolNames">slave01,slave02,slave03,slave04</property> #myslave组成员。45 </poolConfig>46 </dbServer>
5.3 Amoeba-amoeba配置
1 [root@Amoeba ~]# vi /usr/local/amoeba/conf/amoeba.xml2 ……3 <property name="port">8066</property> #设置amoeba监听的端口,默认是80664 ……5 <property name="ipAddress">127.0.0.1</property> #配置监听的接口,如果不设置,默认监听所以的IP6 ……7 <property name="user">root</property>8 <property name="password">x120952576</property>
- 以上配置客户端连接amoeba时需要使用这里设定的账号;
- 此处账号密码和amoeba连接后端数据库服务器的密码无关;
- 前端应用程序连接数据库的地址就是Amoeba服务器的值,连接用户名和密码即为此处配置的用户名和密码。
1 ……2 <property name="defaultPool">writedb</property> #设置amoeba默认的池,这里设置为writedb3 <property name="writePool">writedb</property>4 <property name="readPool">myslave</property>5 <property name="needParse">true</property> #取消注释,则指定前面定义好的俩个读写池。
六 数据库配置
6.1 创建数据库
1 [root@Client ~]# mysql -ummm_test -px120952576 -h172.24.8.100 #从客户端使用可写vip连接数据库2 mysql> create database testdb; #曾经testdb数据库3 [root@Master02 ~]# mysql -uroot -px120952576 #使用Master02进入4 mysql> show databases; #验证是否复制成功
6.2 授权Amoeba用户
1 [root@Master01 ~]# mysql -uroot -px1209525762 mysql> grant all on testdb.* to 'test1'@'172.24.8.14' identified by 'x12345678';
七 启动Amoeba
1 [root@Amoeba ~]# /usr/local/amoeba/bin/launcher
1 [root@Amoeba ~]# vim /usr/local/amoeba/jvm.properties2 JVM_OPTIONS="-server -Xms2048m -Xmx2048m -Xss512k -XX:PermSize=16m -XX:MaxPermSize=96m"
1 [root@Amoeba ~]# /usr/local/amoeba/bin/launcher & #建议直接放入后台启动2 [root@Amoeba ~]# echo "/usr/local/amoeba/bin/launcher &" >> /etc/rc.local
八 测试
8.1 打开日志记录
1 [root@Master01 ~]# touch /var/log/mysql_query_log2 [root@Master01 ~]# chown mysql:mysql /var/log/mysql_query_log3 [root@Master01 ~]# vi /etc/my.cnf4 general_log=ON5 general_log_file=/var/log/mysql_query_log.log
8.2 新增对应数据
1 [root@Master01 ~]# mysql -uroot -px1209525762 mysql> use testdb;3 mysql> create table mmm_test(id int,email varchar(60));4 mysql> insert into mmm_test (id,email) values (100,'ip is 172.24.8.10');
8.3 读写分离测试
1 [root@Client ~]# mysql -uroot -h172.24.8.14 -px120952576 -P80662 mysql> select * from testdb.mmm_test;
- 此处在Client端使用的是Amoeba的IP连接,端口为Amoeba服务的8066端口;
- 多次执行查询,可知select请求均衡的分配在MMM集群中的4个节点,由于Master01和Master02同步复制,因为有两条相同结果。
1 [root@Master01 ~]# tail -f /var/log/mysql_query_log | grep mmm_test2 #所有节点执行此命令,观察log信息。3 [root@Client ~]# mysql -uroot -h172.24.8.14 -px120952576 -P80664 mysql> create table mmm_test1(id int,email varchar(60));5 mysql> insert into mmm_test1 (id,email) values (104,'ip is 172.24.8.14');
九 其他附加
转载于:https://www.cnblogs.com/itzgr/p/10331121.html
001.Amoeba读写分离部署相关推荐
- Amoeba读写分离部署
一 Amoeba简介 Amoeba(变形虫)项目,该开源框架于2008年 开始发布一款 Amoeba forMysql软件.这个软件致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQ ...
- MySQL主从复制和基于Amoeba的读写分离部署
文章目录 MySQL主从复制和基于Amoeba读写分离 什么是主从复制? 为什么要有MySQL主从复制? 什么是读写分离? 一.MySQL主从复制原理 二.主从复制的工作过程 三.主从复制方式 1.异 ...
- windows下Redis 主从读写分离部署
windows下Redis 主从读写分离部署 原文: windows下Redis 主从读写分离部署 1.可直接下载window下的运行文件(下面这个链接) 也可以浏览github 查看相应的版本说明文 ...
- mysql读写分离 存储过程_基于maxscale的读写分离部署笔记
使用maxscale搭建的读写分离架构,后期还可以再结合MHA做master的故障转移,这样业务层面上不需要做任何的改动即可. 基于connect方式的不要使用.从库延迟他还会继续分发请求过去,暂时不 ...
- mycat读写分离部署步骤
1.下载mycat: https://raw.githubusercontent.com/MyCATApache/Mycat-download/master/1.5-RELEASE/Mycat-ser ...
- mysql读写分离_MySQL基于amoeba读写分离实验
=========================================== 主从复制只是一个同步数据的方式 读写分离:只在主的上面写,只在从的上面读 读写分离方案:[1]基于程序代码内部 ...
- amoeba mysql读写分离_mysql数据库-基于amoeba读写分离
环境: 主机A( huangzp2):172.16.115.157 主机B( huangzp3):172.16.115.100 主机C( huangzp4):172.16.115.87 说明: 依赖于 ...
- ProxySQL实现双主双从读写分离部署
文章目录 1.环境说明 2.安装proxysql和安装mysql和配置主从 2.1给四台mysql安装mariadb 2.2安装proxysql 2.2.1配置mysql-master和mysql-m ...
- mysql amoeba 事务_MySQL基于Amoeba实现读写分离
在实际的生活环境中,如果对数据库的读和写都在同一个数据库服务中操作,无论是在安全性,高可用还是高并发等各个方面都不能完全满足实际需求的,因此一般来说都是通过主从复制的方式来同步数据,再通过读写分离来提 ...
最新文章
- [APB VNext 笔记] UI
- 中随机打乱序列的函数_提前准备,方能“随机”应对,人生不悔
- 在本地如何搭建虚拟主机(Appserver集成环境)
- 离职后,我们该如何处理社保!
- 执行dos命令,不出现黑色的dos窗口
- mysql关系模式怎么画_关系数据库与mysql
- Vivado Bit文件压缩
- ip=request.servervariables(Remote_Addr)获得ip显示::1
- 关于suitescript 无法读取Item Number Field
- 《云计算:原理与范式》一3.2 知识经济时代的来临
- python爬虫(十一)爬取贴吧图片
- JSP之java.lang.ClassNotFoundException
- MLY -- 8.Establish a single-number evaluation metric for your team to optimize
- 永琳的竹林迷径(path)
- MATLAB中FIR滤波器的时延溢出问题详解:线性相位对信号造成的时延溢出及其消除方法,以及fir1等函数的使用
- .NET Core Onvif协议C#教程系列之XiaoFeng.Onvif组件库
- 【C++游戏引擎Easy2D】Random随机数,不同于Rand,做游戏必备
- rust领地柜用石镐拆吗_腐蚀Rust防炸地基教学 伪分离和双层防炸地基怎么造
- mysql中group by用法解析
- 基于遗传算法的BP神经网络优化算法(附代码)
热门文章
- pycharm如何放大字体和缩小字体
- phpcms列表页调用 点击量
- SQLSERVER自动定时(手动)备份工具
- [Android Pro] 通过IMSI判断手机是移动、联通、电信
- Juniper NetScreen 基于源NAT转换
- Ubuntu14.04LST 安装Oracle SQL Developer 4.0.2
- Django Book 2.0 笔记——会话、用户和注册
- iOS开发那些事--编写OCUnit测试方法-逻辑测试方法
- how to figure out problems in the ardunio nano force senser? 1,2,3,4
- how to deal with Demodex