Mysql 实现读写分离的详细教程(amoeba)
发布时间:2018-08-17作者:laosun阅读(2220)
继上篇文章,mysql实现主从配置之后的读写分离实现方式,文章地址。
amoeba是盛大架构师陈思儒独立完成,除此之外还有很多中间件,比如阿里也出了一款mycat。如果博主时间充裕的话,我会一一实现他们,并且将文章分享出来。
言归正传
博主的主从配置情况如下:
Mac电脑: 192.168.1.2 (master)
win7电脑:192.168.1.3 (slave)
具体情况请跳转到对应的文章页进行查看,这里就不做过多的解释了。
下载完成后,我们解压到D盘根目录。如下图所示:
我们用到只有conf目录,修改配置一下即可:
我们只需要修改一下这两个文件即可实现简单的读写分离操作。
至于里边其他文件是什么意思,博主从网上找了一些说明,贴在下边:1:Amoeba主配置文件($AMOEBA_HOME/conf/amoeba.xml),用来配置Amoeba服务的基本参数,如Amoeba主机地址、端口、认证方式、用于连接的用户名、密码、线程数、超时时间、其他配置文件的位置等。
2:数据库服务器配置文件($AMOEBA_HOME/conf/dbServers.xml),用来存储和配置Amoeba所代理的数据库服务器的信息,如:主机IP、端口、用户名、密码等。
3:切分规则配置文件($AMOEBA_HOME/conf/rule.xml),用来配置切分规则。
4:数据库函数配置文件($AMOEBA_HOME/conf/functionMap.xml),用来配置数据库函数的处理方法,Amoeba将使用该配置文件中的方法解析数据库函数。
5:切分规则函数配置文件($AMOEBA_HOME/conf/ruleFunctionMap.xml),用来配置切分规则中使用的用户自定义函数的处理方法。
6:访问规则配置文件($AMOEBA_HOME/conf/access_list.conf),用来授权或禁止某些服务器IP访问Amoeba。
7:日志规格配置文件($AMOEBA_HOME/conf/log4j.xml),用来配置Amoeba输出日志的级别和方式。
8:配置后端mysql 服务器连接[dbServer.xml]
我们打开dbServers.xml 来配置后端mysql服务器的连接等配置
设置abstractServer,这里边定义了要mysql服务器的用户名密码等信息
添加两个dbServer,继承自abstractserver,一个代表主数据库,一个代表从数据库。
我们看到文件下边已经自动给添加了server1和server2,我们把它修改了即可(如果需要配置多个数据库,直接复制dbServer节点即可,如果端口号或者分配的用户名密码不一样,就把abstractServer节点里的3306或者其他配置信息拿到子节点进行配置即可)。
配置数据库连接池
下边我们打开amoeba.xml 来配置监听端口等信息
读写分离的配置:
好了,截至到目前为止,简单的读写分离已经配置完毕,下边我们来启动进行测试。
==================================华丽的分割线==================================
1:配置数据库帐号, 到底是什么数据库帐号呢: 是amoeba链接你的master数据库和slave数据库的帐号,上边我也说过了,尽量不要使用root。
GRANT ALL PRIVILEGES ON *.* TO 'am_root'@'192.168.1.3' IDENTIFIED BY 'amd_root' WITH GRANT OPTION;
flush privileges;
在两个数据库分别执行上边的两行语句。
帐号:am_root,密码:am_root 是我们之前在dbServer.xml中配置的。 IP: 是你的amoeba所在的机器ip (这里我怕有人迷糊,我解释一下,我的amoeba和slave服务在同一台机器,所以没关系,咱们正常走,博主就两台电脑,想安装个虚拟机来着,最后放弃了。)
这里创建用户我就不截图了,很简单的,登录mysql -u root -proot ,进去执行这两句就行(记得修改里边的你的电脑ip或者你自己设置的帐号密码)。
2:启动amoeba
启动成功了。
博主的主从配置情况如下:
Mac电脑: 192.168.1.2 (master)
win7电脑:192.168.1.3 (slave)
amoba在 192.168.1.2 win7 机器上
我们现在在任意一台电脑上进行测试,为了防止你们看着迷糊,我在mac上测试吧。
上边我们的d_sunjs_test数据库中有个表为 t_users, 里边有一条数据。
那么我们的slave从服务器中应该也有相同的一条数据。我们也去看一下。
另外查看下主从同步是否正常
从上图中可以看出,也正常,没毛病。
那么我们现在在mac上系统上使用amoeba登录mysql
登录成功了,我们往t_users表中插入一条数据,并且查看结果。
插入没有问题,我们查看我们的slave服务器,看是否主从同步成功:
可以看出同步成功了,那么我们如何才能知道读写是分离的呢,别着急,我们可以在win7 也就是slave 中插入一条数据,看是否能查出来。
我们现在去查看一下看是否能查询出来。
看到了吧,这就证明amoeba查询走的是slave库, 我们可以看下我们的master库中是否也有这条数据。
我想到这里就不用我再继续解释了。 因为最简单的读写分离已经完成了。
我们程序中使用就配置 amoeba 的连接地址就可以了。
ip: 192.168.1.3
端口:8066
帐号:a_root
密码:a_root_123
指令中登录就使用: mysql -h 192.168.1.3 -u a_root -pa_root_123 -P8066
0 +1
版权声明
分享到:
发表评论
请文明留言
发表
共 0 条评论