項目場景:Mysql 實現資料庫讀寫分離 搭建3台MySQL伺服器,完成主從複製,搭建一臺amoeba伺服器,完成MySQL的讀寫分離 問題描述: 問題1、 在服務搭建完畢後,利用客戶機連接amoeba伺服器登錄資料庫,無法查看資料庫內容客戶端報錯的數據代碼: mysql> show databas ...
項目場景: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)
本文來自博客園,作者:xiao智,轉載請註明原文鏈接:https://www.cnblogs.com/yuwen01/p/16592658.html