2016-08-18 27 views
1
  1. 我有一個MySQL服務器和一個PostgreSQL服務器。
  2. 需要複製或重新插入MySQL的多個表 中的一組數據,以便將流/同步到PostgreSQL表。使用PostgreSQL同步/流MySQL表/表(連接表)

  3. 此複製可以基於時間(同步)或事件,例如 表中的新插入(Stream)。

    我試過使用下面的複製工具,但所有這些工具都能夠將表格同步到表格中。它不允許從源數據庫(MySQL)的不同表格中選擇列並插入到不同的表格中目標數據庫(PostgreSQL)。

    • Symmetricds
    • dbconvert
    • pgloader
    • PostgreSQL的FDW

    現在我要編寫一個應用程序從MySQL 查詢數據並插入到PostgreSQL作爲cron作業。 它的麻煩和錯誤容易同步數據。 這是無法流式傳輸(基於事件)實時複製的數據。

    如果一些工具已經解決了這個問題,那將會很棒。 請讓我知道是否有開源庫或工具可以爲我做到這一點。

    在此先感謝。

回答

1

要實現複製與你提出你可以做以下工具之一:

在PostgreSQL中創建一個獨立的模式,並添加意見,使他們完全複製的MySQL表結構。然後,您將添加規則或觸發器到視圖來處理插入/更新/刪除並將其重定向到您選擇的表格。

通過這種方式,您可以在複製過程中完全自由地轉換數據,但仍然使用常用工具。

+0

嗨鮑里斯,我認爲它是一個不錯的主意,我會盡力讓你發佈。是否有必要將複製表保存在VIEW或PostgreSQL中,或者我可以將它保存在表本身中? – stallion

+1

PostgreSQL中視圖和表的行爲幾乎相同。當然,你也可以用桌子來實現這一點。然後你還必須提供一些讀取功能(在PostgreSQL端更改表格數據時保持最新),而視圖會自動處理。 –

0

也許這個工具可以幫助你。 https://github.com/the4thdoctor/pg_chameleon

Pg_chameleon是一個從Python到2.7/3.5開發的MySQL到PostgreSQL的複製工具。系統依靠mysql-replication庫來從MySQL中獲取更改並將其轉換爲jsonb對象。 plpgsql函數解碼jsonb並將更改重放到PostgreSQL數據庫中。

該工具可以初始化從MySQL中提取數據的副本,但這需要FLUSH TABLE WITH READ LOCK;正常工作。

當MySQL slave配置了log-slave-updates時,該工具可以從級聯副本中提取數據。