有两种主从,一种是全局主从,一种是分片主从。

全局主从

  1. spring:
  2. shardingsphere:
  3. datasource:
  4. ds0:
  5. type: com.alibaba.druid.pool.DruidDataSource
  6. url: jdbc:mysql://localhost:3306/sharding?characterEncoding=utf-8
  7. username: root
  8. password: root
  9. ds1:
  10. type: com.alibaba.druid.pool.DruidDataSource
  11. url: jdbc:mysql://localhost:3306/sharding1?characterEncoding=utf-8
  12. username: root
  13. password: root
  14. names: ds0,ds1
  15. masterslave:
  16. name: ms
  17. load-balance-algorithm-type: round_robin
  18. master-data-source-name: ds0
  19. slave-data-source-names: ds1

注意配置全局主从后,分片规则将失效。添加、更新以及删除数据操作所使用的数据库,目前仅支持单主库。查询数据操作所使用的数据库,可支持多从库。

分片主从

  1. spring:
  2. shardingsphere:
  3. datasource:
  4. master0:
  5. driver-class-name: com.mysql.jdbc.Driver
  6. password: ''
  7. type: org.apache.commons.dbcp.BasicDataSource
  8. url: jdbc:mysql://localhost:3306/master0
  9. username: root
  10. master0slave0:
  11. driver-class-name: com.mysql.jdbc.Driver
  12. password: ''
  13. type: org.apache.commons.dbcp.BasicDataSource
  14. url: jdbc:mysql://localhost:3306/master0slave0
  15. username: root
  16. master0slave1:
  17. driver-class-name: com.mysql.jdbc.Driver
  18. password: ''
  19. type: org.apache.commons.dbcp.BasicDataSource
  20. url: jdbc:mysql://localhost:3306/master0slave1
  21. username: root
  22. master1:
  23. driver-class-name: com.mysql.jdbc.Driver
  24. password: ''
  25. type: org.apache.commons.dbcp.BasicDataSource
  26. url: jdbc:mysql://localhost:3306/master1
  27. username: root
  28. master1slave0:
  29. driver-class-name: com.mysql.jdbc.Driver
  30. password: ''
  31. type: org.apache.commons.dbcp.BasicDataSource
  32. url: jdbc:mysql://localhost:3306/master1slave0
  33. username: root
  34. master1slave1:
  35. driver-class-name: com.mysql.jdbc.Driver
  36. password: ''
  37. type: org.apache.commons.dbcp.BasicDataSource
  38. url: jdbc:mysql://localhost:3306/master1slave1
  39. username: root
  40. names: master0,master1,master0slave0,master0slave1,master1slave0,master1slave1
  41. sharding:
  42. binding-tables: t_order,t_order_item
  43. broadcast-tables: t_config
  44. default-database-strategy:
  45. inline:
  46. algorithm-expression: master$->{user_id % 2}
  47. sharding-column: user_id
  48. master-slave-rules:
  49. ds0:
  50. master-data-source-name: master0
  51. slave-data-source-names: master0slave0, master0slave1
  52. ds1:
  53. master-data-source-name: master1
  54. slave-data-source-names: master1slave0, master1slave1
  55. tables:
  56. t_order:
  57. actual-data-nodes: ds$->{0..1}.t_order$->{0..1}
  58. key-generator:
  59. column: order_id
  60. type: SNOWFLAKE
  61. table-strategy:
  62. inline:
  63. algorithm-expression: t_order$->{order_id % 2}
  64. sharding-column: order_id
  65. t_order_item:
  66. actual-data-nodes: ds$->{0..1}.t_order_item$->{0..1}
  67. key-generator:
  68. column: order_item_id
  69. type: SNOWFLAKE
  70. table-strategy:
  71. inline:
  72. algorithm-expression: t_order_item$->{order_id % 2}
  73. sharding-column: order_id