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 高可用版支持資料庫優化顧問嚮導
查看資料庫日誌
非常簡單:
單機版請參考下列鏈接
https://www.atatech.org/articles/60838
更多技術乾貨敬請關注云棲社區知乎機構號:阿里云云棲社區 - 知乎
推薦閱讀:
※簡析關係型資料庫和非關係型資料庫的比較(下)
※簡析關係型資料庫和非關係型資料庫的比較(上)
※什麼鬼!基於備份恢復的數據還能變多?
※七周成為數據分析師:SQL,從熟練到掌握
※Python採集微博熱評進行情感分析祝你狗年脫單