通过 binlog 将 MySQL 复制到非 MySQL 数据库的最佳实践
best practice to replicate MySQL to a non-MySQL database via binlog
有很多工具可以读取 MySQL 二进制日志,例如Tungsten、Maxwell、StreamSets、Debezium、Talend、Attunity 等...它们都要求在 MySQL 中启用二进制日志记录,并且它们在写入时读取这些二进制日志。
如果您有一个全新的数据库并从一开始就复制数据,那很好。我很想知道如果在启用二进制日志之前 MySQL 中已经有大量数据会发生什么。
一种方法是停止数据库以便不再向其写入数据,将数据复制到目标系统,启用二进制日志,然后重新启动。展望未来,增量更改将附加到目标系统,在我的例子中,目标系统不是 MySQL - 因此需要一个可以写入 MySQL.[=12 以外的数据库的解决方案=]
我对这种方法的一个担忧是停机时间。有没有人有更好的建议将 MySQL 数据库复制到另一种数据库?
Debezium MySQL 连接器可以使用 initial snapshot 个捕获的表。完成后,它会透明地切换到 binlog 读取模式。没有涉及停机时间,尽管有一些锁被占用(通常时间很短)。
(免责声明:Debezium 在这里领先)
有很多工具可以读取 MySQL 二进制日志,例如Tungsten、Maxwell、StreamSets、Debezium、Talend、Attunity 等...它们都要求在 MySQL 中启用二进制日志记录,并且它们在写入时读取这些二进制日志。
如果您有一个全新的数据库并从一开始就复制数据,那很好。我很想知道如果在启用二进制日志之前 MySQL 中已经有大量数据会发生什么。
一种方法是停止数据库以便不再向其写入数据,将数据复制到目标系统,启用二进制日志,然后重新启动。展望未来,增量更改将附加到目标系统,在我的例子中,目标系统不是 MySQL - 因此需要一个可以写入 MySQL.[=12 以外的数据库的解决方案=]
我对这种方法的一个担忧是停机时间。有没有人有更好的建议将 MySQL 数据库复制到另一种数据库?
Debezium MySQL 连接器可以使用 initial snapshot 个捕获的表。完成后,它会透明地切换到 binlog 读取模式。没有涉及停机时间,尽管有一些锁被占用(通常时间很短)。
(免责声明:Debezium 在这里领先)