为了让MySQL的并发能力提升,需要使用第三方工具进行读写分离,这次我们使用阿里的Amoeba来进行读写控制,具体的好处就不做过多解释了。我所有写的文章都是经过验证的。我表达能力欠缺,有写的不好的地方,请大家多担待。
1 先看看Amoeba在我们程序中的位置
2 配置mysql 主从 (mysql 的安装就不写了大家写的已经很全面了)
我们现在有2台机器就先凑合着用吧,我这边安装后mysql后就随便选了一个当Master
10.211.55.13(Master)
10.211.55.14(Slave)
配置10.211.55.13
修改mysql 的配置文件
vi /etc/my.cnf
[mysqld]
#添加以下两行
server-id=1
log-bin=master-bin
需要配置好mysql 需要重启
/etc/init.d/mysql restart
配置好添加一个同步账号让从库用户这个账号进行同步数据(同步是需要时间的所以会有延迟情况,看了一篇文章貌似mysql在5.7+同步是多线程同步机制延迟问题可能会好很多)
在主库创建同步账号:
mysql -u root -p
create user back identified by '123456';
grant all privileges on *.* to 'back'@'%'identified by '123456' with grant option;
这样创建了一个back 账号密码是123456
看一下主库的主从配置信息
show master status;
File和Position这个要留住,在从库中需要使用到这两个信息。
登录 10.211.55.14
修改mysql 的配置文件
[mysqld]
server-id=2
#可以指定要复制的库
replicate-do-db = test #在master端不指定binlog-do-db,在slave端用replication-do-db来过滤
replicate-ignore-db = mysql #忽略的库
需要配置好mysql 需要重启
登录mysql 后执行 内容需要替换,HOST , USER , PASSWORD, FILE, POS.
mysql> stop slave;
mysql> CHANGE MASTER TO
-> MASTER_HOST='10.211.55.13',
-> MASTER_USER='back',
-> MASTER_PASSWORD='123456',
-> MASTER_LOG_FILE='master-bin.000001',
-> MASTER_LOG_POS=1626;
mysql> start slave;
查看一下是否配置完成 show slave status \G; 看下图,如果都是yes 就说明成功了。
3 Amoeba 的配置
数据库主从创建完成后就来配置Amoeba
下载Amoeba https://sourceforge.net/projects/amoeba/ 找到最新版本下载这边下载的是3.0.5
解压后的目录
需要修改两个问 amoeba.xml 和 dbServers.xml
dbServers.xml 用了配置Amoeba 登录mysql 的用户信息和数据库信息
${defaultManager}
64
128
3306
txx
back
back
500
500
1
600000
600000
true
true
true
127.0.0.1
10.211.55.14
1
slavedb
amoeba.xml 配置了 amoeba 的基本配置
8066
128
64
root
root
${amoeba.home}/conf/access_list.conf
128
500
utf8
60
com.meidusa.toolkit.net.AuthingableConnectionManager
${amoeba.home}/conf/dbServers.xml
${amoeba.home}/conf/rule.xml
${amoeba.home}/conf/ruleFunctionMap.xml
${amoeba.home}/conf/functionMap.xml
1500
masterdb
masterdb
slavepool
true
配置 ${amoeba_home}/jvm.properties 替换为下面这个
JVM_OPTIONS="-server -Xms1024m -Xmx1024m -Xss256k -XX:PermSize=16m -XX:MaxPermSize=96m"
配置成功后启动Amoeba
到${amoeba_home}/bin
./launcher
ok 到此为止,看看成果