微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

了解 CockroachDB 副本

如何解决了解 CockroachDB 副本

我很难理解为什么我的单节点设置的 CockroachDB 管理控制台有 37 个副本。根据我读过的内容

CockroachDB replicates each range (3 times by default) and stores each replica on a different node.

这直接来自文档 https://www.cockroachlabs.com/docs/v20.2/architecture/overview#glossary

运行命令 \l 我看到了

  database_name
-----------------
  defaultdb
  postgres
  system
  test2
(4 rows)

运行命令 SHOW ALL ZONE CONfigURATIONS; 我得到

target                      |                               raw_config_sql
---------------------------------------------------+------------------------------------------------------------------------------
  RANGE default                                    | ALTER RANGE default CONfigURE ZONE USING
                                                   |     range_min_bytes = 134217728,|     range_max_bytes = 536870912,|     gc.ttlseconds = 90000,|     num_replicas = 3,|     constraints = '[]',|     lease_preferences = '[]'
  DATABASE system                                  | ALTER DATABASE system CONfigURE ZONE USING
                                                   |     range_min_bytes = 134217728,|     num_replicas = 5,|     lease_preferences = '[]'
  RANGE Meta                                       | ALTER RANGE Meta CONfigURE ZONE USING
                                                   |     range_min_bytes = 134217728,|     gc.ttlseconds = 3600,|     lease_preferences = '[]'
  RANGE system                                     | ALTER RANGE system CONfigURE ZONE USING
                                                   |     range_min_bytes = 134217728,|     lease_preferences = '[]'
  RANGE liveness                                   | ALTER RANGE liveness CONfigURE ZONE USING
                                                   |     range_min_bytes = 134217728,|     gc.ttlseconds = 600,|     lease_preferences = '[]'
  TABLE system.public.replication_constraint_stats | ALTER TABLE system.public.replication_constraint_stats CONfigURE ZONE USING
                                                   |     gc.ttlseconds = 600,|     lease_preferences = '[]'
  TABLE system.public.replication_stats            | ALTER TABLE system.public.replication_stats CONfigURE ZONE USING
                                                   |     gc.ttlseconds = 600,|     lease_preferences = '[]'
(7 rows)

我不确定 37 是从哪里来的,它不应该只是 3,因为我只创建了数据库 test2?或者如果它甚至复制数据库,它仍然只有 3*4 = 12?我的数据库都没有超过 512M,因此每个数据库最多只需要 1 个范围。我一定是误会了什么,有人可以帮我吗?谢谢。

解决方法

蟑螂的内部系统范围相对较多。它维护内部系统表以及其他引导元数据。蟑螂在表格边界上分割范围以及其他一些硬编码分割点。您可以通过运行如下查询来发现范围集:

> SELECT start_pretty,end_pretty,database_name,table_name,replicas FROM crdb_internal.ranges_no_leases;

          start_pretty          |          end_pretty           | database_name |           table_name            | replicas
--------------------------------+-------------------------------+---------------+---------------------------------+-----------
  /Min                          | /System/NodeLiveness          |               |                                 | {1,2,3}
  /System/NodeLiveness          | /System/NodeLivenessMax       |               |                                 | {1,3}
  /System/NodeLivenessMax       | /System/tsd                   |               |                                 | {1,3}
  /System/tsd                   | /System/"tse"                 |               |                                 | {1,3}
  /System/"tse"                 | /Table/SystemConfigSpan/Start |               |                                 | {1,3}
  /Table/SystemConfigSpan/Start | /Table/11                     |               |                                 | {1,3}
  /Table/11                     | /Table/12                     | system        | lease                           | {1,3}
  /Table/12                     | /Table/13                     | system        | eventlog                        | {1,3}
  /Table/13                     | /Table/14                     | system        | rangelog                        | {1,3}
  /Table/14                     | /Table/15                     | system        | ui                              | {1,3}
  /Table/15                     | /Table/16                     | system        | jobs                            | {1,3}
  /Table/16                     | /Table/17                     |               |                                 | {1,3}
  /Table/17                     | /Table/18                     |               |                                 | {1,3}
  /Table/18                     | /Table/19                     |               |                                 | {1}
  /Table/19                     | /Table/20                     | system        | web_sessions                    | {1,3}
  /Table/20                     | /Table/21                     | system        | table_statistics                | {1,3}
  /Table/21                     | /Table/22                     | system        | locations                       | {1,3}
  /Table/22                     | /Table/23                     |               |                                 | {1,3}
  /Table/23                     | /Table/24                     | system        | role_members                    | {1,3}
  /Table/24                     | /Table/25                     | system        | comments                        | {1,3}
  /Table/25                     | /Table/26                     | system        | replication_constraint_stats    | {1,3}
  /Table/26                     | /Table/27                     | system        | replication_critical_localities | {1,3}
  /Table/27                     | /Table/28                     | system        | replication_stats               | {1,3}
  /Table/28                     | /Table/29                     | system        | reports_meta                    | {1}
  /Table/29                     | /NamespaceTable/30            |               |                                 | {1,3}
  /NamespaceTable/30            | /NamespaceTable/Max           | system        | namespace2                      | {1,3}
  /NamespaceTable/Max           | /Table/32                     | system        | protected_ts_meta               | {1,3}
  /Table/32                     | /Table/33                     | system        | protected_ts_records            | {1,3}
  /Table/33                     | /Table/34                     | system        | role_options                    | {1,3}
  /Table/34                     | /Table/35                     | system        | statement_bundle_chunks         | {1,3}
  /Table/35                     | /Table/36                     | system        | statement_diagnostics_requests  | {1,3}
  /Table/36                     | /Table/37                     | system        | statement_diagnostics           | {1}
  /Table/37                     | /Table/38                     | system        | scheduled_jobs                  | {1,3}
  /Table/38                     | /Table/39                     |               |                                 | {1,3}
  /Table/39                     | /Max                          | system        | sqlliveness                     | {1,3}
(35 rows)

replicas 字段中的每个条目代表一个副本。希望这能让您对存在的范围有所了解。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?