主服务器是Informix,版本从9.40到最新,数据库未记录按设计无法更改。 Slave服务器是最新的PostgreSQL。主服务器和从服务器是独立的机器,网络延迟是不可预测的。主模式是静态定义的,众所周知且不会更改,因此它只是需要复制的数据。在master中,有三种类型的表:
我一直在寻找能够做到我需要的现有工具,但看起来没有一个是开源的。我可能会根据自己的需要编写一个,我正在寻找DB大师关于如何处理这项任务的建议。
在我的估计中,可能没有单一算法可以涵盖所有用例,所以我实际上可能正在寻找两到三种算法。这是我到目前为止所发现的:
我一直在研究这个话题,似乎问题的核心是主方缺乏交易。如果主数据库被记录,复制它会容易得多,但没有事务,任务突然变得复杂得多。首先,我如何确保没有欺骗?另一个,如何避免类型3表中的更新循环?考虑到所有这些,如何使复制尽可能快速反应?我的意思是数据更新和同步开始之间的延迟,数据传输是另一个主题。
赞赏任何意见。
答案 0 :(得分:0)
如果你无法以任何重要的方式改变主人,你就会有任何复制的时间。您的基本问题是,您没有真正的方法来实时处理复制更改,而无需跟踪已复制的更改,如果您无法更改主文件,则无法添加更改。所以简短的回答是,复制不是可以为您工作的解决方案。考虑到Informix的其他一些功能,我会考虑将其作为连续复制。
这导致了其他方法。很大的未知因素是网络可能不够可靠,只能链接数据库。这可能导致交易挂起,同时等待高延迟连接的数据到各种其他问题。您可能能够使用odbc fdw和informix提供程序或DBI-Link和DBD :: Informix,但这在我当前的环境中是一个问题。您可以在cron作业中使用这些来定期填充更接近您自己位置的第二个PostgreSQL服务器,但是我不会完全关闭该方法。
在我看来,您需要将这些数据的副本提供给PostgreSQL服务器。您可能希望执行ETL作业以定期导入数据。您可能希望使用辅助postgresql服务器和FDW或DBI-Link来提取数据。但这不太可能是实时的,也不可能是连续的。
tl; dr是你的环境没有真正设置来做到这一点。对于我的钱,我建议采用ETL方法,并接受你的奴隶不会与主人同步。