dble icon indicating copy to clipboard operation
dble copied to clipboard

希望自定义虚拟节点编号

Open learnku opened this issue 2 years ago • 1 comments

  • dble version:

  • 3.22.01.0

  • configs:

cluster.cnf

clusterEnable=false

bootstrap.cnf

-DhomePath=/mnt_backup/dble
-DinstanceName=1
-DinstanceId=1
-DbindIp=0.0.0.0
-DserverPort=8066
-DmanagerPort=9066

db.xml

<?xml version="1.0"?>
<!--
  ~ Copyright (C) 2016-2022 ActionTech.
  ~ License: http://www.gnu.org/licenses/gpl.html GPL version 2 or higher.
  -->
<!---->
<!---->
<!-- https://actiontech.github.io/dble-docs-cn/1.config_file/1.04_db.xml.html -->
<!-- 物理数据库信息配置 -->
<!---->
<!---->
<!---->
<dble:db xmlns:dble="http://dble.cloud/" version="4.0">
    <dbGroup name="ds110" rwSplitMode="0" delayThreshold="-1">
        <heartbeat>show slave status</heartbeat>
        <dbInstance name="ds110-m1" url="127.0.0.1:3663" user="root" password="123456"
                    maxCon="1000" minCon="10"
                    primary="true">
            <property name="testOnBorrow">false</property>
            <property name="testOnCreate">false</property>
            <property name="testWhileIdle">true</property>
        </dbInstance>
    </dbGroup>

    <dbGroup name="ds111" rwSplitMode="0" delayThreshold="-1">
        <heartbeat>show slave status</heartbeat>
        <dbInstance name="ds111-m1" url="127.0.0.1:3663" user="root" password="123456"
                    maxCon="1000" minCon="10"
                    primary="true">
            <property name="testOnBorrow">false</property>
            <property name="testOnCreate">false</property>
            <property name="testWhileIdle">true</property>
        </dbInstance>
    </dbGroup>
</dble:db>

user.xml

<dble:user xmlns:dble="http://dble.cloud/" version="4.0">
    <managerUser name="ben" password="123456" maxCon="1000"/>
    <shardingUser name="root" password="123456" schemas="scm_org_db" readOnly="false" maxCon="2000"/>
</dble:user>

sharding.xml

<dble:sharding xmlns:dble="http://dble.cloud/" version="4.0">
    <!-- 多租户数据库配置 -->
    <schema name="scm_org_db"  sqlMaxLimit="1000">
        <shardingTable name="bas_company" shardingNode="dn$110-111" function="func_enum" shardingColumn="group_id" sqlRequiredSharding="true"/>
        <shardingTable name="bas_company_address" shardingNode="dn$110-111" function="func_enum" shardingColumn="group_id" sqlRequiredSharding="true"/>
    </schema>
<!-- 分片节点配置 -->
    <shardingNode name="dn110" dbGroup="ds110" database="scm_smpt_prod_110"/>
    <shardingNode name="dn111" dbGroup="ds111" database="scm_smpt_prod_111"/>

    <!-- 分库规则 -->
    <function name="func_enum" class="Enum">
        <property name="mapFile">partition-enum.txt</property>
        <!-- 默认节点,默认为-1,表示意外值会报错 -->
        <property name="defaultNode">-1</property>
        <!-- 0 表示键是数字,1 表示键是字符串 -->
        <property name="type">0</property>
    </function>
</dble:sharding>

partition-enum.txt

# 希望可以将 0 修改为 110
110=0
# 希望可以将 1 修改为 111
111=1

问题描述: 如图,我是一个多租户平台,分库规则非常简单,希望分片值对应虚拟分片节点序号(数据库序号),不知道是否可以实现?

image

learnku avatar May 09 '22 18:05 learnku

I think it can work, if it can't work, you can try customized route fuction, please refer:https://github.com/actiontech/dble-docs-cn/blob/master/1.config_file/1.09_dble_route_function_spec.md

PanternBao avatar May 10 '22 02:05 PanternBao

0 means the first sharding_node,1 means the second sharding_node. So, we can't support it by default.

yanhuqing666 avatar Oct 18 '22 09:10 yanhuqing666