您在這裡

同时向多台服务器上的数据库插入数据

happy8888's 的頭像
happy8888 在 2010-03-16 (二) 11:44 發表

我们有多台服务器,服务器上的数据库都是一样的,数据也是一样的,但用户注册的时候,要同时更新每台服务器上的数据,也就是向多台服务器上的数据库插入数据,但修改资料的时候也要同步更新,这个该怎么实现,比较好呢?

至於會不會有不好的影響~我個人覺得是沒什麼影響~我覺得比較麻煩是你得再寫一套程式處理各不同平台欄位insert into要如何插入資料表的結構問題~
像是drupal它的一個使用者註冊寫入所記錄在那些欄位表中~有權限users_roles、有使用者users這些資料表~

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

您是用哪種資料庫?

MySQL 的話,有 replication 機制
MySQL 設定 Replication (Master - Slave)

千萬要從架構下手,寫程式的話,程式會被拖慢
假使本來一頁有 100 個 insert/update,改程式的話,就變成 200...300...400 個 insert/update
master-slave 之間的 replication,應該是 non-blocking,簡單說,就是不會因為有多台 slave,導致程式變慢。

除了 master-slave, 也有這種架構
MySQL Master-Master Replication Manager(1) - 簡介
MySQL Master-Master Replication Manager(2) - 環境建置、架設

不好意思,因為你說數據庫完全一樣,我以為 schema 完全一樣。

1) 少量的話,程式直接寫入其他DB 服務器也不是不行,但是要考慮到,若是主要 DB 寫入成功,其他寫入失敗、程式要怎麼處理 ?
rollback 主要 db ? 還是繼續給 user 操作,導致多台主機資料不一致 ?

2) 不過,若是求資料的完整性 (多台主機都一致),可以考慮用派送資料的方式,單獨寫成 cron 來做,缺點是會有短暫時間不一致。

3) 使用 1 + 2 的方案