You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cassandra数据存储磁盘更换咨询:保留数据替换原有磁盘

单节点Cassandra更换磁盘并保留数据的可行方案

作为常年折腾Cassandra运维的老鸟,给你一套经过实战验证的步骤,确保数据不丢、服务能正常起来:

一、准备阶段:把风险降到最低

  • 先做快照备份:哪怕是单节点,备份也是底线操作。执行命令:
    nodetool snapshot -t pre_disk_swap
    
    快照会存在原有数据目录的data/keyspace/table/snapshots/pre_disk_swap下,后续出问题可以用这个恢复。
  • 处理新磁盘:
    1. 把新磁盘挂载到服务器,比如挂载到/mnt/new_cassandra
    2. 格式化磁盘(根据你的文件系统选,比如ext4):mkfs.ext4 /dev/xxx(xxx是新磁盘设备名,别搞错!)
    3. 设置永久挂载(编辑/etc/fstab,添加一行/dev/xxx /mnt/new_cassandra ext4 defaults 0 0,然后执行mount -a验证)
    4. 把新目录权限改成Cassandra用户所属:chown -R cassandra:cassandra /mnt/new_cassandra

二、核心迁移操作

  • 停止Cassandra服务:
    sudo systemctl stop cassandra
    
    一定要等服务完全停稳,别着急下一步,可以用ps aux | grep cassandra确认没有相关进程。
  • 复制原有数据到新磁盘:
    用rsync比cp更靠谱,能校验数据完整性,还支持断点续传:
    rsync -avz /var/lib/cassandra/ /mnt/new_cassandra/
    
    这里注意源路径末尾的/,意思是复制目录里的内容,而不是把整个目录复制进去。
  • 修改Cassandra配置文件:
    找到cassandra.yaml(通常在/etc/cassandra/下),修改以下几个关键路径:
    data_file_directories:
        - /mnt/new_cassandra/data
    commitlog_directory: /mnt/new_cassandra/commitlog
    saved_caches_directory: /mnt/new_cassandra/saved_caches
    
    另外检查cassandra-env.sh里有没有配置自定义的堆dump、日志路径,如果有也要同步改成新磁盘的路径,避免启动报错。

三、验证与收尾

  • 启动Cassandra服务:
    sudo systemctl start cassandra
    
    启动后看日志tail -f /var/log/cassandra/system.log,确认没有权限错误、路径找不到的报错。
  • 验证数据与状态:
    1. 用nodetool status看节点状态是不是UN(正常)
    2. 用nodetool info查看Data Directory是不是已经变成新磁盘的路径
    3. 登录cqlsh,随便查几个核心表的数据,比如SELECT COUNT(*) FROM your_keyspace.your_table;,确认数据和之前一致
  • 清理旧磁盘(可选):
    确认一切正常后,可以卸载旧磁盘,删除旧数据目录的内容(或者保留一段时间再删,留个后手)。

额外提醒

  • 单节点操作必然会有服务 downtime,尽量选业务低峰期执行
  • 如果迁移过程中rsync中断,直接重新执行命令即可,它会自动跳过已复制的内容
  • 新磁盘的IO性能最好和旧盘相当或更好,不然可能影响Cassandra的读写性能

内容的提问来源于stack exchange,提问作者iMajna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:21:09