amoeba mysql binary_利用amoeba实现mysql读写分离

参考:

一 安装环境:

三台centos6.7 64位的系统

192.168.127.130   从数据库

192.168.127.131   主数据库

192.168.127.134  amoeba

二 安装过程 (下面的1-3的所以操作都在amoeba服务器上面)

1 首先安装jdk环境,下载,安装,设置环境变量vim /etc/profile

export JAVA_HOME=/usr/local/jdk  (java安装路径)

export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib$JAVA_HOME/jre/lib

export PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/bin:$PATH:$HOME/bin

export AMOEBA_HOME=/usr/local/amoeba  (amoeba安装路径)

export PATH=$PATH:$AMOEBA_HOME/bin

source /etc/profile

查看 java -version

java version "1.6.0_14"

Java(TM) SE Runtime Environment (build 1.6.0_14-b08)

Java HotSpot(TM) 64-Bit Server VM (build 14.0-b16, mixed mode)

java 环境配置成功

2  安装并配置amoeba软件

mkdir /usr/local/amoeba

tar zxvf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/

chmod -R 755 /usr/local/amoeba/

/usr/local/amoeba/bin/amoeba

amoeba start|stop

启动的时候会报错

The stack size specified is too small,

Specify at least 228k Error: Could not create the Java Virtual Machine.

Error: A fatal exception has occurred. Program will exit.

解决办法是:

定义amoeba内存参数,我这里定义了最大2G的并发占用连接

# vim /usr/local/amoeba/bin/amoeba

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

修改为 DEFAULT_OPTS="-server -Xms1024m -Xmx2048m -Xss512k"

然后再次启动就成功了

启动文件,最好以后台方式启动

nohup /usr/local/amoeba/bin/amoeba start &

3 更改配置文件 dbServers.xml和amoeba.xml两个配置文件

amoeba.xml配置

amoeba本地配置或者对外的配置:

8066

默认是8066,可以更改

192.168.127.134

对外提供程序访问的IP地址,也就是amoeba机器对外访问的IP地址

${clientConnectioneManager}

128

64

amoeba对外连接验证配置:

amoeba

**** 对外提供访问的用户

123

****对外提供访问的密码

${amoeba.home}/conf/access_list.conf

amoeba.xml读写分离配置:server1

server1

readPool

##这里的server1,readpool和dbsever.xml里面配置有关

注意:默认的下面两行是注释掉的,需要把注释去掉

defaultPool:配置了默认的数据库节点,一些除了SELECT\UPDATE\INSERT\DELETE的语句都会在defaultPool执行。

writePool :配置了数据库写库,通常配为Master,如这里就配置为之前定义的Master数据库。

readPool :配置了数据库读库,通常配为Slave或者Slave组成的数据库池,如这里就配置之前的readpool数据库池。

dbServers.xml文件配置:

${defaultManager}

64

128

3306

zabbix ##必须是一个存在的database主和从上面都有的

amoeba  ##用户名

123 #密码默认被注释掉,需打开

500

500

10

600000

600000

true

true

接下来配置主从定义:

192.168.127.131  ** master-IP

192.168.127.130 ****slave1的

     ##这里的readpool要和amoeba.xml里面相同

        ***轮询策略

1

slave1    ##读和写的比例是1:1,设置从slave1为只读,如果有两个从可以写两个

此部分定义主服务器,从服务器,及从服务器连接池。这里只定义数据库地址,它们的用户及密码 就是上面的

abstractServer里的设置。注意用来连接真实mysql服务器的用户必须拥有远程连接权限 ,这里是先安装,完了在授权

4 在主从数据库上面同时授权grant all on *.* to 'amoeba'@'192.168.127.%' identified by "123";

5 验证 在任意客户端登录amoeba

mysql -uamoeba -p -h 192.168.127.134 -P 8066  (端口的这个P是大写的)回车,密码就是123

然后show databases;看能否查看

如果出现ERROR 2013 (HY000): Lost connection to MySQL server during query,这个错误,可以查看日志 /usr/local/amoeba/logs/root.log

经过排查发现密码被注释了 查看dbServer.xml配置文件,改成下面这样子,把 -->去掉即可- -

123再次查看,正常了。

6读写分离验证

接下来,进行简单测试,验证以上配置是否能够正确运行。登录master主数据库。

[root@chenllcentos ~]# mysql -uroot -pyourpassword -h192.168.127.134 -P8066

额外说明下,此处的yourpassword是连接Amoeba的密码,也就是在amoeba.xml配置文件中配置的密码,与Mysql密码不同,需要注意。登陆后,此时会提示以下信息。

Server version: 5.1.45-mysql-amoeba-proxy-3.0.4-BETA Source distribution

说明已经成功连接Mysql代理Amoeba。为了验证Amoeba读写分离配置是否生效,我们做一个简单的测试。先在134服务器master服务器上创建一个表。

mysql> create table sxit (id int(10) ,name varchar(10));

而后,停止从数据库上面的主从复制,便于数据库操作观察。登陆服务器从数据库。

[root@chenllcentos ~]# mysql -uroot -pyourpassword

停止从数据库主从复制。

mysql> slave stop;

在主数据库插入。

mysql> insert into sxit values('1','zhangsan');

在从数据库插入。

mysql> insert into sxit values('2','lisi');

登陆到amoeba服务器,进行读写分离的测试:

[root@chenllcentos ~]# mysql -uroot -pyourpassword -h192.168.127.134 -P8066

mysql> use test;

mysql> select * from sxit;

+------+------+| id   | name |

+------+------+|    2 | lisi |

+------+------+mysql> select * from sxit;

+------+------+| id   | name |

+------+------+|    3 | john |

+------+------+

重复执行多次,发现始终只显示从数据库的数据,说明如果进行数据库读操作,Amoeba只将读数据SQL命令路由至从数据库。登录主数据库。

[root@chenllcentos ~]# mysql -uroot -pyourpassword

mysql> use test;

mysql> select * from sxit;

+------+----------+| id   | name     |

+------+----------+|    1 | zhangsan |

+------+----------+

那么在amoeba服务器上插入一条数据,再次验证insert into sxit values('3','hu');

然后分别登陆到master和slave上面查看,主上面有,从上面没有,说明写的是主数据库(前提是主从复制没有打开)

可以验证,使用Amoeba对Mysql读写分离成功。若此时开启从数据库主从复制,则可以进行Mysql集群和负载均衡。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值