iT邦幫忙

0

將MySQL中新增的資料定時複製到另一遠端資料庫

  • 分享至 

  • xImage

使用例大概是這樣:
有一個主機裡放了TCP Server接收一些設備傳來的資料,資料庫在遠端的MySQL空間裡,有另一個不同空間的網頁程式會取用此遠端資料庫

一些設備 <--> TCP Server <--> 遠端MySQL空間 <--> 網頁程式

TCP Server直接操作遠端資料庫的話,有點擔心不穩定而漏資料,目前的想法是資料來了先收在local的資料庫,然後定時複製新增的部份到遠端

我負責的是TCP Server相關的部份

資料庫部份希望的操作是定時將新增的資料複製到遠端資料庫,但又不是同步,因為複製過去後網頁端要刪要改就就與我無關了

想請教一下有沒有現成的工具可以做這事?沒有的話就是自己動手弄個小程式來定時複製了

看更多先前的討論...收起先前的討論...
天黑 iT邦研究生 5 級 ‧ 2023-01-06 15:32:42 檢舉
卡個位 我也好奇有沒有這種工具,新增的資料,這件事情應該不容易識別,即便要同步感覺還是要加開欄位來識別有沒有同步過資料
alien663 iT邦研究生 3 級 ‧ 2023-01-06 15:39:05 檢舉
做Database Sync
win895564 iT邦研究生 5 級 ‧ 2023-01-06 15:47:48 檢舉
可以查一下stored procedure
不過倒是需要一點點coding
James iT邦大師 6 級 ‧ 2023-01-06 16:51:36 檢舉
通常slave db會設為read only,但是不設為read only不會影響master到slave的replication,應該能達到你的需求,只是沒見過這樣設的不知道會不會有什麼問題。
Yaowen iT邦研究生 3 級 ‧ 2023-01-06 17:45:11 檢舉
Navicat 可以做到
vc0528 iT邦新手 3 級 ‧ 2023-01-07 19:27:14 檢舉
https://medium.com/dean-lin/%E6%89%8B%E6%8A%8A%E6%89%8B%E5%B8%B6%E4%BD%A0%E5%AF%A6%E4%BD%9C-mysql-master-slave-replication-16d0a0fa1d04
參考這個, 設好之後自動同步, 你會忘了它的存在
ntustzeus iT邦新手 2 級 ‧ 2023-01-11 14:35:33 檢舉
Replication我也有搜尋到,但同步和我的需求不太一樣…
看起來還是自己弄個小程式來跑好了,就把log表加上個bool欄位來表示是否已複製吧
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
ckp6250
iT邦好手 1 級 ‧ 2023-01-06 15:25:18

僅複製【新增部份】反而麻煩,萬一將來有修改欄位結構或新增表格時,還要再修改程式。

還不如定時將整個資料庫 export -> import 來得簡單。

直接用 mysql 指令+cron , 就解決了。

mysql -h From_Server -u xxx -pxxx -D xxx > yyy.sql
mysql -h To_Server   -u xxx -pxxx -D xxx < yyy.sql

(我就有這麼做!比較簡單)

ntustzeus iT邦新手 2 級 ‧ 2023-01-06 15:37:19 檢舉

整個export,所以您是匯出完後就刪表重來嗎?
不然資料表的大小可能會很可怕…
且export的期間又不知道多少筆資料進來了,要只刪匯出過的部份又要花不少功夫

ckp6250 iT邦好手 1 級 ‧ 2023-01-06 15:55:27 檢舉

凡是有利有弊,沒有十全十美的方案,但我考慮的是【省時省力】,這二行指令搞定一切,又安全可靠,不會漏失資料。

>且export的期間又不知道多少筆資料進來了
既然是用【定時】,本來兩端資料就會有一段時間不一致,又何必考慮這點?如果考慮這個,就不應該用定時的方式了。

===========================
不過,您又提到【因為複製過去後網頁端要刪要改就就與我無關了】,若是如此,我的方案就不可行,但您的工作可就複雜數十倍,因為您要判斷新增了若干筆?又,複製過去的資料,有成功嗎?有漏失嗎?還得再判斷,萬一本端新增了100筆,彼端因為什麼緣故,只收到99筆,那您還得後續補傳,麻煩死了。

我要發表回答

立即登入回答