ApsaraDB For SQL Server Multi-AZ 高可用版資料庫使用介紹

摘要: ApsaraDB For SQL Server Multi-AZ 高可用版資料庫使用介紹 引言 RDS SQL Server Multi-AZ 高可用版涵蓋了SQL Server 2008 R2標準版和企業版、SQL Server 2012 標準版和企業版、SQL Server 2014 標準版和企業版、SQL Server 2016 標準版和企業版 。

原文

ApsaraDB For SQL Server Multi-AZ 高可用版資料庫使用介紹

引言

RDS SQL Server Multi-AZ 高可用版涵蓋了SQL Server 2008 R2標準版和企業版、SQL Server 2012 標準版和企業版、SQL Server 2014 標準版和企業版、SQL Server 2016 標準版和企業版 。目前能夠購買的是SQL Server 2012 標準版和企業版和SQL Server 2016 標準版和企業版。高可用的基本原理是基於資料庫鏡像技術實現Master-Slave架構 。在高可用版本中,我們為什麼叫 Multi-AZ,是因為首先我們的默認是基於多可用區的,當然也可以是單可用區,都是兼容的。本次發布的產品,相對於老的SQL Server 2008 R2具有很多特性。既滿足了傳統用戶的使用習慣,又適應了雲服務化的資料庫特性,因此在構建產品過程中選擇了比較合理的方案,其目的是簡化用戶工作,又能增強資料庫的安全與穩定。我們的期望是讓用戶使用簡單、快速、高效、精細。

新架構下高可用特性

1. 更安全:RDS始終位於用戶自己的私有網路中(VPC)

2. 更易用:許可權開放足夠大,用戶自操作很強

3. 擴展好:彈性升級和空間擴展會非常快速和穩定

4. 更親民:克隆實例和克隆資料庫讓你操作簡單和快速,上雲方式更簡潔精確

5. 更高效:捨棄很多OPENAPI,直接利用T-SQL或者Ali-T-SQL對資料庫進行操作和管理

LOGIN的使用

Login的使用

RDS SQL Server Multi-AZ 高可用版創建Login與單機版類似,但會做一些操作日誌和規範,比如不能刪除RDS系統的相關Login,也不能更改其密碼,如果刪除和更改就會失敗。同時主庫和備庫實例的Login存在一個同步問題 。具體如下所述。前提是加入有初始賬號(這裡是test)。

創建Login

基於 SQL Server Multi-AZ的2008 R2高可用版本(非原來2008 R2)版本:

MSG:

Login User [test] grant login [test001] server role.

User [test001] server level permissions handled completed.

user [test001] in msdb permissions handled completed.

Handle user [test001] permissions completed.

注意: 由於SQL Serve 2008 R2 設計機制問題,在創建Login時,增加伺服器級別的角色不可以在登錄觸發器裡面有效運行,原因是事務不能包含在登錄觸發器,所以未主動加入processadmin和setupadmin角色,由於RDS SQL Server 2008 R2 Multi-AZ 高可用版的初始賬號具有processadmin和setupadmin角色,因此用戶可以手動加入這兩個角色,前者會影響KILL許可權,後者會影響創建鏈接伺服器的使用。

其他版本(SQL Server Multi-AZ 2012/2014/2016):

Login User [test] grant login [test001] server role.

User [test001] server level permissions handled completed.

user [test001] in msdb permissions handled completed.

Handle user [test001] permissions completed.

與2008 R2不用的是processadmin和setupadmin角色會自動加入到新建用戶中。

更新Login

你可以更改你的登錄賬戶的密碼,例如:

但你不能更改RDS系統相關賬戶的密碼,例如:

MSG:

刪除Login

同樣,你不能刪除你創建的任何之外的LOGIN,否則會出現一下錯誤:

Login的主備同步

RDS SQL Server Multi-AZ 高可用版是master-slave架構,雖然資料庫級別在做鏡像後是可以同步到slave節點,但是實例級別的很多對象都是無法自動同步過去的,凡是對象存儲在系統資料庫master、msdb中的,都需要主動實現同步,RDS採用了准實時的同步策略,當你創建Login後,Login會很快同步到slave中,同步過程中會將LOGIN的sid和hash passward帶到slave,當你的RDS實例主備切換後,你無需新建Login,可無縫保持業務永續!

Database的使用

Database 的使用

RDS SQL Server Multi-AZ 高可用版 在資料庫層面做了非常多的改善,也提供了很多有用的功能,但這些功能是有些限制的,不過只要遵守這些規則,用起來還是會感覺到很清爽。

創建資料庫

創建資料庫時,你無需指定路徑,路徑會規範好,即使指定路徑,也是要符合規範,否則就會創建失敗。例如:

成功:

這你會看到當你創建一個資料庫後,你就被授予了這個資料庫的db_owner角色,擁有了這個角色,你可以為其他用戶分配許可權和角色。但所有資料庫用戶會回收掉資料庫備份許可權,並且你通過其他方式加不回去這個許可權的。

違反規範:

更新資料庫

1. 更改屬性需要符合路徑規範

2.不能將資料庫恢復模式設置為simple和 bulk_logged

更改前需要移除鏡像關係。

3. 不能將資料庫設置為offline

以前我們有個專門讓offline上線的存儲過程,但現在我們的策略是不準確讓用戶OFFLINE

刪除資料庫

因為有鏡像關係存,所以不能直接刪除資料庫,需要將資料庫的鏡像關係先移除,注意,因為考慮到用戶可能無意間解除鏡像關係,我們在48秒後會考慮重新恢復鏡像關係,所以需要考慮及時性。

你可能會遇到刪除資料庫失敗的問題,因為可能存在一些SESSION佔用,需要將這些SESSION KILL掉就好了。

RDS也提供一個方便的T-SQL幫助你一鍵搞定:

克隆資料庫

克隆資料庫的使用在ERP軟體中非常廣泛,在構造測試資料庫,初始化資料庫得到應用,正常的資料庫上雲可能會花掉20分鐘,克隆資料庫只需要幾分鐘就搞定,你只需要指定下面命令即可:

CDC

直接使用CDC功能是需要很高許可權的,因此我們提供了一個T-SQL介面,讓用戶可以設置 :

啟用DB的CDC功能

關閉CDC功能

Change Tracking

開啟變更跟蹤:

關閉變更跟蹤:

創建用戶

刪除用戶

分配角色

授權資料庫

在很多用戶使用資料庫過程中,會遇到一些全局授權的問題。我們提供了T-SQL來一鍵實現

對一個用戶針對所有用戶資料庫授權:

對一個用戶的某些用戶資料庫授權:

資料庫主備同步

資料庫同樣存在主備同步的問題,而且在創建資料庫,刪除資料庫,克隆資料庫都會同步。創建和刪除在規則約定上相對容易,觸發機制簡單,DDL觸發器完成。克隆資料庫的觸發用戶運行命令完成。創建和克隆資料庫會走主備搭建鏡像的邏輯。克隆資料庫如果源資料庫較大,需要的時間比較長。

資料庫備份

RDS提供備份服務,不需要用戶備份,備份許可權回收。

DBCC 設置

目前支持的標記有:(1222),(1204),(1117),(1118),(1211),(1224),(3604) 。使用方法:

開啟:

關閉:

資料庫實例參數設置

目前受支持的參數設置有:

(Nfill factor (%),0),

(Nmax worker threads,1),

(Ncost threshold for parallelism,1),

(Nmax degree of parallelism,1),

(Nmin server memory (MB),1),

(Nmax server memory (MB),1),

(Nblocked process threshold (s),1)

設置參數:

創建鏈接伺服器

創建鏈接伺服器是個複雜的工作,如果只做簡單的鏈接伺服器,就很容易,如果要利用到分散式事務,就需要特別對待,但我們提供了一鍵部署鏈接伺服器和分散式事務的方案,同時支持HA切換無縫對接,讓業務永續,請注意,一定要利用我們的方案,否則將無法實現功能。

還可以指定一個參數,指定鏈接伺服器的屬性:例如

鏈接伺服器驗證非常簡單:

分散式事務驗證:

第一步: 在目的實例創建一個賬戶test_link

第二步: 以test_link用戶創建一個db

第三步: 在db庫中創建一個存儲過程

第四步: 在源實例執行下列代碼: 直接執行EXEC mylink.db.dbo.p_get_host_name是不要求分散式事務開通,但將EXEC mylink.db.dbo.p_get_host_name結果插入到一個表對象是需要開啟分散式事務,如果有結果集生成,表示分散式事務功能正常:

SQL Agent

SQL Agent創建的owner是創建者,不能刪除別人創建的JOB,同時,JOB其實也是存儲在MSDB中的,如果HA切換,JOB也是需要同步過去的,我們的系統也是在准實時同步JOB的新建,更改和刪除。做到讓用戶業務永續。

KILL許可權

RDS SQL Server Multi-AZ 高可用版支持,直接使用KILL 進程號。 例如:殺掉55號進程:

Profiler許可權

RDS SQL Server Multi-AZ 高可用版支持性能跟蹤許可權

資料庫優化顧問嚮導

RDS SQL Server Multi-AZ 高可用版支持資料庫優化顧問嚮導

查看資料庫日誌

非常簡單:

單機版請參考下列鏈接

atatech.org/articles/60

更多技術乾貨敬請關注云棲社區知乎機構號:阿里云云棲社區 - 知乎


推薦閱讀:

簡析關係型資料庫和非關係型資料庫的比較(下)
簡析關係型資料庫和非關係型資料庫的比較(上)
什麼鬼!基於備份恢復的數據還能變多?
七周成為數據分析師:SQL,從熟練到掌握
Python採集微博熱評進行情感分析祝你狗年脫單

TAG:架構 | 資料庫 | 伺服器 |