AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 810968
Accepted
P. Bender
P. Bender
Asked: 2016-10-25 07:59:12 +0800 CST2016-10-25 07:59:12 +0800 CST 2016-10-25 07:59:12 +0800 CST

Cassandra 快照恢复:随机丢失数据

  • 772

我很难在 Apache Cassandra(版本 3.0.9)上恢复快照。据我所知,我正在遵循 datastax 博客上描述的程序以及其他几个程序(例如:http ://datascale.io/cloning-cassandra-clusters-fast-way/ )。然而我可能会丢失一些东西,每次我进行恢复时,数据都会丢失。

设置: 6 个节点集群(1 个 DC,3 个机架,每个机架 2 个节点),复制因子设置为 3。机器托管在 AWS 上。

备份程序(在每个节点上):

  1. nodetool snapshot mykeyspace
  2. cqlsh -e 'DESCRIBE KEYSPACE mykeyspace' > /tmp/mykeyspace.cql
  3. nodetool ring | grep "$(ifconfig | awk '/inet /{print $2}' | head -1)" | awk '{print $NF ","}' | xargs > /tmp/tokens

我得到了 nodetool 快照命令生成的文件,并在 S3 上将它们与令牌和 cql 一起备份。

恢复过程(对于每个节点,除非指定):

(创建新虚拟机后)

  1. 下载快照、令牌和密钥空间
  2. 停止服务卡桑德拉
  3. 删除/var/lib/cassandra/commitlog/*和/var/lib/cassandra/system/
  4. 将令牌插入cassandra.yaml
  5. 启动服务卡桑德拉
  6. mykeyspace.cql仅从一个节点上恢复 mykeyspace
  7. 等待复制并停止服务 cassandra
  8. 删除.db文件夹中的文件/var/lib/cassandra/data/mykeyspace/
  9. 对于每个表,将快照文件 ( .db, .crc32, .txt) 复制到/var/lib/cassandra/data/mykeyspace/$table/
  10. 重启服务cassandra
  11. 运行nodetool repair mykeyspace -full,一次一个节点

结果 :

总是有缺失的行,每个表的数量大致相同,但绝不是相同的。我试图“混淆”一些过程,比如在令牌之前恢复密钥空间,nodetool refresh在修复之前运行,但我每次都遇到同样的问题。

由于我距离“良好”恢复不远,我认为我遗漏了一些非常明显的东西。分析日志并没有真正帮助,因为它们没有显示任何错误/失败消息。

欢迎任何帮助:) 如果需要,我当然可以提供更多信息。

编辑:没有人?我用 cassandra 版本(3.0.9)更新了这个问题,我一开始就忘记了。我再次尝试恢复,但没有运气。我真的没有更多的想法:(

backup restore data-loss database-backup cassandra
  • 2 2 个回答
  • 2976 Views

2 个回答

  • Voted
  1. Josh
    2016-11-12T08:58:22+08:002016-11-12T08:58:22+08:00

    该sed博客文章中的命令应该附加-Dcassandra.load_ring_state=false到$JVM_OPTS,在其当前形式下无效。

    如果您直接从博客文章中复制该命令,则可能是问题所在。你可以试试这个,而不是把它放在文件的底部:

    sudo sed -i '$ a\JVM_OPTS="$JVM_OPTS -Dcassandra.load_ring_state=false"' /etc/cassandra/cassandra-env.sh

    此外,在执行此过程之后,您还需要nodetool repair -pr <ks>在每个节点上一个一个地执行。

    • 0
  2. Best Answer
    P. Bender
    2016-11-18T02:38:33+08:002016-11-18T02:38:33+08:00

    好吧,故事结束,愚蠢的我!initial_token在我的恢复过程中,cassandra.yaml 中的行被错误地“植入”了。如果 ':' 后没有空格initial_token,则 cassandra 无法启动。因此,该行一直被注释并且标记不被解释!

    tldr:

    • initial_token:<values>= 错误
    • initial_token: <values>= 好

    非常感谢 Josh Purvis 坚持这个参数的重要性:-)

    • 0

相关问题

  • 总大小(磁盘)与总大小(媒体)

  • 社区对备份解决方案的意见

  • 无法读取不同 LTO-3 驱动器上的 LTO-3 磁带

  • 使用 TSM 备份时跳过硬链接

  • 使用 rsync 维护名称更改的目录的副本

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve