Mysql

本地和雲數據庫僅同步失去的數據

  • October 21, 2019

我們已經建立了一個記錄大量數據的物聯網設備。這些數據總是進入本地網關 mysql 數據庫,如果有網際網路連接,它也會進入雲數據庫。

我們現在這樣做的方式是連接到兩個數據庫並同時將數據插入到兩個數據庫中。我們沒有主從類型設置。我認為我們不能進行主從設置,因為您必須在 my.cnf 中指定要同步的數據庫(鑑於我們的設置,這是不可能的,因為每個本地設備在雲中有很多數據庫)。

所以我的問題是,如果本地設備上的網際網路連接失去,並且云失去了一些數據,那麼在重新建立連接後更新雲數據庫的最佳方法是什麼?

我目前的答案: 我在想我可以比較本地和雲數據庫的主鍵,然後更新雲上缺少的主鍵——但是我必須確保云主鍵與本地的相同(這意味著我必須在本地數據庫上選擇 auto_incremented 值並在雲上使用相同的值)。

我不是一個優秀的數據庫管理員,但足夠了解。任何幫助或想法將不勝感激。如果我能澄清任何事情,請告訴我。

由於我無法發表評論,我會提出一個建議:與其玩自動增量,你能想到最好的時間戳行嗎,(DD-MM-YYYY HH:MM:SS)?然後,您可以比較本地和雲的時間戳值。

分享我的想法來解決這個問題。

  1. 首先,不需要數據庫端更改。
  2. 從設備應用程序端,一旦網際網路恢復,您需要有一個重試邏輯以在雲中更新。
  3. 在找到連接之前,將條目串列記錄到該設備的本地。
  4. 一旦找到連接,從設備重新生成記錄的條目並讓它像雲正常更新一樣進行。

為什麼你認為你需要比較數據?無論如何,我猜它必須去DB。您可以將 current_timestamp 作為 DB 的列之一,並且可以在設備使用設備 NTP 生成其本地數據時派生值。

引用自:https://dba.stackexchange.com/questions/175795