專案場景: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
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/501985.html
標籤:其他

