使用 Arcion 将数据从 Cassandra 迁移到 Azure Cosmos DB for Apache Cassandra 帐户

适用对象: Cassandra

Azure Cosmos DB 中的 API for Cassandra 已成为在 Apache Cassandra 上运行的企业工作负载的极佳选择,原因有多种,例如:

  • 无管理和监视开销: 它不需管理和监视跨 OS、JVM 和 yaml 文件的大量设置,也不需进行交互。

  • 显著节省成本: 使用 Azure Cosmos DB 可以节省成本,其中包括 VM、带宽以及任何适用许可证的成本。 另外,你不需管理数据中心、服务器、SSD 存储、网络以及电力成本。

  • 能够使用现有的代码和工具: Azure Cosmos DB 提供的线路协议级别与现有 Cassandra SDK 和工具兼容。 此兼容性确保只需经过细微的更改,就可以将现有代码库用于 Azure Cosmos DB for Apache Cassandra。

可以通过多种方式将数据库工作负荷从一个平台迁移到另一个平台。 Arcion 工具可以安全可靠地执行从其他数据库到 Azure Cosmos DB 的零停机迁移。 本文介绍如何执行所需步骤,使用 Arcion 将数据从 Apache Cassandra 数据库迁移到 Azure Cosmos DB for Apache Cassandra。

注意

Arcion 提供的此产品/服务目前为 beta 版本。 有关详细信息,请通过 Arcion 支持与他们联系

使用 Arcion 进行迁移的优势

Arcion 的迁移解决方案按照分步方法迁移复杂的运营工作负载。 下面是 Arcion 的零停机迁移计划的一些重要方面:

  • 它可以自动将业务逻辑(表、索引、视图)从 Apache Cassandra 数据库迁移到 Azure Cosmos DB。 不需手动创建架构。

  • Arcion 提供大规模并行数据库复制。 它可以使用名为“变更数据捕获 (CDC)”的技术,让源平台和目标平台在迁移过程中保持同步状态。 Arcion 可以通过 CDC 从源数据库 (Apache Cassandra) 持续拉取更改流,并将其应用到目标数据库 (Azure Cosmos DB)。

  • 它具有容错功能,即使在系统的硬件或软件故障期间,也能准确地提供一次数据交付。

  • 它可以在传输过程中使用安全方法(例如 TLS、加密)对数据进行保护。

迁移数据的步骤

本节介绍如何执行所需步骤,设置 Arcion 并将数据从 Apache Cassandra 数据库迁移到 Azure Cosmos DB。

  1. 在打算安装 Arcion 复制器的计算机中,添加安全证书。 此证书是 Arcion 复制器与指定的 Azure Cosmos DB 帐户建立 TLS 连接所需要的。 可以使用以下步骤来添加证书:

    wget https://cacert.omniroot.com/bc2025.crt
    mv bc2025.crt bc2025.cer
    keytool -keystore $JAVA_HOME/lib/security/cacerts -importcert -alias bc2025ca -file bc2025.cer
    
  2. 可以在 Arcion 网站上请求演示版,以获取 Arcion 安装和二进制文件。 也可以向相关团队发送电子邮件

    Arcion replicant tool download

    Arcion replicant files

  3. 在 CLI 终端设置源数据库配置。 使用 vi conf/conn/cassandra.yml 命令打开配置文件,添加一个包含 Cassandra 节点 IP 地址的逗号分隔的列表,并添加端口号、用户名、密码以及任何其他必需的详细信息。 下面是一个示例,介绍了配置文件中的内容:

    type: CASSANDRA
    
    host: 172.17.0.2
    port: 9042
    
    username: 'cassandra'
    password: 'cassandra'
    
    max-connections: 30
    
    

    Open Cassandra connection editor

    Cassandra connection configuration

    填充配置详细信息以后,保存并关闭该文件。

  4. (可选)设置源数据库筛选器文件。 筛选器文件指定要迁移的架构或表。 使用 vi filter/cassandra_filter.yml 命令打开配置文件,输入以下配置详细信息:

    
    allow:
    -	schema: "io_arcion"
    Types: [TABLE]
    

    填充数据库筛选器详细信息以后,保存并关闭该文件。

  5. 接下来,设置目标数据库配置。 在定义配置之前,先创建 Azure Cosmos DB for Apache Cassandra 帐户,然后创建密钥空间,接着创建一个用于存储已迁移数据的表。 由于你是从 Apache Cassandra 迁移到 Azure Cosmos DB 中的 API for Cassandra,因此所使用的分区键可以与用于 Apache Cassandra 的分区键相同。

  6. 在迁移数据之前,请将容器吞吐量提高到快速迁移应用程序所需的量。 例如,可将吞吐量提高到 100000 RU。 在开始迁移之前提高吞吐量可以缩短数据迁移时间。

    Scale Azure Cosmos DB container throughout

    在迁移完成后,请降低吞吐量。 可以根据存储的数据量以及每次操作所需的 RU 数,估算数据迁移后所需的吞吐量。 若要详细了解如何估算所需的 RU,请参阅预配容器和数据库的吞吐量使用 Azure Cosmos DB Capacity Planner 估算 RU/秒这两篇文章。

  7. 在“连接字符串”窗格中获取“联系点、端口、用户名”,以及 Azure Cosmos DB 帐户的“主密码”。 你将在配置文件中用到这些值。

  8. 在 CLI 终端设置目标数据库配置。 使用 vi conf/conn/cosmosdb.yml 命令打开配置文件,添加一个包含主机 URI 的逗号分隔的列表,并添加端口号、用户名、密码以及其他必需的参数。 以下示例显示了配置文件的内容:

    type: COSMOSDB
    
    host: '<Azure Cosmos DB account's Contact point>'
    port: 10350
    
    username: 'arciondemo'
    password: '<Your Azure Cosmos DB account's primary password>'
    
    max-connections: 30
    
  9. 接下来,使用 Arcion 迁移数据。 可以按“完全”或“快照”模式运行 Arcion 复制器:

    • “完全”模式 - 在此模式下,复制器会在迁移后继续运行,并侦听在源 Apache Cassandra 系统上发生的任何更改。 如果它检测到任何更改,目标 Azure Cosmos DB 帐户上会实时复制这些更改。

    • “快照”模式 - 在此模式下,可以执行架构迁移和一次性数据复制。 此选项不支持实时复制。

    可以通过上述两种模式进行迁移,不会造成停机。

  10. 若要迁移数据,请在 Arcion 复制器 CLI 终端运行以下命令:

    ./bin/replicant full conf/conn/cassandra.yaml conf/conn/cosmosdb.yaml --filter filter/cassandra_filter.yaml --replace-existing
    

    复制器 UI 显示复制进度。 完成架构迁移和快照操作以后,进度会显示 100%。 完成迁移后,可在目标 Azure Cosmos DB 数据库上验证数据。

    Cassandra data migration output

  11. 由于你已使用“完全”模式进行迁移,因此可以执行多项操作,例如在源 Apache Cassandra 数据库上插入、更新或删除数据。 稍后验证它们是否已在目标 Azure Cosmos DB 数据库上实时复制。 迁移后,请务必降低为 Azure Cosmos DB 容器配置的吞吐量。

  12. 可以随时停止复制器,并使用 --resume 开关重启它。 复制会从停止的点继续,不会损害数据一致性。 以下命令演示如何使用 resume 开关。

    ./bin/replicant full conf/conn/cassandra.yaml conf/conn/cosmosdb.yaml --filter filter/cassandra_filter.yaml --replace-existing --resume
    

后续步骤