amoeba mysql读写分离_mysql数据库-基于amoeba读写分离

环境:

主机A( huangzp2):172.16.115.157

主机B( huangzp3):172.16.115.100

主机C( huangzp4):172.16.115.87

说明:

依赖于主从结构

需要中间件(连接两个独立的应用程序或独立的系统,即使没有相同的接口,也能为他们交换数据)实现,如tomcat、weblogic、数据库中间件

mysql proxy,支持读写分离、负载均衡、故障转移,缺点:性能差,不支持大数量转发,需要用到lua脚本

atlas,性能较差,相应时间较长,不支持动态参数的配置加载,即先关闭数据库,不适用在线业务;

amoeba,阿里研发和使用的,除了支持读写分离,也支持数据库分区、分表操作,对数据库性能较小,因为研发工程师跳槽至盛大,怕数据泄露,不用

cobar,阿里现在在使用的中间件,半开源软件,有较多限制)

1. 主从机器AB上安装mysql和mysql-server,修改配置文件和授权、查看状态

yum install -y mysql mysql-server

主上A:修改配置文件vim /etc/my.cnf,重启,授权(所有权限,更方便)、状态

3d2eef01949ed6e63f8ef079657a6f83.png

grant all privileges on *.* to 'silen'@'%' identified by '123456';

说明:

afd8a217c8073c9bf7e6d056fdcd373a.png

611978a9dce32573957b4112ad0c589b.png

从上B:修改配置文件vim /etc/my.cnf,重启,填写Master.info信息、开启slave,查看状态

af82ad1c001466a34216f0682bcc689a.png

97602cc892ce7ab8bb2e01bb971a506c.png

4bde522ce8a020d9d3f13996736a5191.png

主上A:

9096f88b15af312a7b4e100bfa3e4098.png

从上B:

cd92f91b1b6f330688089ab84f440b56.png

2. 从上也需要授权,让中间件能过访问

grant all privileges on *.* to 'silen'@'%' identified by '123456';

5127f36a5c69f6b817006778b154b1a4.png

3. 中间件服务器设置

3.1 环境:

(1)先安装gcc环境;

yum install -y gcc*

(2)需要获得amoeba主程序:amoeba-mysql-1.3.1-BETA.zip

(3)java的安装包:jdk-7u40-linux-x64.tar.gz

下载链接:

3.2 配置全局变量

3.2.1 创建 /amoeba目录,将java解压到该目录下

mkdir /amoeba

tar -zxvf jdk-7u40-linux-x64.tar.gz -C /amoeba/

3.2.2 目录标题较长,做个软链接,即可

ln -s jdk1.7.0_40/ jdk

3.2.3 编辑全局变量

vim /etc/profile配置java选项(java的东西都需要声明)

JAVA_HOME=/amoeba/jdk

export JAVA_HOME

PATH=$JAVA_HOME/bin:$PATH

export PATH

CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH

export CLASSPATH

spacer.gifbae4f2b86e5cffc206f903ae8570ce63.png

说明:

JAVA_HOME表示java的目录位置,设置为全局变量,这样其他shell也可以使用

java目录下的工具脚本加入到系统环境变量中,便于执行命令,也升级为全局变量

CLASSPATH表示java类的库的环境变量,把当前目录.,java下的tool.jar,dt.jar加入到变量中(Linux下用冒号隔开,Windows下用分号隔开),也升级为全局变量

3.2.4. 刷新下全局变量文件

source /etc/profile

3.2.5 验证java是否可用

44d9d407073305c48ac980f86edd50d6.png

spacer.gif

3.3 安装配置amoeba

3.3.1 解压至/usr/local/amoeba目录下

unzip amoeba-mysql-1.3.1-BETA.zip -d /usr/local/amoeba

3.3.2 添加命令执行权限,便于调用命令

chmod -R +x /usr/local/amoeba/bin/

3.3.3 修改amoeba主配置文件

vim /usr/local/amoeba/conf/amoeba.xml

...(服务器性能部分设置)

A. 找到:

去注释,改amoeba的服务器(中间件)ip为:

172.16.115.87

b864f2943891768fe1938a0f4ff388cf.png

spacer.gif

B. 找到:

去注释,修改amoeba的root登录密码为123456:

123456

252d49d3328a4cb54649385eb18126e9.png

spacer.gif

...(amoeba每一个数据库服务器,对应一个dbServer)(数据库服务器列表部分设置)

A.  下找到:

127.0.0.1

将ip地址改为主一的ip(端口和数据库名可以默认3306、test):

172.16.115.157

B. 找到:

root

将用户名改为授权的zhangshan:

silen

C. 找到:

去掉注释,将密码改为123456:

123456

9618d9c797e05454ac28f76387b5fa93.png

spacer.gif

D. 找到:

修改dbserver池子名为master(定义池子下面哪些server属于master这个池子,用来扩展服务器):

E. 找到:

server1

如果master池子新增多台主服务器,比如server1(已在master池子中了)、server2、server3,则修改为:

server1,server2,server3

e28202cb11655e00f0929dd8f07f6d87.png

spacer.gif

F. 因为有两台数据库服务器,已经设置了主服务器,所以需复制主服务器的dbServer,作为模板,修改从服务器dbServer

复制(64行-109行),粘贴在...范围内:

...

(1)修改dbServer的名称为server2:

dbServer name="server2"

(2)ip地址修改为192.168.9.252:

172.16.115.100

43bc68b39f7be2767a95a2c4c6e119f4.png

spacer.gif

(3)在下,修改池子名称为slave:

(4)slave池子下server主机名字修改为server2:

server2

spacer.gif b15c8a0dcfcca381dba426e7f8dfca22.png

最后跳出:

A. 找到:

server1

将单台服务器的名称修改为池子名称(如果有多台主机,依次轮询去分配),作为默认访问的服务器:

master

B. 找到:

去掉注释,写入池改为master,读取池改为slave:

master

slave

915b569c09439b2d5c1560a17c13cf98.png

spacer.gif

3.4 查看并编辑amomeba的执行脚本文件:

vim /usr/local/amoeba/bin/amoeba

A. 找到:

DEFAULT_OPTS="-server -Xms256m -Xmx256m -Xss128k"

修改为:

DEFAULT_OPTS="-server -Xms256m -Xmx256m -Xss256k"

47f7a5c9f47d0ab1c55640ecfee50629.png

spacer.gif

3.5 启动amoeba程序,并查看进程

说明:nohup命令表示,放在后台启动,即使采用远程连接,远程断了,也能运行

nohup bash -x /usr/local/amoeba/bin/amoeba &

9f3beb2af8d7756b4ee16606909a4c93.png

spacer.gif

4. 中间件服务器,安装mysql,不需要安装mysql-server,登录amoeba

说明:用户为配置文件中指定的用户和密码,默认端口为8066,登录的其实中间件,调用的是主从服务上的mysql,这里安装的mysql只是一个登录的工具

yum install mysql -y

mysql -u root -p123456 -h172.16.115.87 -P 8066

3128bade83a6abdfc62c3b7296d20953.png

spacer.gif

测试:实际生产环境中,不需要操作!!!

停用从服务器slave,即stop slave,在主和从服务器上的test库中创建一个a1表(表名需一致,因为是主从),分别插入一条数据master和slave

主上:

aeb36f04b4a80f0d2dfaf59af331c229.png

aea3774e17010f3e5530728920f9d27f.png

78e259fe56453f58d635cd32ff96ad5f.png

spacer.gif

从上:

spacer.gif 7cc1c4f9a84b609c32fc4bd1d27cdaa3.png

结论:中间件查看a1表中数据,反复查询都是slave,表明,查询数据是从从服务器中获得

0eed3d8e7d62d9e8feca7a174e468fc2.png

spacer.gif

中间件,往a1表中插入一条数据amoeba

spacer.gifa6d6ec0f11a59f98c0f38a91935925bc.png

结论:在主服务器上的a1表中看到amoeba数据,表明写数据是在主服务器中写入

主上:

cff818ea6033fca7eef590c8a25aa1d8.png 

spacer.gif

从上:

spacer.gif2a0ad7e6e1b49222d7b328fecf151d49.png

最后分别删掉主和从上的test库中的tb1表,从上开启slave

spacer.gif c2a120ddbacaadb70da1f74817b2ab06.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值