使用amoeba实现对mysql的读写分离

要实现读写分离,首先得有主从复制的环境。(主库需要打开log-bin-trust-function-creators=1,否则创建或修改函数时会报错)。

1、下载  amoeba-mysql-binary-2.2.0.tar.gz 包  

2、如果有java则不需要配置,如果需要特定的java环境,则可:

vim /usr/local/amoeba/bin/amoeba

开头添加一行指定java路径  如:export JAVA_HOME=/usr/local/java

3、输入 /usr/local/amoeba/bin/amoeba ,如果报错

使用amoeba实现对mysql的读写分离

则修改/usr/local/amoeba/bin/amoeba文件的DEFAULT_OPTS="-server -Xms256m -Xmx256m -Xss128k"内容,修改为

使用amoeba实现对mysql的读写分离

4、amoeba.xml 配置

①指定amoeba监听端口

②设置amoeba用户名密码(供程序调用使用)

③设置amoeba程序所在ip地址

④定义读库写库

使用amoeba实现对mysql的读写分离

5、dbServers.xml 配置

#设置连接数据库所用的用户名,密码,端口(需要去各数据库为该用户授权)

#<property name="schema">test</property>  #设置缺省的数据库,当连接amoeba时,操作表必须显式的指定数据库名,即采用dbname.tablename的方式,不支持 use dbname指定缺省库,因为操作会调度到各个后端dbserver

使用amoeba实现对mysql的读写分离

#指定各数据库的ip,并指定负载规则

使用amoeba实现对mysql的读写分离

以上基本搞定,可以启动测试    /usr/local/amoeba/bin/amoeba start

测试方法:

首先都创建一个test库,test表,然后stop slave。分别插入不同数据,登录amoeba数据库查看。

stop slave 之后   也可以登录amoeba 插入新数据,插入之后马上查看,如果查看不到新插入的数据也说明读写分离了。