昨天搞了一天的mysql-proxy搭建读写分离,各种安装报错,自认为比较复杂(暂时放弃)。今天听说amoeba这个软件工具,实现方法比较简单,于是实验搭建了一下。过程如下:
实验机器:centos X64 amoeba: 192.168.213.65
master: 192.168.213.81
slave:192.168.213.53
1.3台服务器都安装mysql, 另外mysql主从安装方法,这边就略过了
2.以下都是在amoeba这台服务器上进行的安装操作:
2.1. 首先安装jdk (Amoeba框架是基于Java SE1.5开发的,建议使用Java SE1.5以上的版本。)
#tar zxf jdk-8u45-linux-x64.tar.gz
#mv jdk1.8.0_45/ /usr/local/
方法一:
#vim /etc/profile.d/java.sh //新建java.sh并编辑,生成java环境变成
JAVA_HOME=/usr/local/jdk1.8.0_45
JAVA_BIN=/usr/local/jdk1.8.0_45/bin
JRE_HOME=/usr/local/jdk1.8.0_45/jre
PATH=$PATH:/usr/local/jdk1.8.0_45/bin:/usr/local/jdk1.8.0_45/jre/bin
CLASSPATH=/usr/local/jdk1.8.0_45/jre/lib:/usr/local/jdk1.8.0_45/lib:/usr/local/jdk1.8.0_45/jre/lib/charsets.jar
#source /etc/profile.d/java.sh //让配置文件立刻生效
或方法二
#vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_45
export JRE_HOME=/usr/local/jdk1.8.0_45/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
#source /etc/profile
2.2安装amoeba
本例使用版本:amoeba-mysql-3.0.5-RC-distribution.zip
#unzip amoeba-mysql-3.0.5-RC-distribution.zip
#chmod -R +x /usr/local/amoeba/bin/
#cd /usr/local/amoeba/conf/
修改配置文件:
⑴dbServer.xml 的配置:
${defaultManager}
64
128
3306
test
root
123456
500
500
1
600000
600000
true
true
true
192.168.213.81
192.168.213.53
1
server1,server2
⑵amoeba.xml 配置:
客户端连接Amoeba时所绑定的IP地址、端口、用户名和密码。及IP访问限制。
8066
128
64
root
123456
${amoeba.home}/conf/access_list.conf
以下内容是定义读写分离:
${amoeba.home}/conf/rule.xml
${amoeba.home}/conf/ruleFunctionMap.xml
${amoeba.home}/conf/functionMap.xml
1500
multiPool
server1
server2
true
⑶ jvm.properties配置文件(amoeba安装目录下)
#cd /usr/local/amoeba
#vim jvm.properties //修改Xss的值大于228,否则后面启动服务的时候会报错
找到:
JVM_OPTIONS="-server -Xms256m -Xmx1024m -Xss128k -XX:PermSize=16m -XX:MaxPermSize=96m"
改为:
JVM_OPTIONS="-server -Xms512m -Xmx1024m -Xss256k -XX:PermSize=16m -XX:MaxPermSize=96m"
3.测试读写分离
# cd /usr/local/amoeba/bin/
# ./launcher& //(也可通过nohup后台启动,或者自己写一个脚本来启动。 )
启动的Amoeba默认端口为8066
为了方便判断主从的读写过程,在master和slave上面mysql配置文件中添加一条日志:
#vim /etc/my.cnf
log = /data/mysql/mysql.log //注意行语句仅用于测试使用,测试完注释掉,不然会生成很大的日志文件
保存后重启mysql服务。
#tail -f /data/mysql/mysql.log (主从上,查看此动态日志,监控mysql读写执行情况)
在客户端连接Amoeba测试:(此处我用的amoeba这台服务器)
#service mysqld start
# mysql -uroot –p123456 -h192.168.213.65 --port 8066
mysql> show databases;
mysql> use test; //选择默认测试库 test
mysql>create table zhang (id int(10) ,name varchar(10),address varchar(20));
mysql>select * from zhang;
mysql>insert into zhang values('1','sdasd','w');
mysql>select * from zhang;
mysql>insert into zhang values('2,'dwqe','w');
mysql>select * from zhang;
输入完以上的测试语句,在主上会发现只有insert的记录,而从上面会有select的记录,insert记录是通过主从复制而得到。
至此实验完成!
本文由 Mr Gu 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Aug 26, 2016 at 09:24 pm