Azure SQL的 Managed instance(托管實例)

by adonisy 15. 二月 2021 13:00

Azure SQL的 Managed instance(托管實例)

 

作者:楊先民

審稿:張智凱


本期將要介紹一個貴桑桑的 SQL雲端資料庫,Managed instance,台灣的翻譯稱為受控執行個體

大陸的翻譯為托管實例,我個人其實比較喜歡托管執行個體,因為 instance這個英文,我一直都是翻譯為

執行個體的,而 managed這個單字,稱為可被管理,翻成受控又太直接,托管感覺比較像是交給雲端負責某塊業務的感覺一樣

總之,在本文中,我還是會用托管實例來稱呼這個功能。


託管實例 (MI) 是 Microsoft 提供的另一種平台即服務資料庫產品/服務。 


Azure SQL 資料庫通常是圍繞內置在雲中的應用程式而設計的產品/服務,而託管實例則是為了方便地將本地 SQL Server 資料庫遷移到

托管的 PaaS 產品/服務中而設計的。 


Azure SQL MI 和 SQL Server 的功能幾乎是完全相同的,包括 SQL Agent和對 tempdb 的訪問,不像 Azure SQL 資料庫那樣幾乎不能訪問單個資料庫之外的功能。

但是,操作系統和硬體資源仍然遠離用戶,也就是說,用戶並不需要操心硬體的事情。


Azure SQL 託管實例是一個功能齊全的 SQL Server,與你的本地生態系統幾乎 100% 相容,包括跨資料庫查詢和 .NET支援語言 (CLR) 之類的功能。

該服務使用與 Azure SQL 資料庫相同的基礎結構,並包括 PaaS 服務的所有優點,例如自動備份、自動修補和內建的高可用性等等。


選項


創建 Azure SQL 託管實例時有兩個可用的服務層(業務關鍵層和一般用途層),它們與 Azure SQL 資料庫 vCore 模型

(使用 vCore 模型購買的託管實例)相同。這兩個層之間的功能差異很小,主要的兩個差異是業務關鍵層包括記憶體內OLTP 並提供可讀輔助,

而一般用途層不具備這兩點。


這兩層都提供相同級別的可用性,並允許獨立配置儲存和計算。


高可用性


由於 Azure SQL 資料庫託管實例由 PaaS 服務支持,因此它是一種具備高可用性的產品。獨立託管實例提

供 99.99% 的服務級別協議 (SLA),保證每年最多 52.6 分鐘的故障時間。該體系結構與具有一般用途層

的 Azure SQL 資料庫相同,一般用途層使用儲存複製來提供可用性,而業務關鍵層則使用多個副本。


備份


雲端還自動為託管實例配置了自動備份。託管實例和 Azure SQL 資料庫之間的主要區別在於,使用託管實例

可以手動進行資料庫的僅副本備份。必須備份到 URL,因為不允許使用本地儲存。

還可以配置長期保留(LTR),以便在異地複寫到 Azure Blob 儲存中將自動備份保留長達 10 年。


資料庫的備份計劃與 Azure SQL 資料庫相同。這些計劃不可調整。


● 完整備份 - 每週一次

● 差異備份 - 每 12 小時一次

● 交易記錄 – 每 5-10 分鐘一次,具體取決於交易記錄的使用情況


將資料庫還原到託管實例也類似於 Azure SQL 資料庫的相關流程。可以使用:


● Azure Portal

● PowerShell

● Azure CLI


但是,還原時存在一些限制。為了從一個實例還原到另一個實例,兩個實例必須位於同一 Azure 訂閱以及同一 Azure 區域中。

也不能還原整個託管實例,只能還原託管實例自身內的各個資料庫。


與 Azure SQL 資料庫一樣,無法在現有資料庫上進行還原。從備份還原現有資料庫之前,必須將其刪除

或重命名。由於託管實例是功能完整的 SQL Server 實例,因此可以執行 RESTORE 命令,而對於 Azure

SQL 資料庫則無法執行。但是,由於它是 PaaS 服務,因此存在局限性。

 

● 必須從 URL 終結點還原。你無權連結本地磁碟。

● 除了指定資料庫之外,還可以使用以下選項:

● FILELISTONLY

● HEADERONLY

● LABELONLY

● VERIFYONLY

● 包含多個交易記錄文件的備份文件無法還原

● 包含多個備份集的備份文件無法還原

● 包含 In-Memory/FILESTREAM 的備份無法還原


預設情況下,使用帶有 Microsoft 託管金鑰的透明資料加密 (TDE) 對託管實例中的資料庫進行加密。


為了進行用戶發起的僅複製備份,必須關閉特定資料庫的 TDE。我們將在之後會說明 TDE 的更多資訊。

如果資料庫是加密的,則可以將其還原,但是,需要確保有權訪問用於加密資料庫的憑證或非對稱金鑰。

如果沒有其中任意一項,則將無法將資料庫還原到託管實例。


災難恢復


Azure SQL 資料庫託管實例提供自動故障轉移組,作為實現災難復原的一種方式。請注意,此功能可保護

整個託管實例及其中包含的所有資料庫,而不僅僅是特定的資料庫。


此過程將數據從 Azure SQL 託管實例非同步複製到輔助的資料庫;


但是,當前它僅限於與主副本匹配的 Azure 區域,並且只允許一個副本。


與 Azure SQL 資料庫非常相似,自動故障轉移組提供讀寫和只讀偵聽器終結點,有助於簡化連接字符串管理。

發生故障轉移時,應用程序連接字符串將自動路由到合適的實例。


儘管這些端點與 Azure SQL 資料庫相當一致,但是它們遵循略有不同的格式,即 <fog-name>.zone_id.database.windows.net,

而 Azure SQL 資料庫採用 <fog-name>.secondary.database.windows.net 格式。


每個託管實例(主實例和輔助實例)必須位於同一 DNS 區域內。這將確保相同的多域證書可用於同一故障轉移組中的任意兩個實例

之間的客戶端連接身份驗證。


可使用各種方法(例如 Azure 門戶、Power-Shell 或 Azure CLI)指定"DNS 區域合作夥伴",以簡化此過程。


在下一期中,將要介紹如何在 Azure中部署 MariaDB、MySQL 和 PostgreSQL這些非 SQL Server資料庫。

Tags:

SQL Server資料庫 | 楊先民Adonis Young

不允許評論

NET Magazine國際中文電子雜誌

NET Magazine國際中文電子版雜誌,由恆逸資訊創立於2000,自發刊日起迄今已發行超過500篇.NET相關技術文章,擁有超過40000名註冊讀者群。NET Magazine國際中文電子版雜誌希望藉於電子雜誌與NET Developer達到共同學習與技術新知分享,歡迎每一位對.NET 技術有興趣的朋友們多多支持本雜誌,讓作者群們可以有持續性的動力繼續爬文。<請加入免費訂閱>

月分類Month List