1、分库分表策略: 如每个数据记录属于一个集团ID、属于一个店铺ID列,可以根据集团ID%数据库数量取余设置规则分片键,及设置用哪个数据库和哪个表。 同现可以使用数据记录中的一列作为 分库、分表的分片键 如订单表中 order_id 等都可以。
用于分片的数据库字段。我们将 表分片以后,当执行一条SQL时,通过对字段 店铺ID、集团ID取模的方式来决定,这条数据该在哪个数据库中的哪个表中执行,此时 字段就是 表的分片健。
下面是具体的springboot使用 sharding -jdbc 配置文件,可以根据具体置文件进行理解。
mybatis-plus: mapper-locations: classpath:mapper/*.xml #实体扫描,多个package用逗号或者分号分隔 #typeAliasesPackage: com.hualala.poshealth #字段策略 global-config: db-config: insert-strategy: not_null update-strategy: not_null #逻辑删除 logic-not-delete-value: 0 logic-delete-value: 1 #驼峰下划线转换 configuration: map-underscore-to-camel-case: true #日志 log-impl: org.apache.ibatis.logging.stdout.StdOutImpl logging: file: path: classpath:logback.xml levels: info sharding: jdbc: datasource: names: soul0,soul1 # 数据库 分布信息 soul0: jdbcUrl: jdbc:mysql://xxxxx.com:3306/db_pos_health_0?useUnicode=true&characterEncoding=utf8&autoReconnectForPools=true&socketTimeout=60000&useLocalSessionState=true username: abc password: 123 type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.mysql.cj.jdbc.Driver # 初始连接数 initialSize: 5 # 最小连接数 minIdle: 5 # 最大连接池数量 maxActive: 100 # 配置获取连接等待超时的时间 maxWait: 60000 # 用来检测连接是否有效的sql validationQuery: SELECT 1 FROM DUAL # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 timeBetweenEvictionRunsMillis: 60000 # 配置一个连接在池中最小生存的时间,单位是毫秒 minEvictableIdleTimeMillis: 300000 soul1: jdbcUrl: jdbc:mysql://xxx.com:3306/db_pos_health_1?useUnicode=true&characterEncoding=utf8&autoReconnectForPools=true&socketTimeout=60000&useLocalSessionState=true username: abc password: 123 type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.mysql.cj.jdbc.Driver # 初始连接数 initialSize: 5 # 最小连接数 minIdle: 5 # 最大连接池数量 maxActive: 100 # 配置获取连接等待超时的时间 maxWait: 60000 # 用来检测连接是否有效的sql validationQuery: SELECT 1 FROM DUAL # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 timeBetweenEvictionRunsMillis: 60000 # 配置一个连接在池中最小生存的时间,单位是毫秒 minEvictableIdleTimeMillis: 300000 config: sharding: tables: tbl_client_report_base: # 客户端信息,无需分库分表 actual-nodes: soul0.tbl_client_report_base # 指定主库中唯一的表节点 database-strategy: none: # 分片策略为none sharding-column: none # 分片键为none table-strategy: none: # 分片策略为none sharding-column: none # 分片键为none #keyGeneratorColumnName: base_id tbl_login_info: # 登录信息,无需分库分表 actual-nodes: soul0.tbl_login_info # 指定主库中唯一的表节点 database-strategy: none: # 分片策略为none sharding-column: none # 分片键为none table-strategy: none: # 分片策略为none sharding-column: none # 分片键为none #keyGeneratorColumnName: base_id tbl_collection_client: # 用户收藏,无需分库分表 actual-nodes: soul0.tbl_collection_client # 指定主库中唯一的表节点 database-strategy: none: # 分片策略为none sharding-column: none # 分片键为none table-strategy: none: # 分片策略为none sharding-column: none # 分片键为none tbl_client_control_msg: #远程控制信息 actual-data-nodes: soul${0..1}.tbl_client_control_msg${0..1} table-strategy: inline: sharding-column: group_id algorithm-expression: tbl_client_control_msg${group_id % 2} database-strategy: #分库策略 inline: #行表达式 sharding-column: shop_id #列名称,多个列以逗号分隔 algorithm-expression: soul${shop_id % 2} #按模运算分配 tbl_operate_log: #操作记录 actual-data-nodes: soul${0..1}.tbl_operate_log${0..4} table-strategy: inline: sharding-column: group_id algorithm-expression: tbl_operate_log${group_id % 5} database-strategy: #分库策略 inline: #行表达式 sharding-column: shop_id #列名称,多个列以逗号分隔 algorithm-expression: soul${shop_id % 2} #按模运算分配 default-database-strategy: inline: sharding-column: shop_id algorithm-expression: soul${shop_id % 2} binding-tables: tbl_client_report_base,tbl_client_control_msg,tbl_login_info,tbl_collection_client,tbl_operate_log broadcastTables: tbl_client_report_base,tbl_collection_client,tbl_login_info # 广播表 default-data-source-name: soul0 # 库分片策略为none时一定要设置默认数据源,否则应用无法启动
如有问题可以一起沟通讨论。
标签:none,JDBC,配置文件,boot,strategy,tbl,分片,sharding,id From: https://www.cnblogs.com/liyanbofly/p/16938777.html