减少配置 tables:SymmetricDS

Reduce config tables:SymmetricDS

好吧,我正在尝试将数据从内存中的 DB1 迁移到我的 DB2。为此,我使用 SymmetricDS,其配置方式是,当 SymmetricDS 启动时,它将执行从 DB1 到 DB2 的初始加载。此外,每当 DB1 中发生某些数据修改时,同样的数据也会被拉到 DB2 中。

现在这是我遇到问题的地方。 SymmetricDS 要求在 DB1 端和 DB2 端都存在配置表或 Sym 表。

由于我的 DB1 在内存中,这些配置表占用了大量内存。

所以我想知道的是是否有办法从 DB1 端将配置表完全保存在单独的磁盘数据库中,同时保留现有功能?

希望我能说清楚。

我们将不胜感激。

容易实现的目标是减少清除周期,即将参数 job.purge.period.time.ms 从五天(以秒为单位 -- 7200000)减少到几个小时。 SymmetricDs 将更频繁地清理所有成功同步的传出批次 (sym_outgoin_batch) 和关联的提取数据 (sym_data),从而降低内存占用量。

SymmetricDs 允许将其表保存在另一个目录 and/or 模式中,这并不能真正解决您的问题。

SymmetricDS 3.9 将提供 "load only" 功能,允许您加载到数据库中并在磁盘 H2 数据库中创建符号表。这将允许您在没有任何符号表的情况下复制到 D2。

选项 1: 最小化运行时 table 的占用空间。您可以积极清除运行时 tables。例如,每 10 分钟清除一次,只保留 10 分钟的 activity:

purge.retention.minutes=10
job.purge.incoming.cron=0 */10 * * * *
job.purge.outgoing.cron=0 */10 * * * *

完全避免录制 incoming_batch table:

incoming.batches.record.ok.enabled=false

选项 2: 将 SymmetricDS 放入另一个数据库。将 SymmetricDS 设置为指向数据库,例如基于 H2 文件的数据库。这就是所有 "SYM" table 的位置。然后配置 "jdbc" 参数以加载到内存数据库中。例如,您可以加载到 Apache Ignite:

jdbc.db.url=jdbc:ignite:thin://localhost
jdbc.db.driver=org.apache.ignite.IgniteJdbcThinDriver
jdbc.db.user=
jdbc.db.password=

然后将您用于加载数据的通道(例如 "default" 和 "reload" 通道)的 sym_channel.data_loader_type 设置为 "jdbc"。