在生産環境中我們經常會遇到這種情況:
前端的oltp業務很繁忙,但是需要對這些營運資料進行olap,為了不影響前端正常業務,是以需要将資料庫進行讀寫分離。
這裡我将幾種可以用來進行讀寫分離的方案總結一下,這裡并不考慮資料庫是否高可用,隻針對讀寫分離場景,方案本身并無優劣可言,隻看是否适合業務使用場景,是以隻把幾個方案的特點羅列出來,遇到具體的問題時按自己需求和環境綜合考慮後再進行取舍
讀寫分離方案 | 實時同步 | 副本資料是否直接可讀 | 副本數 | 最小粒度 | 副本建立索引 | 環境 | 缺點 |
鏡像 | 是 | 否(需要開啟快照,隻讀) | 1 | 庫 | 否 | 域/非域(使用證書) | 在高安全模式下對主庫 性能有一定影響 |
log shipping | 是(隻讀) | N | UNC方式可通路 | 副本庫在做resotre時會斷開已連接配接使用者連接配接/可能影響正常日志備份 | |||
釋出訂閱 | 是(讀寫,但寫可能會産生資料不一緻) | 表(查詢) | 域/非域 | 在主庫上有大量DML操作時,對分發伺服器會有一定影響,且訂閱資料庫可能有資料同步延遲 | |||
always on | 4(sql 2012) 8(sql 2014) | 域 | 非域環境無法使用 |