分库分表功能提交
parent
9af2038efa
commit
ed9c56d7ac
@ -0,0 +1,125 @@
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
######################################################################################################
|
||||
#
|
||||
# Here you can configure the rules for the proxy.
|
||||
# This example is configuration of HA rule.
|
||||
#
|
||||
######################################################################################################
|
||||
#
|
||||
#schemaName: database_discovery_db
|
||||
#
|
||||
#dataSources:
|
||||
# primary_ds:
|
||||
# url: jdbc:postgresql://127.0.0.1:5432/demo_primary_ds
|
||||
# username: postgres
|
||||
# password: postgres
|
||||
# connectionTimeoutMilliseconds: 3000
|
||||
# idleTimeoutMilliseconds: 60000
|
||||
# maxLifetimeMilliseconds: 1800000
|
||||
# maxPoolSize: 50
|
||||
# minPoolSize: 1
|
||||
# replica_ds_0:
|
||||
# url: jdbc:postgresql://127.0.0.1:5432/demo_replica_ds_0
|
||||
# username: postgres
|
||||
# password: postgres
|
||||
# connectionTimeoutMilliseconds: 3000
|
||||
# idleTimeoutMilliseconds: 60000
|
||||
# maxLifetimeMilliseconds: 1800000
|
||||
# maxPoolSize: 50
|
||||
# minPoolSize: 1
|
||||
# replica_ds_1:
|
||||
# url: jdbc:postgresql://127.0.0.1:5432/demo_replica_ds_1
|
||||
# username: postgres
|
||||
# password: postgres
|
||||
# connectionTimeoutMilliseconds: 3000
|
||||
# idleTimeoutMilliseconds: 60000
|
||||
# maxLifetimeMilliseconds: 1800000
|
||||
# maxPoolSize: 50
|
||||
# minPoolSize: 1
|
||||
#
|
||||
#rules:
|
||||
#- !DB_DISCOVERY
|
||||
# dataSources:
|
||||
# pr_ds:
|
||||
# dataSourceNames:
|
||||
# - ds_0
|
||||
# - ds_1
|
||||
# - ds_2
|
||||
# discoveryTypeName: mgr
|
||||
# discoveryTypes:
|
||||
# mgr:
|
||||
# type: MGR
|
||||
# props:
|
||||
# groupName: 92504d5b-6dec-11e8-91ea-246e9612aaf1
|
||||
# zkServerLists: 'localhost:2181'
|
||||
# keepAliveCron: '0/5 * * * * ?'
|
||||
|
||||
######################################################################################################
|
||||
#
|
||||
# If you want to connect to MySQL, you should manually copy MySQL driver to lib directory.
|
||||
#
|
||||
######################################################################################################
|
||||
|
||||
#schemaName: database_discovery_db
|
||||
#
|
||||
#dataSources:
|
||||
# ds_0:
|
||||
# url: jdbc:mysql://127.0.0.1:3306/demo_primary_ds?serverTimezone=UTC&useSSL=false
|
||||
# username: root
|
||||
# password:
|
||||
# connectionTimeoutMilliseconds: 3000
|
||||
# idleTimeoutMilliseconds: 60000
|
||||
# maxLifetimeMilliseconds: 1800000
|
||||
# maxPoolSize: 50
|
||||
# minPoolSize: 1
|
||||
# ds_1:
|
||||
# url: jdbc:mysql://127.0.0.1:3306/demo_replica_ds_0?serverTimezone=UTC&useSSL=false
|
||||
# username: root
|
||||
# password:
|
||||
# connectionTimeoutMilliseconds: 3000
|
||||
# idleTimeoutMilliseconds: 60000
|
||||
# maxLifetimeMilliseconds: 1800000
|
||||
# maxPoolSize: 50
|
||||
# minPoolSize: 1
|
||||
# ds_2:
|
||||
# url: jdbc:mysql://127.0.0.1:3306/demo_replica_ds_1?serverTimezone=UTC&useSSL=false
|
||||
# username: root
|
||||
# password:
|
||||
# connectionTimeoutMilliseconds: 3000
|
||||
# idleTimeoutMilliseconds: 60000
|
||||
# maxLifetimeMilliseconds: 1800000
|
||||
# maxPoolSize: 50
|
||||
# minPoolSize: 1
|
||||
#
|
||||
#rules:
|
||||
#- !DB_DISCOVERY
|
||||
# dataSources:
|
||||
# pr_ds:
|
||||
# dataSourceNames:
|
||||
# - ds_0
|
||||
# - ds_1
|
||||
# - ds_2
|
||||
# discoveryTypeName: mgr
|
||||
# discoveryTypes:
|
||||
# mgr:
|
||||
# type: MGR
|
||||
# props:
|
||||
# groupName: 92504d5b-6dec-11e8-91ea-246e9612aaf1
|
||||
# zkServerLists: 'localhost:2181'
|
||||
# keepAliveCron: '0/5 * * * * ?'
|
@ -0,0 +1,113 @@
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
######################################################################################################
|
||||
#
|
||||
# Here you can configure the rules for the proxy.
|
||||
# This example is configuration of encrypt rule.
|
||||
#
|
||||
######################################################################################################
|
||||
#
|
||||
#schemaName: encrypt_db
|
||||
#
|
||||
#dataSources:
|
||||
# ds_0:
|
||||
# url: jdbc:postgresql://127.0.0.1:5432/demo_ds_0
|
||||
# username: postgres
|
||||
# password: postgres
|
||||
# connectionTimeoutMilliseconds: 30000
|
||||
# idleTimeoutMilliseconds: 60000
|
||||
# maxLifetimeMilliseconds: 1800000
|
||||
# maxPoolSize: 50
|
||||
# minPoolSize: 1
|
||||
# ds_1:
|
||||
# url: jdbc:postgresql://127.0.0.1:5432/demo_ds_1
|
||||
# username: postgres
|
||||
# password: postgres
|
||||
# connectionTimeoutMilliseconds: 30000
|
||||
# idleTimeoutMilliseconds: 60000
|
||||
# maxLifetimeMilliseconds: 1800000
|
||||
# maxPoolSize: 50
|
||||
# minPoolSize: 1
|
||||
#
|
||||
#rules:
|
||||
#- !ENCRYPT
|
||||
# encryptors:
|
||||
# aes_encryptor:
|
||||
# type: AES
|
||||
# props:
|
||||
# aes-key-value: 123456abc
|
||||
# md5_encryptor:
|
||||
# type: MD5
|
||||
# tables:
|
||||
# t_encrypt:
|
||||
# columns:
|
||||
# user_id:
|
||||
# plainColumn: user_plain
|
||||
# cipherColumn: user_cipher
|
||||
# encryptorName: aes_encryptor
|
||||
# order_id:
|
||||
# cipherColumn: order_encrypt
|
||||
# encryptorName: md5_encryptor
|
||||
|
||||
######################################################################################################
|
||||
#
|
||||
# If you want to connect to MySQL, you should manually copy MySQL driver to lib directory.
|
||||
#
|
||||
######################################################################################################
|
||||
#
|
||||
#schemaName: encrypt_db
|
||||
#
|
||||
#dataSources:
|
||||
# ds_0:
|
||||
# url: jdbc:mysql://127.0.0.1:3306/demo_ds_0?serverTimezone=UTC&useSSL=false
|
||||
# username: root
|
||||
# password:
|
||||
# connectionTimeoutMilliseconds: 30000
|
||||
# idleTimeoutMilliseconds: 60000
|
||||
# maxLifetimeMilliseconds: 1800000
|
||||
# maxPoolSize: 50
|
||||
# minPoolSize: 1
|
||||
# ds_1:
|
||||
# url: jdbc:mysql://127.0.0.1:3306/demo_ds_1?serverTimezone=UTC&useSSL=false
|
||||
# username: root
|
||||
# password:
|
||||
# connectionTimeoutMilliseconds: 30000
|
||||
# idleTimeoutMilliseconds: 60000
|
||||
# maxLifetimeMilliseconds: 1800000
|
||||
# maxPoolSize: 50
|
||||
# minPoolSize: 1
|
||||
#
|
||||
#rules:
|
||||
#- !ENCRYPT
|
||||
# encryptors:
|
||||
# aes_encryptor:
|
||||
# type: AES
|
||||
# props:
|
||||
# aes-key-value: 123456abc
|
||||
# md5_encryptor:
|
||||
# type: MD5
|
||||
# tables:
|
||||
# t_encrypt:
|
||||
# columns:
|
||||
# user_id:
|
||||
# plainColumn: user_plain
|
||||
# cipherColumn: user_cipher
|
||||
# encryptorName: aes_encryptor
|
||||
# order_id:
|
||||
# cipherColumn: order_cipher
|
||||
# encryptorName: md5_encryptor
|
@ -0,0 +1,109 @@
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
######################################################################################################
|
||||
#
|
||||
# Here you can configure the rules for the proxy.
|
||||
# This example is configuration of replica-query rule.
|
||||
#
|
||||
######################################################################################################
|
||||
#
|
||||
#schemaName: readwrite_splitting_db
|
||||
#
|
||||
#dataSources:
|
||||
# primary_ds:
|
||||
# url: jdbc:postgresql://127.0.0.1:5432/demo_primary_ds
|
||||
# username: postgres
|
||||
# password: postgres
|
||||
# connectionTimeoutMilliseconds: 30000
|
||||
# idleTimeoutMilliseconds: 60000
|
||||
# maxLifetimeMilliseconds: 1800000
|
||||
# maxPoolSize: 50
|
||||
# minPoolSize: 1
|
||||
# replica_ds_0:
|
||||
# url: jdbc:postgresql://127.0.0.1:5432/demo_replica_ds_0
|
||||
# username: postgres
|
||||
# password: postgres
|
||||
# connectionTimeoutMilliseconds: 30000
|
||||
# idleTimeoutMilliseconds: 60000
|
||||
# maxLifetimeMilliseconds: 1800000
|
||||
# maxPoolSize: 50
|
||||
# minPoolSize: 1
|
||||
# replica_ds_1:
|
||||
# url: jdbc:postgresql://127.0.0.1:5432/demo_replica_ds_1
|
||||
# username: postgres
|
||||
# password: postgres
|
||||
# connectionTimeoutMilliseconds: 30000
|
||||
# idleTimeoutMilliseconds: 60000
|
||||
# maxLifetimeMilliseconds: 1800000
|
||||
# maxPoolSize: 50
|
||||
# minPoolSize: 1
|
||||
#
|
||||
#rules:
|
||||
#- !READWRITE_SPLITTING
|
||||
# dataSources:
|
||||
# pr_ds:
|
||||
# writeDataSourceName: primary_ds
|
||||
# readDataSourceNames:
|
||||
# - replica_ds_0
|
||||
# - replica_ds_1
|
||||
|
||||
######################################################################################################
|
||||
#
|
||||
# If you want to connect to MySQL, you should manually copy MySQL driver to lib directory.
|
||||
#
|
||||
######################################################################################################
|
||||
|
||||
#schemaName: readwrite_splitting_db
|
||||
#
|
||||
#dataSources:
|
||||
# write_ds:
|
||||
# url: jdbc:mysql://127.0.0.1:3306/demo_write_ds?serverTimezone=UTC&useSSL=false
|
||||
# username: root
|
||||
# password:
|
||||
# connectionTimeoutMilliseconds: 30000
|
||||
# idleTimeoutMilliseconds: 60000
|
||||
# maxLifetimeMilliseconds: 1800000
|
||||
# maxPoolSize: 50
|
||||
# minPoolSize: 1
|
||||
# read_ds_0:
|
||||
# url: jdbc:mysql://127.0.0.1:3306/demo_read_ds_0?serverTimezone=UTC&useSSL=false
|
||||
# username: root
|
||||
# password:
|
||||
# connectionTimeoutMilliseconds: 30000
|
||||
# idleTimeoutMilliseconds: 60000
|
||||
# maxLifetimeMilliseconds: 1800000
|
||||
# maxPoolSize: 50
|
||||
# minPoolSize: 1
|
||||
# read_ds_1:
|
||||
# url: jdbc:mysql://127.0.0.1:3306/demo_read_ds_1?serverTimezone=UTC&useSSL=false
|
||||
# username: root
|
||||
# password:
|
||||
# connectionTimeoutMilliseconds: 30000
|
||||
# idleTimeoutMilliseconds: 60000
|
||||
# maxLifetimeMilliseconds: 1800000
|
||||
# maxPoolSize: 50
|
||||
# minPoolSize: 1
|
||||
#
|
||||
#rules:
|
||||
#- !READWRITE_SPLITTING
|
||||
# dataSources:
|
||||
# pr_ds:
|
||||
# writeDataSourceName: write_ds
|
||||
# readDataSourceNames:
|
||||
# - read_ds_0
|
||||
# - read_ds_1
|
@ -0,0 +1,179 @@
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
######################################################################################################
|
||||
#
|
||||
# Here you can configure the rules for the proxy.
|
||||
# This example is configuration of shadow rule.
|
||||
#
|
||||
######################################################################################################
|
||||
#
|
||||
#schemaName: shadow_db
|
||||
#
|
||||
#dataSources:
|
||||
# ds:
|
||||
# url: jdbc:postgresql://127.0.0.1:5432/demo_ds_0
|
||||
# username: postgres
|
||||
# password: postgres
|
||||
# connectionTimeoutMilliseconds: 30000
|
||||
# idleTimeoutMilliseconds: 60000
|
||||
# maxLifetimeMilliseconds: 1800000
|
||||
# maxPoolSize: 50
|
||||
# minPoolSize: 1
|
||||
# shadow_ds:
|
||||
# url: jdbc:postgresql://127.0.0.1:5432/demo_ds_1
|
||||
# username: postgres
|
||||
# password: postgres
|
||||
# connectionTimeoutMilliseconds: 30000
|
||||
# idleTimeoutMilliseconds: 60000
|
||||
# maxLifetimeMilliseconds: 1800000
|
||||
# maxPoolSize: 50
|
||||
# minPoolSize: 1
|
||||
#
|
||||
#rules:
|
||||
#- !SHADOW
|
||||
# enable: true
|
||||
# dataSources:
|
||||
# shadowDataSource:
|
||||
# sourceDataSourceName: ds
|
||||
# shadowDataSourceName: shadow_ds
|
||||
# tables:
|
||||
# t_order:
|
||||
# dataSourceNames:
|
||||
# - shadowDataSource
|
||||
# shadowAlgorithmNames:
|
||||
# - user-id-insert-match-algorithm
|
||||
# - user-id-select-match-algorithm
|
||||
# t_order_item:
|
||||
# dataSourceNames:
|
||||
# - shadowDataSource
|
||||
# shadowAlgorithmNames:
|
||||
# - user-id-insert-match-algorithm
|
||||
# - user-id-update-match-algorithm
|
||||
# - user-id-select-match-algorithm
|
||||
# t_address:
|
||||
# dataSourceNames:
|
||||
# - shadowDataSource
|
||||
# shadowAlgorithmNames:
|
||||
# - user-id-insert-match-algorithm
|
||||
# - user-id-select-match-algorithm
|
||||
# - simple-note-algorithm
|
||||
# shadowAlgorithms:
|
||||
# user-id-insert-match-algorithm:
|
||||
# type: COLUMN_REGEX_MATCH
|
||||
# props:
|
||||
# operation: insert
|
||||
# column: user_id
|
||||
# regex: "[1]"
|
||||
# user-id-update-match-algorithm:
|
||||
# type: COLUMN_REGEX_MATCH
|
||||
# props:
|
||||
# operation: update
|
||||
# column: user_id
|
||||
# regex: "[1]"
|
||||
# user-id-select-match-algorithm:
|
||||
# type: COLUMN_REGEX_MATCH
|
||||
# props:
|
||||
# operation: select
|
||||
# column: user_id
|
||||
# regex: "[1]"
|
||||
# simple-note-algorithm:
|
||||
# type: SIMPLE_NOTE
|
||||
# props:
|
||||
# shadow: true
|
||||
# foo: bar
|
||||
|
||||
######################################################################################################
|
||||
#
|
||||
# If you want to connect to MySQL, you should manually copy MySQL driver to lib directory.
|
||||
#
|
||||
######################################################################################################
|
||||
#
|
||||
#schemaName: shadow_db
|
||||
#
|
||||
#dataSources:
|
||||
# ds:
|
||||
# url: jdbc:mysql://127.0.0.1:3306/demo_ds_0?serverTimezone=UTC&useSSL=false
|
||||
# username: root
|
||||
# password:
|
||||
# connectionTimeoutMilliseconds: 30000
|
||||
# idleTimeoutMilliseconds: 60000
|
||||
# maxLifetimeMilliseconds: 1800000
|
||||
# maxPoolSize: 50
|
||||
# minPoolSize: 1
|
||||
# shadow_ds:
|
||||
# url: jdbc:mysql://127.0.0.1:3306/demo_ds_1?serverTimezone=UTC&useSSL=false
|
||||
# username: root
|
||||
# password:
|
||||
# connectionTimeoutMilliseconds: 30000
|
||||
# idleTimeoutMilliseconds: 60000
|
||||
# maxLifetimeMilliseconds: 1800000
|
||||
# maxPoolSize: 50
|
||||
# minPoolSize: 1
|
||||
#
|
||||
#rules:
|
||||
#- !SHADOW
|
||||
# enable: true
|
||||
# dataSources:
|
||||
# shadowDataSource:
|
||||
# sourceDataSourceName: ds
|
||||
# shadowDataSourceName: shadow_ds
|
||||
# tables:
|
||||
# t_order:
|
||||
# dataSourceNames:
|
||||
# - shadowDataSource
|
||||
# shadowAlgorithmNames:
|
||||
# - user-id-insert-match-algorithm
|
||||
# - user-id-select-match-algorithm
|
||||
# t_order_item:
|
||||
# dataSourceNames:
|
||||
# - shadowDataSource
|
||||
# shadowAlgorithmNames:
|
||||
# - user-id-insert-match-algorithm
|
||||
# - user-id-update-match-algorithm
|
||||
# - user-id-select-match-algorithm
|
||||
# t_address:
|
||||
# dataSourceNames:
|
||||
# - shadowDataSource
|
||||
# shadowAlgorithmNames:
|
||||
# - user-id-insert-match-algorithm
|
||||
# - user-id-select-match-algorithm
|
||||
# - simple-note-algorithm
|
||||
# shadowAlgorithms:
|
||||
# user-id-insert-match-algorithm:
|
||||
# type: COLUMN_REGEX_MATCH
|
||||
# props:
|
||||
# operation: insert
|
||||
# column: user_id
|
||||
# regex: "[1]"
|
||||
# user-id-update-match-algorithm:
|
||||
# type: COLUMN_REGEX_MATCH
|
||||
# props:
|
||||
# operation: update
|
||||
# column: user_id
|
||||
# regex: "[1]"
|
||||
# user-id-select-match-algorithm:
|
||||
# type: COLUMN_REGEX_MATCH
|
||||
# props:
|
||||
# operation: select
|
||||
# column: user_id
|
||||
# regex: "[1]"
|
||||
# simple-note-algorithm:
|
||||
# type: SIMPLE_NOTE
|
||||
# props:
|
||||
# shadow: true
|
||||
# foo: bar
|
@ -0,0 +1,84 @@
|
||||
######################################################################################################
|
||||
#
|
||||
# 用于配置:数据分片规则
|
||||
#
|
||||
######################################################################################################
|
||||
|
||||
schemaName: data-center_db
|
||||
|
||||
dataSources:
|
||||
ds_0:
|
||||
url: jdbc:mysql://192.168.0.60:3306/data-center_0?serverTimezone=UTC&useSSL=false
|
||||
username: root
|
||||
password: root
|
||||
connectionTimeoutMilliseconds: 30000
|
||||
idleTimeoutMilliseconds: 60000
|
||||
maxLifetimeMilliseconds: 1800000
|
||||
maxPoolSize: 50
|
||||
minPoolSize: 1
|
||||
ds_1:
|
||||
url: jdbc:mysql://192.168.0.60:3306/data-center_1?serverTimezone=UTC&useSSL=false
|
||||
username: root
|
||||
password: root
|
||||
connectionTimeoutMilliseconds: 30000
|
||||
idleTimeoutMilliseconds: 60000
|
||||
maxLifetimeMilliseconds: 1800000
|
||||
maxPoolSize: 50
|
||||
minPoolSize: 1
|
||||
|
||||
rules:
|
||||
- !SHARDING
|
||||
tables: # 数据分片规则配置
|
||||
t_order: # 订单逻辑表名称
|
||||
actualDataNodes: ds_${0..1}.t_order_${0..1}
|
||||
databaseStrategy: # 配置分库策略
|
||||
standard:
|
||||
shardingColumn: user_id
|
||||
shardingAlgorithmName: database_user_inline
|
||||
tableStrategy: # 分表策略
|
||||
standard:
|
||||
shardingColumn: order_id
|
||||
shardingAlgorithmName: t_order_inline
|
||||
keyGenerateStrategy:
|
||||
column: order_id
|
||||
keyGeneratorName: snowflake
|
||||
t_order_item: # 子订单逻辑表名称
|
||||
actualDataNodes: ds_${0..1}.t_order_item_${0..1}
|
||||
databaseStrategy: # 配置分库策略
|
||||
standard:
|
||||
shardingColumn: user_id
|
||||
shardingAlgorithmName: database_user_inline
|
||||
tableStrategy: # 分表策略
|
||||
standard:
|
||||
shardingColumn: order_id
|
||||
shardingAlgorithmName: t_order_item_inline
|
||||
keyGenerateStrategy:
|
||||
column: order_item_id
|
||||
keyGeneratorName: snowflake
|
||||
bindingTables: # 绑定表规则列表
|
||||
- t_order,t_order_item
|
||||
|
||||
# 分片算法配置
|
||||
shardingAlgorithms:
|
||||
database_user_inline:
|
||||
type: INLINE
|
||||
props:
|
||||
algorithm-expression: ds_${user_id % 2}
|
||||
t_order_inline: # 订单表分片算法名称
|
||||
type: INLINE
|
||||
props:
|
||||
algorithm-expression: t_order_${order_id % 2}
|
||||
allow-range-query-with-inline-sharding: true
|
||||
t_order_item_inline: # 子订单表分片算法名称
|
||||
type: INLINE
|
||||
props:
|
||||
algorithm-expression: t_order_item_${order_id % 2}
|
||||
allow-range-query-with-inline-sharding: true
|
||||
|
||||
# 分布式序列算法配置
|
||||
keyGenerators:
|
||||
snowflake:
|
||||
type: SNOWFLAKE
|
||||
props:
|
||||
worker-id: 1
|
||||
|
@ -0,0 +1,45 @@
|
||||
<?xml version="1.0"?>
|
||||
<!--
|
||||
~ Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
~ contributor license agreements. See the NOTICE file distributed with
|
||||
~ this work for additional information regarding copyright ownership.
|
||||
~ The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
~ (the "License"); you may not use this file except in compliance with
|
||||
~ the License. You may obtain a copy of the License at
|
||||
~
|
||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License.
|
||||
-->
|
||||
|
||||
<configuration>
|
||||
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
<logger name="org.apache.shardingsphere" level="info" additivity="false">
|
||||
<appender-ref ref="console" />
|
||||
</logger>
|
||||
|
||||
<logger name="com.zaxxer.hikari" level="error">
|
||||
<appender-ref ref="console" />
|
||||
</logger>
|
||||
|
||||
<logger name="com.atomikos" level="error">
|
||||
<appender-ref ref="console" />
|
||||
</logger>
|
||||
|
||||
<logger name="io.netty" level="error">
|
||||
<appender-ref ref="console" />
|
||||
</logger>
|
||||
|
||||
<root>
|
||||
<level value="info" />
|
||||
<appender-ref ref="console" />
|
||||
</root>
|
||||
</configuration>
|
@ -0,0 +1,61 @@
|
||||
######################################################################################################
|
||||
#
|
||||
# 用于配置:数据接入迁移&弹性伸缩、分布式治理模式、权限、代理属性.
|
||||
#
|
||||
######################################################################################################
|
||||
|
||||
#scaling:
|
||||
# blockQueueSize: 10000 # 数据传输通道队列大小
|
||||
# workerThread: 40 # 工作线程池大小,允许同时运行的迁移任务线程数
|
||||
# clusterAutoSwitchAlgorithm:
|
||||
# type: IDLE
|
||||
# props:
|
||||
# incremental-task-idle-minute-threshold: 30
|
||||
# dataConsistencyCheckAlgorithm:
|
||||
# type: DEFAULT
|
||||
#
|
||||
#mode:
|
||||
# type: Cluster
|
||||
# repository:
|
||||
# type: ZooKeeper
|
||||
# props:
|
||||
# namespace: governance_ds
|
||||
# server-lists: localhost:2181
|
||||
# retryIntervalMilliseconds: 500
|
||||
# timeToLiveSeconds: 60
|
||||
# maxRetries: 3
|
||||
# operationTimeoutMilliseconds: 500
|
||||
# overwrite: false
|
||||
#
|
||||
rules:
|
||||
- !AUTHORITY
|
||||
users:
|
||||
- root@%:root
|
||||
- sharding@:sharding
|
||||
provider:
|
||||
type: ALL_PRIVILEGES_PERMITTED
|
||||
- !TRANSACTION
|
||||
defaultType: XA
|
||||
providerType: Atomikos
|
||||
|
||||
props:
|
||||
max-connections-size-per-query: 1
|
||||
kernel-executor-size: 16 # Infinite by default.
|
||||
proxy-frontend-flush-threshold: 128 # The default value is 128.
|
||||
# proxy-opentracing-enabled: false
|
||||
# proxy-hint-enabled: false
|
||||
sql-show: true
|
||||
# check-table-metadata-enabled: false
|
||||
# show-process-list-enabled: false
|
||||
# # Proxy backend query fetch size. A larger value may increase the memory usage of ShardingSphere Proxy.
|
||||
# # The default value is -1, which means set the minimum value for different JDBC drivers.
|
||||
# proxy-backend-query-fetch-size: -1
|
||||
check-duplicate-table-enabled: true
|
||||
# sql-comment-parse-enabled: false
|
||||
# proxy-frontend-executor-size: 0 # Proxy frontend executor size. The default value is 0, which means let Netty decide.
|
||||
# # Available options of proxy backend executor suitable: OLAP(default), OLTP. The OLTP option may reduce time cost of writing packets to client, but it may increase the latency of SQL execution
|
||||
# # if client connections are more than proxy-frontend-netty-executor-size, especially executing slow SQL.
|
||||
# proxy-backend-executor-suitable: OLAP
|
||||
# proxy-frontend-max-connections: 0 # Less than or equal to 0 means no limitation.
|
||||
# sql-federation-enabled: false
|
||||
|
Binary file not shown.
@ -0,0 +1,16 @@
|
||||
package org.dromara.demo.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
@TableName("t_order")
|
||||
@Data
|
||||
public class TOrder {
|
||||
|
||||
|
||||
private Long orderId;
|
||||
|
||||
private Long userId;
|
||||
|
||||
private int totalMoney;
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
package org.dromara.demo.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
@TableName("t_order_item")
|
||||
@Data
|
||||
public class TOrderItem {
|
||||
|
||||
private Long orderItemId;
|
||||
|
||||
private Long orderId;
|
||||
|
||||
private Long userId;
|
||||
|
||||
private int totalMoney;
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
package org.dromara.demo.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.dromara.demo.domain.TOrderItem;
|
||||
|
||||
@Mapper
|
||||
public interface TOrderItemMapper extends BaseMapper<TOrderItem> {
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
package org.dromara.demo.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.dromara.demo.domain.TOrder;
|
||||
|
||||
@Mapper
|
||||
public interface TOrderMapper extends BaseMapper<TOrder> {
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.dromara.demo.mapper.TOrderItemMapper">
|
||||
|
||||
</mapper>
|
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.dromara.demo.mapper.TOrderMapper">
|
||||
|
||||
</mapper>
|
@ -0,0 +1,59 @@
|
||||
package org.dromara.demo;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
|
||||
import org.dromara.demo.domain.TOrder;
|
||||
import org.dromara.demo.mapper.TOrderMapper;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
|
||||
@SpringBootTest
|
||||
class TOrderTest {
|
||||
|
||||
@Autowired
|
||||
TOrderMapper torderMapper;
|
||||
|
||||
//@Autowired
|
||||
//TUserMapper userMapper;
|
||||
|
||||
@Test
|
||||
void find() {
|
||||
//Order order = orderMapper.selectById(1640990702722723841L);
|
||||
}
|
||||
|
||||
@Test
|
||||
void page() {
|
||||
Page<TOrder> page = new Page<>();
|
||||
page.setCurrent(3L);
|
||||
QueryWrapper<TOrder> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.orderByAsc("order_id");
|
||||
torderMapper.selectPage(page,queryWrapper);
|
||||
System.out.println(page.getTotal());
|
||||
for(TOrder order : page.getRecords()){
|
||||
System.out.print(order.getTotalMoney()+" ");
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void insert() {
|
||||
for(Long i = 1L; i <= 100L; i++){
|
||||
TOrder torder = new TOrder();
|
||||
torder.setUserId(i);
|
||||
torder.setTotalMoney(100 + Integer.parseInt(i+""));
|
||||
torderMapper.insert(torder);
|
||||
}
|
||||
|
||||
}
|
||||
@Test
|
||||
void insertUser() {
|
||||
/*User user = new User();
|
||||
user.setId(1L);
|
||||
user.setUserName("abc");
|
||||
user.setAge(18);
|
||||
user.setCreateTime(new Date());
|
||||
userMapper.insert(user);*/
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue