Erick Ramirez Asked: 2022-09-07 05:25:44 +0800 CST2022-09-07 05:25:44 +0800 CST 2022-09-07 05:25:44 +0800 CST 如何将表中的数据迁移到新的 Cassandra 集群? 772 如何将现有 Cassandra 集群中的应用程序表迁移到新集群? 新集群对源集群具有不同的拓扑和令牌分配。 cassandra 1 个回答 Voted Best Answer Erick Ramirez 2022-09-07T05:25:44+08:002022-09-07T05:25:44+08:00 准备 在源集群上,使用该nodetool snapshot命令拍摄相关键空间的快照。例如: $ nodetool snapshot <keyspace_name> 这是我拍摄键空间快照的示例community。 步骤 B1 - 创建快照: $ nodetool snapshot community Requested creating snapshot(s) for [community] with snapshot name [1591083719993] and options {skipFlush=false} Snapshot directory: 1591083719993 目录1591083719993名称是创建快照时的 Unix 时间戳,相当于格林威治标准时间 2020 年 6 月 2 日上午 7:41。在我的示例键空间中调用了一个表users,快照位于以下目录结构中: data/ community/ users-6140f420a4a411ea9212efde68e7dd4b/ snapshots/ 1591083719993/ manifest.json mc-1-big-CompressionInfo.db mc-1-big-Data.db mc-1-big-Digest.crc32 mc-1-big-Filter.db mc-1-big-Index.db mc-1-big-Statistics.db mc-1-big-Summary.db mc-1-big-TOC.txt schema.cql 有关详细信息,请参阅在 Cassandra 中拍摄快照。 工装 需要在集群中的所有节点上进行快照。最好并行创建它们,以便更轻松地识别快照文件夹。 为此,我建议使用环境中已有的工具。如果您已经在使用 Ansible 等编排工具,请通过同时在所有节点上运行命令来并行创建快照。同样,您也可以编写恢复操作脚本,以便使用 Ansible 并行执行它。 如果您不使用编排工具,请考虑使用集群 SSH ( cssh) 或并行 SSH ( pssh),以便您可以在集群中的所有节点上同时运行命令。 克隆表 准备- 在目标集群上创建应用程序键空间和表模式。如有必要,请使用schema.cql快照文件夹中的文件作为指南。 创建键空间和表模式后,请按照以下过程恢复表。 第 1步 - 将快照复制到临时位置,以便 SSTable 文件位于带有keyspace_name/table_name. 例如: $ cp -p \ data/community/users-6140f420a4a411ea9212efde68e7dd4b/snapshots/1591083719993/* \ /path/to/community/users/. 第 2 步- 使用实用程序将数据文件加载到目标集群,如下所示: $ sstableloader -d dest_node_ip1, dest_node_ip2 /path/to/community/users/ 第 3步- 在源集群中的下一个节点上重复第 1 步和第 2 步,直到所有节点上的快照都已加载到目标集群。 对要克隆到目标集群的每个表重复上述步骤。 有关详细信息,请参阅Cassandra 批量加载程序。干杯! 有关将应用程序数据克隆到“相同”集群的说明,请参阅如何将 Cassandra 快照还原到具有相同配置的另一个集群?.
准备
在源集群上,使用该
nodetool snapshot
命令拍摄相关键空间的快照。例如:这是我拍摄键空间快照的示例
community
。步骤 B1 - 创建快照:
目录
1591083719993
名称是创建快照时的 Unix 时间戳,相当于格林威治标准时间 2020 年 6 月 2 日上午 7:41。在我的示例键空间中调用了一个表users
,快照位于以下目录结构中:有关详细信息,请参阅在 Cassandra 中拍摄快照。
工装
需要在集群中的所有节点上进行快照。最好并行创建它们,以便更轻松地识别快照文件夹。
为此,我建议使用环境中已有的工具。如果您已经在使用 Ansible 等编排工具,请通过同时在所有节点上运行命令来并行创建快照。同样,您也可以编写恢复操作脚本,以便使用 Ansible 并行执行它。
如果您不使用编排工具,请考虑使用集群 SSH (
cssh
) 或并行 SSH (pssh
),以便您可以在集群中的所有节点上同时运行命令。克隆表
准备- 在目标集群上创建应用程序键空间和表模式。如有必要,请使用
schema.cql
快照文件夹中的文件作为指南。创建键空间和表模式后,请按照以下过程恢复表。
第 1步 - 将快照复制到临时位置,以便 SSTable 文件位于带有
keyspace_name/table_name
. 例如:第 2 步- 使用实用程序将数据文件加载到目标集群,如下所示:
第 3步- 在源集群中的下一个节点上重复第 1 步和第 2 步,直到所有节点上的快照都已加载到目标集群。
对要克隆到目标集群的每个表重复上述步骤。
有关详细信息,请参阅Cassandra 批量加载程序。干杯!
有关将应用程序数据克隆到“相同”集群的说明,请参阅如何将 Cassandra 快照还原到具有相同配置的另一个集群?.