嵌入雲端:12c Policy-Managed Cluster為Oracle DBaaS助力
張樂奕
雲和恩墨副總經理,Oracle ACE 總監,ACOUG 聯合創始人
Policy-Managed Cluster 在 Oracle 11gR2 中被引進,在 Oracle 12c 中使用 dbca 創建 RAC 數據庫的時候,Policy-Managed 選項已然成為默認值。
那麼到底什麼是 Policy-Managed 方式的集群和數據庫呢?與以前的 Admin-Managed 方式有何區別?何種環境適合使用這種新的方式進行管理?本文嚐試回答這些問題,並且做出簡單的測試。
什麼是 Policy-Managed 方式?
基於策略的管理方式,是以服務器池(Server Pools)為基礎的,簡單地說,就是先定義一些服務器池,池中包含一定量的服務器,然後再定義一些策略,根據這些策略 Oracle 會自動決定讓多少數據庫實例運行在池中的幾台機器上。數據庫實例名後綴、數據庫實例個數、所運行的主機,這些都是通過策略決定的,而不是數據庫管理員事先定好的。
與 Admin-Managed 方式有何區別?
實際上上麵的表述已經明確說明了,Policy-Managed 和 Admin-Managed 方式的差別。讓我們再回顧一下,在以往我們創建一個 RAC 數據庫大概是怎樣的方法,我們在dbca的界麵中會選擇要將數據庫實例運行在整個集群中的幾台機器上,或者是2台或者是3台,或是更多,但是隻要在安裝的時候選定幾台機器,那麼以後如果不做增減節點的操作,就始終會在這幾台機器上運行。而且,通常會根據主機名稱的排序自動將每台主機上的數據庫實例依次命名為 dbname1 到 dbnameN。這些在管理員安裝完畢以後,都不會再自動變化,這就是 Admin-Managed 方式。
何種環境適合使用這種新的方式進行管理?
當管理大量的服務器集群,並且在這些集群中運行著多種不同重要程度,不同策略的RAC數據庫時,為了簡化管理,建議使用 Policy-Managed 方式,實際上 Oracle 也建議隻有在超過3台的服務器的時候才使用 Policy-Managed 來管理整個數據庫集群。想象一下使用 Policy-Managed 方式可以達到的效果:如果我們有10台服務器組成,根據不同的應用的重要性定義服務器池的關鍵程度,然後在其中某些機器意外停機的情況下,仍然可以自動地保持足夠多的機器給重要的係統提供數據庫服務,而將不關鍵的係統數據庫服務器個數降低到最低限度。
那麼 Policy-Managed 方式到底長什麼樣?
在默認安裝完 Oracle 12c 的 RAC 數據庫之後,發現數據庫實例始終隻會啟動在一個節點中。檢查服務器池配置。
Free 池和 Generic 池是默認存在的,orcl_pool 池則是在 dbca 創建數據庫的時候由我們自己定義的。其中Min: 0, Max: 1表示在這個池中最少允許有0台機器,最多允許有1台機器被使用。所以這也造成了使用這個服務器池的數據庫實例始終隻會啟動在一個節點中,即使這在我們最初的定義中是一個 RAC 數據庫。
當前的數據庫實例啟動在節點2中,比較一下節點1和節點2服務器使用情況的輸出。
接下來需要修改一下配置,讓 RAC 數據庫以我們熟知的方式啟動在多個節點上。 –修改 orcl_pool 池中最少運行一台機器,最多運行2台機器,還記得我們前麵說的關鍵程度嗎? importance 表示該池的關鍵程度,數字越大表示關鍵程度越高,越優先被考慮滿足 Min 條件。
–重新檢查服務器池信息,可以看到已經修改成功,Min: 1, Max: 2
–查看當前服務器池的狀態,可以看到orcl_pool池中激活的服務器包括了節點1和節點2兩台機器。
在修改完畢以後,節點1中的數據庫實例就會自動啟動,我們可以通過 crsctl 命令查看服務器的狀態,其中 STATE_DETAILS 字段顯示了正在啟動資源,在正常啟動完畢以後該字段會顯示為空。
現在就出現了一個比較尷尬的情況(對於我們以前管理 RAC 的常識來說),由於 dbserver1 中的實例是後啟動的,因此實例名後綴為2,而 dbserver2 中的實例名後綴是1,實際上,在 Policy-Managed 管理的 RAC 環境中,無需關注到底哪個實例啟動在哪台機器上,我們需要的就是通過 SCAN IP,通過 Service 名去訪問數據庫就好,而不需要通過實例名訪問數據庫。但是這裏為了測試一下功能,還是決定1歸1,2歸2,我有說過我是完美主義者嗎?
最後將這個 RAC 數據庫再改回到隻會啟動一個實例的默認狀態。
以後,無論是啟動在哪台機器上,數據庫的實例名永遠會是 dbname_1(注意,這裏有一個下劃線,這是 Policy-Managed 數據庫實例的命名規則)。而我們訪問數據庫,則不應該指定實例名。比如:
因為現在您已經無需關心到底實例是啟動在哪台機器上了,後麵是一個資源池——是不是有些熟悉這樣的表述,是的,沒錯,Cloud! 我們也貼上了 Cloud 這個紅到發紫的詞,這就是Oracle 私有雲解決方案的構成組件之一。
文章轉自數據和雲公眾號,原文鏈接
最後更新:2017-07-18 12:03:01