博客
关于我
Cassandra 备份 - 1 - 节点镜像恢复
阅读量:798 次
发布时间:2023-04-02

本文共 1930 字,大约阅读时间需要 6 分钟。

Cassandra 数据备份与恢复实践指南

Cassandra 作为一个分布式数据库,在大规模应用前,数据备份与恢复机制是确保数据安全的重要前提。本文将详细介绍 Cassandra 的镜像备份和增量备份机制,并提供实际操作案例。


##备份与数据恢复

###镜像备份

Cassandra 的镜像备份机制通过直接保存数据目录中的 SSTable 文件(即磁盘数据文件)来实现。镜像备份可以针对整个 keyspace、单个 keyspace,甚至单个表进行操作。

####镜像备份的实现

  • 并行操作:通过使用工具如 pssh,可以对集群中的所有节点同时执行镜像备份操作,确保一致性备份的完成。
  • 硬链接机制:允许镜像备份使用硬链接节省存储空间(前提是启用 JNA)。
  • 增量备份:镜像备份生成后,启用增量备份功能。每次数据刷新(flush)后,会将新的 SSTable 文件复制到备份目录中。

####镜像备份注意事项

  • 镜像备份会生成大量中间文件,需要预留足够的存储空间。
  • 镜像备份文件不能自动清理,需要手动管理。
  • 备份时需同时备份 schema(如 system.schema_* 表),否则可能无法正确恢复数据。

###如何获取镜像备份

####操作步骤

  • 使用 nodetool snapshot 命令获取镜像备份。例如:
    $ nodetool -h localhost -p 7199 snapshot mykeyspace
  • 镜像备份文件路径为:
    • 包装安装:/var/lib/cassandra/data/mykeyspace/users-081a1500136111e482d09318a3b15cc2/snapshots/1406227071618/mykeyspace-users-ka-1-Data.db
    • tar 安装:install_location/data/data/mykeyspace/users-081a1500136111e482d09318a3b15cc2/snapshots/1406227071618/mykeyspace-users-ka-1-Data.db
  • ####镜像恢复

  • 准备工作:在恢复前,需清空目标表(truncate)。
  • 文件复制:将镜像备份文件复制到目标表目录中。
  • 节点重启:重启节点,确保数据加载成功。
  • 执行 nodetool repair:修复数据分布,确保数据一致性。

  • ##增量备份

    增量备份是一种更粒度的备份方式,可在镜像备份基础上进一步优化存储使用和备份频率。

    ####增量备份的优势

    • 存储效率:仅备份自上次镜像后发生的数据变更。
    • 备份频率:可根据业务需求灵活配置。
    • 数据一致性:与镜像备份一样,增量备份依赖 Cassandra 的一致性机制。

    ####增量备份注意事项

    • 增量备份文件不会自动清理,需要定期删除。
    • 在镜像生成后,需手动清理增量备份以避免存储膨胀。

    ##实际操作案例

    ###案例 1:增量备份实践

  • 开启增量备份

    • 修改 cassandra.yaml,设置 incremental_backups: true
    • 请确保所有节点配置一致。
  • 写入新数据

    insert into user (uid,group_id,nick) values(6,1,'昵称1');insert into user (uid,group_id,nick) values(7,1,'昵称2');
  • 执行 flush 操作

    $ bin/nodetool -h 192.168.1.2 flush tshop

    这将触发增量备份。

  • 观察备份文件

    $ ls backup/

    会生成类似 tshop-user-ka-2-Data.db 的文件。

  • 删除数据并测试恢复

    delete from user where uid in (3,4,5,6,7);

  • ###案例 2:镜像备份恢复

  • 关闭集群:确保前端请求停止,避免数据冲突。
  • 清理 commitlog:防止未提交数据的重放问题。
  • 删除旧数据
    truncate user;
  • 复制镜像备份文件
    cp backup/.../tshop-user-ka-1-Data.db /var/lib/cassandra/data/tshop/user-uuid/
  • 重启节点并修复
    $ bin/nodetool -h 192.168.1.2 repair tshop

  • ##总结

    Cassandra 的镜像备份和增量备份机制提供了灵活且高效的数据备份解决方案。镜像备份适合全面恢复需求,而增量备份适合定频率或精细控制的场景。在实际应用中,可结合镜像和增量备份,根据业务需求选择合适的备份策略。

    转载地址:http://wqefk.baihongyu.com/

    你可能感兴趣的文章
    P1865 A % B Problem
    查看>>
    P1908 逆序对
    查看>>
    P2158 [SDOI2008]仪仗队
    查看>>
    P2161 [SHOI2009]Booking 会场预约
    查看>>
    P2260 [清华集训2012]模积和
    查看>>
    P2x与P3x的区别
    查看>>
    P3203 [HNOI2010]弹飞绵羊 —— 懒标记?分块?
    查看>>
    P3240 [HNOI2015]实验比较 树形DP
    查看>>
    SpringBoot中集成Minio高性能分布式存储文件服务入门
    查看>>
    P3383 素数筛
    查看>>