Cassandra 3.11.1主副本数据同步方案咨询
Cassandra 3.11.1副本节点全量同步主节点数据方案
针对生产集群中副本节点因提交日志错误导致3天数据缺失、与主节点不同步的问题,可通过全量bootstrap同步实现副本节点与主节点的数据完全一致,以下是具体操作步骤(服务器层面执行,逐个处理副本节点,避免同时操作影响集群可用性):
操作前提
- 确保主节点状态正常(
nodetool status显示为UN),集群无其他故障 - 操作前备份副本节点的现有数据目录(如
/var/lib/cassandra/data)和配置文件,避免操作失误导致数据丢失 - 选择业务低峰期执行,减少对生产服务的影响
单副本节点同步步骤
1. 停止副本节点Cassandra服务
根据系统服务管理方式执行:
# Systemd系统 sudo systemctl stop cassandra # Init.d系统 sudo service cassandra stop
2. 清理副本节点的旧数据与日志
删除副本节点的业务数据、提交日志和缓存文件(注意保留配置文件目录):
# 删除数据目录(路径根据实际安装调整) sudo rm -rf /var/lib/cassandra/data/* # 删除提交日志 sudo rm -rf /var/lib/cassandra/commitlog/* # 删除缓存文件 sudo rm -rf /var/lib/cassandra/saved_caches/*
3. 确认bootstrap配置
编辑副本节点的cassandra.yaml配置文件,确保自动bootstrap功能开启:
auto_bootstrap: true
同时确认seed_provider配置正确指向集群的seed节点(包含主节点)。
4. 启动副本节点并监控同步进度
启动服务:
# Systemd系统 sudo systemctl start cassandra # Init.d系统 sudo service cassandra start
通过以下命令监控同步状态:
nodetool status:查看节点状态,同步过程中会显示UJ(Joining),完成后恢复为UNnodetool netstats:查看数据流(streaming)的进度和状态
5. 验证同步结果
同步完成后:
- 执行全量repair确保数据一致性(可选,针对单个键空间):
nodetool repair -full your_keyspace_name - 查询副本节点的目标表,对比主节点数据,确认缺失的3天数据已同步
- 检查副本节点的
system.log,确保无提交日志相关错误
多副本节点处理
重复上述步骤逐个处理第二个副本节点,禁止同时操作两个副本节点,避免集群副本数不足影响业务读写的quorum校验。
关键说明
- 所有操作均在副本节点本地服务器执行,主节点仅需保持正常运行即可
- Bootstrap过程是从集群中其他正常节点(包括主节点)全量拉取数据,能确保副本节点获得主节点的完整数据集
- 若集群数据量较大,同步时间会相应延长,需提前规划操作窗口
内容的提问来源于stack exchange,提问作者user24845938
相关产品推荐
相关产品推荐

