配置文件要點
分庫分表 :
參考 官網 得出總結如下。主要就是策略(strategy)的前綴。還是歸類的很清晰的。
- 針對 一個entity 分庫 :spring.shardingsphere.sharding.tables.user.database-strategy.inline.sharding-column=id
- 針對 一個entity 分表 :spring.shardingsphere.sharding.tables.user.table-strategy.inline.sharding-column=id
- 默認所有entity 分庫 :s pring.shardingsphere.sharding.default-database-strategy.inline.sharding-column=id
主從 :
- 一組 主從構成一個 dbX :
- spring.shardingsphere.sharding.master-slave-rules.ds0.master-data-source-name=master1
- spring.shardingsphere.sharding.master-slave-rules.ds0.slave-data-source-names=master1slave1, master1slave2
- 分片(分庫分表) 直接對接 dbX。
jdbcUrl is required with driverClassName.
詳情 : Caused by: java.lang.IllegalArgumentException: jdbcUrl is required with driverClassName.
at com.zaxxer.hikari.HikariConfig.validate(HikariConfig.java:954)。
將官網 …{master1}.url 改爲 GitHub示例 {master1}.jdbc-url
Sharding-Proxy 一直報錯 .IllegalStateException: Can not find any sharding rule configuration file in path `/opt/sharding-proxy/conf`
第一眼以爲自己的配置錯了,使勁找,嘗試性的改改,沒有用。最後看 源碼 發現是拿正則匹配的文件名 寫死的 yaml 。哎 Fuck。自己寫的是yml文件後綴。
Sharding-Proxy ShardingException: Cannot load JDBC driver class `com.mysql.jdbc.Driver`, make sure it in Sharding-Proxy’s classpath
docker 環境 MySQL 驅動 放到ext_lib下不好使,直接mv到lib下。
ShardingException: Can not update sharding key, logic table: [user_log]
直議 : 不能更新 分片的列
看代碼發現 update 的邏輯是 分片的列必須在where條件裏 並且必須同 更新的值相同。