2011-08-27 61 views
19

我試圖對我自己的我的第一個大型數據庫項目。 我有一個myisam MySQL數據庫服務器1與PHP應用程序消耗大量的各種數據。 我有MySQL myisam在服務器2與PHP應用程序選擇和顯示數據。音樂傳送帶相對複製諮詢和技術

我想複製服務器上的這些數據2.

問題:

  1. 我應該改變服務器1 MySQL數據庫InnoDB的
  2. 您可以複製服務器1的InnoDB到Server2的MyISAM
  3. 我將媒體存儲爲斑點,意圖使用緩存來減輕活動服務器上的壓力。我應該使用文件系統存儲和rsync。
  4. 來自其他有經驗人士的一般建議?

回答

26

下面是根據我的經驗是我的建議。

  1. 對於兩臺服務器,您都可以使用一種類型的引擎(MyISAM或InnoDB)。 我混淆了兩個引擎,你可能會遇到死鎖,交易問題等等,修復它們的時間可能會很痛苦。 我之前在InnoDB - > MyISAM中遇到過問題。現在我在所有服務器上使用了MyISAM。

  2. 對於存儲介質(如圖片,視頻或文檔),你可以創建一個NFS和掛載像/ usermedia /兩臺服務器訪問的文件夾。 因此,您不必每次都進行rsync。另外,您可以將元數據或媒體信息保存到數據庫以供參考,並將文件保存在磁盤上。 注意:根據媒體使用blob保存文件可能很好。例如,如果你有一個文件大概是1 gig,保存數據庫可能不是個好主意)。

  3. 使用高速緩存系統以檢索數據(例如,分佈式緩存)。 例如,如果您請求數據並且需要將它們顯示給用戶,請首先查看緩存。如果它不在緩存中,請查詢數據庫,將其保存到緩存並顯示。 下一次請求相同的信息時,您不會從服務器請求它,而是從內存請求它。該解決方案將避免數據庫服務器上的多次調用,從而提高性能。

讓我知道你是否需要額外的幫助。

+0

謝謝。媒體文件是圖像。 3種不同尺寸的相同圖像版本。文件大小從10K到80K不等,不太可能超過這個數字。考慮到這一點,它的規模仍然會很大。這很重要嗎?或者,mysql對這份工作足夠強硬。當然,memcached將在實時端使用。 – user915831

+0

我喜歡nfs的想法。但由於這是個人項目,我的資金有限。我有一個很好的現場專用服務器。在帶寬不受限制和t1連接的數據中心中。我在辦公室裏有一臺內部服務器,但受到互聯網上游連接的約束,這個連接約爲512MB 20MB。因此,通過此圖標在內部服務器上的nfs連接將會降低消費軟件的性能 - 對嗎? – user915831

+0

服務器是否在同一個數據中心?他們可以在沒有VPN的情況下互相交談嗎?檢查這個鏈接http://how-to.linuxcareer.com/how-to-configure-nfs-on-linux。也許你可以開始在數據庫中存儲圖像,因爲它們很小,如果升級到較大的介質,則可以轉到NFS解決方案。 –

23

我會推薦InnoDB(用於交易,行鎖定和不鎖表)和redis作爲緩存非常快速和高效