【问题标题】:Vitess Sharding issueVitess 分片问题
【发布时间】:2020-06-25 14:13:48
【问题描述】:

我是 Vitess 的新手,我们已经使用 Helm Charts 在 Kubernetes 中部署了 Vitess,并通过节点端口公开了 VTGate,并且能够使用公开的 VTGate Ip 地址连接 MYSQL 工作台。 当我们使用 MySql Work Bench 插入记录时,记录不会分散在 Shards 中。

  * 'Payrolls' is the KeySpace and we created two shards as Payrolls -80,Payrolls 80-.

  * Table Schema as below

     1. TenantList
        (
           TenantID     INT,
           NAme      VARCHAR(200)
        )  


     2.  PayrollMaster
        (
          PayrollID   INT PRIMARY KEY,
          HHAID       INT FOREIGN KEY TO TenantList(TenantID)
        )  

     3. PayrollDetails
       (
         PayrollDetailID    INT PRIMARY KEY,
         PayrollID          INT FOREIGN KEY TO PayrollMaster(PayrollID),
         HHAID              INT FOREIGN KEY TO TenantList(TenantID)
       )

   *   VSchema is as below
      {
       "sharded": true,
       "vindexes": {
        "hash": {
         "type": "hash"
        }
     },
    "tables": {
     "payrollmaster": {
     "column_vindexes": 
      [
       {
         "column": "HHA",
         "name": "hash"
       }
      ],
      "auto_increment": {
       "column": "PayrollInternalID",
       "sequence": "payrollmaster_seq"
      }
    },
    "payrolldetails": {
     "column_vindexes": 
     [
       {
         "column": "HHA",
         "name": "hash"
       }
     ],
     "auto_increment": {
       "column": "PayrollDetailInternalID",
       "sequence": "payrolldetails_seq"
     }
   }
 }
}


    We are inserting the Records like below
      use Payrolls;
      insert into the TenantList,PayrollMaster,PayrollDetails

我们期望记录分散在分片中,但表在分片中的行数为零。

我们尝试的方式有什么问题吗?

谢谢

【问题讨论】:

    标签: vitess kubernetes-vitess


    【解决方案1】:

    您似乎希望对工资单进行分片。如果是这样,您不应该创建分片“0”。您应该只指定分片“-80”和“80-”

    【讨论】:

    • 谢谢@sugu Sougoumarane。我们按照 vitess/302_new_shards.yaml 创建了新的分片,并为 keyspace/0 创建了分片。为 keyspace/0 创建分片有什么好处。如果我们选择一个键是所有表的外键,那么所有引用的表都会自动分片?
    • 分片方案在 vschema 中指定。各个分片中的行分布由您选择的主 vindex 决定:vitess.io/docs/reference/vschema。由于效率原因,Vitess 不推荐也不支持跨分片外键。您应该设计您的 vschema 以保持分片内的 FK 关系。
    • 我已经更新了 VSchema。你可以请检查。我们已经提到了 vindexes,但数据没有自动分片。
    • @SuguSougoumarane 在行星规模分片 0 的掌舵示例中也有 github.com/planetscale/vitess/blob/master/examples/helm/… 在这种情况下,直接 VTGate 的查询不起作用?
    • 看起来 vschema 中有错字?两个表的主 vindex 都是“HHA”,但我没有看到表架构中的列。在示例中,shard 0 先存在,然后我们将其重新分片为 -80 和 80。重新分片后,shard 0 将被删除。
    猜你喜欢
    • 2020-06-15
    • 2020-07-22
    • 2018-04-17
    • 2021-04-20
    • 1970-01-01
    • 2018-09-22
    • 2021-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多