今天就來測試一下,在mongodb上層使用mycat代理,
關於mycat的安裝這裏就不說了,mongodb的環境使用上次搭建的集羣環境,至於集羣怎麼搭建,如下:
https://blog.csdn.net/shiyu1157758655/article/details/106498801
直接配置mycat
server.xml配置,只需要添加下面這一段配置,這裏readOnly 代表只讀
<user name="mongo_ro">
<property name="password">mongo_ro@123</property>
<property name="schemas">yuhua,yuhuashi</property>
<property name="benchmark">6000</property>
<property name="readOnly">true</property>
</user>
schema.xml 配置:
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema dataNode="yuhua" sqlMaxLimit="100" checkSQLschema="true" name="yuhua"></schema>
<schema dataNode="yuhuashi" sqlMaxLimit="100" checkSQLschema="true" name="yuhuashi"></schema>
<!-- <dataNode name="dn1$0-743" dataHost="localhost1" database="db$0-743"
/> -->
<dataNode name="yuhua" dataHost="mongodb" database="yuhua" />
<dataNode name="yuhuashi" dataHost="mongodb" database="yuhuashi" />
<!--<dataNode name="dn4" dataHost="sequoiadb1" database="SAMPLE" />
<dataNode name="jdbc_dn1" dataHost="jdbchost" database="db1" />
<dataNode name="jdbc_dn2" dataHost="jdbchost" database="db2" />
<dataNode name="jdbc_dn3" dataHost="jdbchost" database="db3" /> -->
<dataHost name="mongodb" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mongodb" dbDriver="jdbc" switchType="-1" >
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<readHost host="172.100.1.35" url="mongodb://172.100.1.35:27017/" >
</readHost>
<!-- <writeHost host="" url="localhost:3316" user="root" password="123456"/> -->
</dataHost>
</mycat:schema>
其中user和password 必須要提供,因爲之前搭建的測試環境是不需要認證的,這裏就自己創建一個用戶:
mongos> use admin
switched to db admin
mongos> db.createUser({ user: "root", pwd: "123456", roles: [ { role: "root", db: "admin"} ]});
最後啓動mycat
可以像mysql一樣操作mongo,不過這裏遇到一個奇怪的問題,就是show tables的時候 show 不出來mongodb的collection,但是查詢倒是可以查詢出來。如果有知道原因的還請不吝賜教!!