项目场景:Mysql 实现数据库读写分离
搭建3台MySQL服务器,完成主从复制,搭建一台amoeba服务器,完成MySQL的读写分离
问题描述:
问题1、
在服务搭建完毕后,利用客户机连接amoeba服务器登录数据库,无法查看数据库内容
客户端报错的数据代码:
mysql> show databases; #显示数据库 ERROR 2006 (HY000): MySQL server has gone away No connection. Trying to reconnect... Connection id: 1545595021 Current database: *** NONE ***
amoeba服务端报错的代码数据:
java.lang.Exception: poolName=slaves, no valid pools at com.meidusa.amoeba.net.poolable.MultipleLoadBalanceObjectPool.borrowObject(MultipleLoadBalanceObjectPool.java:183) at com.meidusa.amoeba.mysql.handler.CommandMessageHandler.startSession(CommandMessageHandler.java:633) at com.meidusa.amoeba.mysql.handler.MySqlCommandDispatcher.handleMessage(MySqlCommandDispatcher.java:123) ......
原因分析:
amoeba的数据库文件第23行,这里默认对应的MySQL库为text,我这里使用的MySQL版本为5.7版本,默认的库为mysql,所以找不到默认的库,我之前搭建的MySQL版本是5.5是不需要修改的,没注意到这一点
23 <property name="schema">text</property>
解决方案:
将amoeba的数据库文件第23行,默认对应的MySQL库修改为mysql。
<property name="schema">mysql</property>
问题2、
在服务搭建完毕后,利用客户机连接amoeba服务器登录数据库,无法查看数据库表里的内容
客户端报错的数据代码:
mysql> select * from test #查看test库里的test表 ERROR 2006 (HY000): MySQL server has gone away No connection. Trying to reconnect... Connection id: 1545595021 Current database: *** NONE ***
amoeba服务端报错的代码数据(相同的报错):
java.lang.Exception: poolName=slaves, no valid pools at com.meidusa.amoeba.net.poolable.MultipleLoadBalanceObjectPool.borrowObject(MultipleLoadBalanceObjectPool.java:183) at com.meidusa.amoeba.mysql.handler.CommandMessageHandler.startSession(CommandMessageHandler.java:633) at com.meidusa.amoeba.mysql.handler.MySqlCommandDispatcher.handleMessage(MySqlCommandDispatcher.java:123) ......
原因分析:
部署主从复制时,没有给amoeba用户授权
解决方案:
在mysql所有节点上 给test用户授权
mysql> grant all on *.* to 'test'@'192.168.220.%' identified by '1234.Com'; Query OK, 0 rows affected, 1 warning (0.00 sec)
声明:本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。