如何在不停机的情况下执行从 RDBMS 到 Mongo 的实时迁移?

How to perform live migration from RDBMS to Mongo without downtime?

我正在使用仅支持 RDBMS 的软件。但我需要将数据存储在 MongoDB 中。由于我没有那个软件的源代码,我无法修改它以支持 MongoDB。所以我需要一个实时迁移工具(最好是开源的),它可以将数据从 RDBMS 迁移到 MongoDB 而无需软件停机。 RDBMS 中的 update/delete 操作也应实时反映在 MongoDB 中。

使用 Sctiptella ETL 将数据从任何 RDBMS(通过提供 JDBC URL)迁移到 Mongo,使用如下所示的迁移脚本。

    <connection id="in" url="jdbc:hsqldb:db/blogs" user="sa" password="" />
    <connection id="out" url="mongodb://localhost/test" />

    <query connection-id="in">
        SELECT * FROM USERS
        <script connection-id="out">
            {
                operation: 'db.collection.save',
                collection: 'users',
                data: {
                    user_id: '?user_id',
                    name: '?name'
                }
            }
        </script>
    </query>

但这些动作并不是实时执行的。需要运行手动迁移脚本。

建议是否有任何工具可以:

  1. 将 RDBMS 上的实时更改反映到 MongoDB
  2. 在不关闭服务器的情况下迁移(软件)

我们的一位 MongoDB 顾问 John Page 为这个挑战编写了一个名为 MongoSyphon 的 ETL 工具。

Talend 也做了一个 ETL 工具来将数据从 RDMBS 复制到 MongoDB,但我没有在愤怒中使用那个。

有多种开源工具可用于迁移。您也可以使用 Talend,它非常简单和舒适。但是您期望将实时更改反映到您的目标中,这与任何迁移工具无关。如果要反映目标数据库中的数据,则需要执行少量 ETL 操作。