sqlserver實現讀寫分離,主從複製的具體步驟

2021-09-29 11:34:00 字數 2515 閱讀 2344

讀寫分離概述

讀寫分離從字面意思就可以理解,就是把對資料庫的讀操作和寫操作分離開。讀寫分離在**發展初期可以一定程度上緩解讀寫併發時產生鎖的問題,將讀寫壓力分擔到多台伺服器上,通常用於讀遠大於寫的場景。

讀寫分離的基本原理是讓主資料庫處理事務性增、改、刪操作(insert、update、delete),而從資料庫處理select查詢操作。資料庫複製被用來把事務性操作導致的變更同步到集群中的從資料庫。單錶的資料量限制,當單錶資料量到一定條數之後資料庫效能會顯著下降。資料多了之後,對資料庫的讀、寫就會很多。分庫減少單台資料庫的壓力。

以oracle為例,主庫負責寫資料、讀資料。讀庫僅負責讀資料。每次有寫庫操作,同步更新cache,每次讀取先讀cache在讀db。寫庫就乙個,讀庫可以有多個,採用dataguard來負責主庫和多個讀庫的資料同步。

讀寫分離的好處

1.資料是**的生命,讀寫分離通過主從備份資料,保證了系統的冗餘,保護了珍貴的資料。

2.提高了系統效能,一定程度提高了資料庫負載能力。

讀寫分離實現方式

目前讀寫分離方案網上找了幾個並做了對比。

1.mycat 基於阿里的cobar改版的(比較穩定,論壇活躍)

2.atlas 360開發的 網友說不是很穩定 (已經很久沒更新)

3.mysql-proxy mysql自帶 (不是很穩定)

4.oneproxy 比較穩定 效能也很好 (需要付費)

5.amoeba 好像還行,有一些公司使用 (但是很久沒有更新了)

主從複製

主從複製,是用來建立乙個和主資料庫完全一樣的資料庫環境,稱為從資料庫;

主資料庫一般是實時的業務資料庫,從資料庫的作用和使用場合一般有幾個:

一是作為後備資料庫,主資料庫伺服器故障後,可切換到從資料庫繼續工作;

二是可在從資料庫作備份、資料統計等工作,這樣不影響主資料庫的效能;

mysql支援單向、非同步複製,複製過程中乙個伺服器充當主伺服器,而乙個或多個其它伺服器充當從伺服器。

mysql複製基於主伺服器在二進位制日誌中跟蹤所有對資料庫的更改(更新、刪除等等)。

因此,要進行複製,必須在主伺服器上啟用二進位制日誌。每個從伺服器接收主伺服器已經記錄的二進位制日誌來儲存更新。

當乙個從伺服器連線主伺服器時,它通知主伺服器從日誌中讀取最後一次成功更新的位置。

從伺服器接收從那時起發生的任何更新,並在本機上執行相同的更新。然後封鎖並等待主伺服器通知新的更新。

從伺服器執行備份不會干擾主伺服器,在備份過程中主伺服器可以繼續處理更新

sqlserver讀寫分離方案對比

sqlserver讀寫分離方案對比

讀寫分離方案

實時同步

副本資料是否直接可讀

副本數最小粒度

副本建立索引

環境缺點映象是

否(需要開啟快照,唯讀)1庫

否域/非域(使用證書)

在高安全模式下對主庫效能有一定影響

log shipping

否是(唯讀)n庫

否unc方式可訪問

副本庫在做resotre時會斷開已連線使用者連線/可能影響常規日誌備份

發布訂閱

是是(讀寫,但寫可能會產生資料不一致)

n表(查詢)

是域/非域

在主庫上有大量dml操作時,對分發伺服器會有一定影響,且訂閱資料庫可能有資料同步延遲

always on

是是(唯讀)

4(sql 2012) 8(sql 2014)庫否

域非域環境無法使用

具體步驟

閒暇時間,再來完善。

sqlserver配置管理器-sqlserver網路配置-tcp/ip 啟用 並設定ip3的ip位址為本機的區域網固定ip,所有埠設定成1433 並啟用

設定ipall的埠為1433 重啟sqlserver服務

防火牆需要開啟1433埠

至此 資料庫可以通過區域網鏈結

sqlserver配置管理器-sqlserver網路配置-named pipes設定為啟用

啟動sqlserverbrowser服務:

我的電腦 右鍵 - 管理 - 服務與應用程式

找到sql server browser 右鍵 屬性

將禁用改為自動|手動-應用-啟動

通過sql:

select @@servername,serverproperty(『servername』)

可以獲取到本機的伺服器名\例項名

使用獲取到的伺服器名\例項名連線sqlserver

主伺服器:建立發布

複製-本地發布-一路下一步-選擇要發布的資料庫-合併發布-全選-下一步*2-立即建立快照-更改計畫,設定每1天執行一次 間隔10-60分鐘,00.00-23.59執行。-**全部選擇第二個-下一步-設定發布名-完成

從伺服器:設定訂閱

發布伺服器:查詢sqlserver發布伺服器 連線到主伺服器(用機器名連線)選擇要訂閱的發布(不出意外的話就乙個)-選擇在分發伺服器上執行所有**

-訂閱資料庫直接新建(提前建好也可以)-**全部選擇第二個-**計畫為連續執行-初始化 立即-下一步-完成

sqlserver實現資料庫讀寫分離介紹

對於負載均衡,筆者經常接觸的當屬oracle的負載均衡機制。下面我們重點介紹sql server 2005是如何實現負載均衡的,感興趣的朋友可以參考下哈 internet的規模每一百天就會增長一倍,客戶希望獲得7天 24小時的不間斷可用性及較快的系統反應時間,而不願屢次看到某個站點 server t...

mysql讀寫分離(三) 讀寫分離實現

現在的mysql讀寫分離方案有很多,在這裡筆者列舉出幾種自己使用過的方案 1.spring實現route不同的資料來源,來達到讀寫分離的目的。主要原理是根據service或者dao方法做切面,然後根據規範方法名字首來切換不同的資料來源,實現讀寫分離,好處,速度快,支援事務,但是缺點,是不好管理 2....

SqlServer 併發系列之讀寫分離

資料庫處理高併發兩種方式 垂直和水平 區分 垂直區分 分布式資料庫 按模組獨立出單獨資料庫。缺點 對系統各個模組設計要較高要求,高內聚低耦合,改造難度較大。同時如果資料達到乙個新的臨界點,還是會存在訪問效能低下的可能,比如乙個訂單資料庫,訂單數量達到1000萬單。水平區分 讀寫分離 劍聖分身的方式,...