【问题标题】:Apache Cassandra 3.11.x Cloning KeyspacesApache Cassandra 3.11.x 克隆密钥空间
【发布时间】:2021-11-25 12:03:28
【问题描述】:

我们正在使用 Apache Cassandra 3.11,并且正在尝试为 DR 情况做准备。例如,我们有两个通过快照备份的键空间。例如,通过 Ansible:

- name: Create snapshots
  shell: "nodetool snapshot --tag {{ item.tag }} {{ item.name }}"
  loop: "{{ keyspaces }}"

现在,如果我们必须创建一个新集群并使用这些快照,据我们了解,我们需要执行以下操作:

  • 创建新集群 (3)
  • 创建键空间
  • 通过快照schema.cql恢复每个表
  • 使用 sstableloader

每个节点(只有2个,第三个节点没有快照),那么

  • Nodetool 修复

每个节点

这个路径的引用可以找到here

但是,表已加载,但数据是重复的,在我们的例子中,因为我们只有两个带有快照的节点,而第三个没有(失败的节点)。

我们在这里走的是正确的道路吗?我们尝试将快照数据复制到适当的目录并使用nodetool refresh -- keyspace table,但数据从未出现过。

任何想法/帮助将不胜感激。

【问题讨论】:

    标签: cassandra


    【解决方案1】:

    就其价值而言,我将此操作称为克隆键空间或表。对我来说,“恢复”这个词是模棱两可的,因为它可能意味着将数据恢复到与进行备份的节点相同的节点。

    如果您要将快照恢复到与源集群配置相同的目标集群,则只能使用refresh 方法。 “相同的配置”是指:

    • 集群拓扑相同 -- 相同数量的 DC,每个 DC 中相同数量的节点
    • 令牌分配是相同的 -- 为一个集群中的每个节点分配的令牌是另一个集群中节点的镜像

    如果集群相同,请按照我在这篇文章中记录的步骤进行操作——https://community.datastax.com/questions/4534/

    对于不相同的集群,请按照我在这篇文章中记录的步骤 - https://community.datastax.com/questions/4477/。请注意,如果目标集群与源集群不同,您将无法克隆提交日志,因为提交日志段中的分区键不一定与节点拥有的令牌匹配。干杯!

    【讨论】:

    • 很公平。你说的对。我们实际上只是克隆而不是恢复。对于不相同的集群,我们基本上是在做你在 datastax 中列出的事情。但是,我注意到您不使用 nodetool 修复。这有什么原因吗?以及为什么您要传递 sstableloader 两个 ip,而不是一个,即您连接到的当前节点?同样,我们在表中似乎没有重复数据,而是每个表的 nodetool cfstats 使用的空间(实时和总计)似乎是原始节点上报告的空间的两倍。
    • 以下命令用于检索每个表的实时值和总值 nodetool cfstats -H | awk -F ' *: *' ' BEGIN { print "Keyspace,Table,Live,Total" } /^Keyspace : / { ks = $2 } /\tTable:/ { t = $2 } /\tSpace used .live/ { sp = $2 } /\tSpace used .total/ { print ks "," t "," sp "," $2 } ' |列 -s , -t
    猜你喜欢
    • 2014-05-29
    • 1970-01-01
    • 2019-02-23
    • 2016-04-18
    • 2018-07-25
    • 2020-05-25
    • 2017-08-20
    • 2021-06-28
    • 2018-07-01
    相关资源
    最近更新 更多