mycat作為資料庫中介軟體也有一定的問題,在使用過程中不免會遇到各種各樣的問題,基於此我們將有關的問題都做一個記錄以備作FAQ查看。以下問題是針對MongoDB修改使用而提出的,請對號入座。mycat官方問題列表:https://github.com/MyCATApache/Mycat-Server/issues
問題0:mycat 源碼修改後打的jar包替換後不起作用
此問題是因為:在/usr/local/mycat/lib下不能存在多個Mycat-server的發布版本,如果需要備份請放置於其它路徑下。
問題1:mycat 大批量查詢掛起,所有串連斷開後恢複
這種是大資料查詢,出現無響應掛起,用戶端終止也沒用。詳情有待DBA收集日誌。
問題2:網關寫入mycat(正常),mysql有時報錯
Fatal error encountered during command execution. ---> MySql.Data.MySqlClient.MySqlException (0x80004005): Fatal error encountered attempting to read the resultset. ---> MySql.Data.MySqlClient.MySqlException (0x80004005): Reading from the stream has failed. ---> System.IO
.EndOfStreamException: 嘗試讀取超出流末尾的內容。
解決方案:建議將mysql寫逾時時間設長一點。
問題3:其它查詢都正常為何這個查詢語句就是查不出來結果
注意:我們不要在欄位裡麵包含關鍵字,有些欄位分割如AND、IN、OR等關鍵字可能導致條件解析時異常。
解決方案:排查WHERE後面的條件,欄位裡面最好不要夾雜關鍵字。
問題4:條件或——OR查詢是一個奇葩,偶爾有結果大多數時候是空結果集
加了OR 條件的查詢返回結果集為空白,or是一個集合條件,來看看MongoDB Shell的操作:
db.getCollection("goods").find({ "$or" : [ { "user" : "jhon"} , { "owner" :"jhon"}]})
我們習慣於 a=1 or a=20 這樣的SQL語句,必須解析條件or才能實現,不妨自己做做實驗。可以參考: http://blog.csdn.net/boonya/article/details/77530263
MongoDB用戶端測試:
db.getCollection('T_SUBTABLE_DATE_20170801').find({"$or":[{"F_TIME":{"$gte":"2017-08-01 06:00:00","$lte":"2017-08-01 08:00:00"}},{"F_SEX":"female"}]});
MongoDB源碼裡面支援的:
大多數情況:
偶爾出現:
因為不穩定,還是盡量避免使用OR查詢。
問題5:大資料查詢手動停止導致mycat服務癱瘓不可用【已解決】
大資料表或全表查詢 :查詢過程中手動停止會有問題(可以等待自動逾時), 手動停止後mycat服務雖然保持但是實際上已經不對外提供服務了 ,這就是為什麼服務存活而連不上的原因 , BUG處理方式請參考: mycat issue 1616。