sharding-proxy 分庫分表、讀寫分離,它和mycat類似,屬於中介軟體**層,它類似乙個資料庫,**後面的分庫分表的多個資料庫,它遮蔽了後端多個資料庫的複雜性,應用開發時直接連線 sharding-proxy 即可
如果使用docker,可以執行docker pull shardingsphere/sharding-proxy
獲取映象。詳細資訊請參考docker映象。
解壓縮後修改conf/server.yaml和以config-字首開頭的檔案,如:conf/config-***.yaml檔案,進行分片規則、讀寫分離規則配置. 配置方式請參考配置手冊。
把檔案裡的配置的 # 注釋開啟,改為符合自己的配置
例子:authentication:
username: root
password: 123456
props:
#max.connections.size.per.query: 1
acceptor.size: 8 # 用於設定接收客戶端請求的工作執行緒個數,預設為cpu核數*2
executor.size: 4 # 工作執行緒數量,預設值: cpu核數
proxy.transaction.type: xa
proxy.transaction.enabled: true # 是否開啟事務, 目前僅支援xa事務,預設為不開啟
proxy.opentracing.enabled: false # 是否開啟鏈路追蹤功能,預設為不開啟
sql.show: true # 是否開啟sql顯示,預設值: false
開啟 config-sharding.yaml
例子如下:
schemaname: sharding_db
datasources:
person:
url: jdbc:mysql:
username: root
password: 123456
#connectiontimeoutmilliseconds: 30000
#idletimeoutmilliseconds: 60000
#maxlifetimemilliseconds: 1800000
#maxpoolsize: 50
autocommit: true
connectiontimeout: 30000
idletimeout: 60000
maxlifetime: 1800000
maximumpoolsize: 5
shardingrule:
tables:
t_user:
actualdatanodes: person.t_user$->
tablestrategy:
inline:
shardingcolumn: id
algorithmexpression: t_user$->
keygeneratorcolumnname: id
keygeneratorclassname: com.xx.base.idgenerator.shardingkeygenerator
#預設自增列值生成器類名稱
defaultkeygeneratorclassname: io.shardingsphere.core.keygen.defaultkeygenerator
注意:有坑
sharding-proxy3.0版本(目前沒有看到有更新),分布id實現類defaultkeygenerator,但官方分布式id生成器實現類defaultkeygenerator,在業務量不大的情況下,snowflake生成的id序列號部分大多都是0,所以通過這個分步式id通過取模hash分庫,導致資料全落入單庫中,資料分布不平均,需要自己實現重寫內部雪花演算法。shardingkeygenerator這個類式自己實現,分步式id分布均勻。核心**實現如下:
private static byte sequenceoffset;
private void vibratesequenceoffset()
linux作業系統請執行bin/start.sh
,windows作業系統請執行bin/start.bat
啟動sharding-proxy。如需配置啟動埠、配置檔案位置,可參考快速入門 進行啟動。
使用任何mysql的客戶端連線。如:mysql -u root -h 127.0.0.1 -p 3307
以springboot專案為例
com.alibaba
druid-spring-boot-starter
1.1.9
io.shardingsphere
sharding-transaction-spring
3.1.0
org.springframework.boot
spring-boot-starter-aop
spring.datasource.type=com.alibaba.druid.pool.druiddatasource
spring.datasource.driver-class-name=com.mysql.jdbc.driver
spring.datasource.url=jdbc:mysql://localhost:3307/sharding_db?useserverprepstmts=true&cacheprepstmts=true
spring.datasource.username=root
spring.datasource.password=123456
#spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.driver
#初始化時建立物理連線的個數
spring.datasource.druid.initial-size=3
#最小連線池數量
spring.datasource.druid.min-idle=3
#最大連線池數量
spring.datasource.druid.max-active=10
#獲取連線時最大等待時間
spring.datasource.druid.max-wait=60000
分庫備份 分庫恢復
由於一台mysql資料庫伺服器上有多個資料庫,所以在考慮備份的時候也將多個庫分開進行,以便在單個庫出現問題時恢復。一 分庫備份 1 可以乙個庫對應一條備份語句,如 mysqldump s home mysql run mysql.socket uroot p123456 single transac...
mysql分庫備份 MySQL分庫備份與分表備份
mysql分庫備份與分表備份 1 分庫備份 要求 將mysql資料庫中的使用者資料庫備份,備份的資料庫檔案以時間命名 指令碼內容如下 root db01 scripts vim backup database.sh bin bash mysql user root mysql pass 123456...
sql server 分庫合併
參考 sqlserver 伺服器架構遷移 2,sql server 中心訂閱模型 多發布單訂閱 思路 是 分庫建立發布,然後新伺服器訂閱所有分庫進行資料彙總 需要注意 分庫建立發布的時候 1,分庫的發布還是需要做sid 的篩選 2,選擇設定所有表,設定屬性 名稱已被使用時的操作 為 刪除資料,如果目...