使用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 ,如果报错
则修改/usr/local/amoeba/bin/amoeba文件的DEFAULT_OPTS="-server -Xms256m -Xmx256m -Xss128k"内容,修改为
4、amoeba.xml 配置
①指定amoeba监听端口
②设置amoeba用户名密码(供程序调用使用)
③设置amoeba程序所在ip地址
④定义读库写库
5、dbServers.xml 配置
#设置连接数据库所用的用户名,密码,端口(需要去各数据库为该用户授权)
#<property name="schema">test</property> #设置缺省的数据库,当连接amoeba时,操作表必须显式的指定数据库名,即采用dbname.tablename的方式,不支持 use dbname指定缺省库,因为操作会调度到各个后端dbserver
#指定各数据库的ip,并指定负载规则
以上基本搞定,可以启动测试 /usr/local/amoeba/bin/amoeba start
测试方法:
首先都创建一个test库,test表,然后stop slave。分别插入不同数据,登录amoeba数据库查看。
stop slave 之后 也可以登录amoeba 插入新数据,插入之后马上查看,如果查看不到新插入的数据也说明读写分离了。