1. 程式人生 > >讓資料庫部署完成在彈指一揮間_Kubernetes中文社群

讓資料庫部署完成在彈指一揮間_Kubernetes中文社群

作者   郭旭瑞·沃趣科技產品專家
出品   沃趣科技

容器技術並非Docker的創新,容器技術所依賴的一些基礎技術,如namespace、cgroup、chroot等等,也都不是Docker的首創。

Docker之所以流行,很大程度上取決於它提出的映象(image)的概念。Docker通過其映象的概念,重新定義了雲時代的應用程式分發方式。

Docker讓軟體開發過程中的環境構建變得簡單,消除軟體測試過程中環境不一致導致的問題,又讓運維和部署變得輕鬆快速。

從Docker的logo就可以看出:容器就是集裝箱,我們的程式都被打包在集裝箱裡;Docker就是搬運工,幫你把打包好的應用運輸到世界各地,隨處執行。

《翻過那座山,就能看見海 | Kubernetes讓DBA更優雅地管理資料庫》一文中,我們探討過:資料庫的部署過程中,依賴包、核心引數、使用者與組、目錄等等一系列前置條件都需要DBA人工或指令碼方式進行操作,以及後續的資料庫軟體安裝、資料庫建立等工作,造成了大量重複性無意義的時間、精力消耗。Docker的映象便是將這所有的一切配置進行打包,一個映象就是一個容易分發的即啟即用的應用,與資料庫結合後一個映象就是一個迅速部署、即啟即用的資料庫。

沃趣科技緊跟時代發展浪潮,將容器技術融入到資料庫全生命週期管理,打造容器化雲資料庫RDS產品,同時也積極回饋社群,貢獻我們在容器化資料庫建設中的諸多經驗。本文將公開我們製作的Oracle Database 11.2.0.4.0版本的Docker映象。

Oracle官方在Github上提供了一些Oracle Docker image,但並未提供11g R2版本。考慮到目前仍有大量使用者使用11g R2,所以,我們參考官方12.1版本image製作了11.2.0.4.0版本的image,並且在其基礎上做了進一步豐富和標準化,包括:

  • 指定是否開啟歸檔
  • 指定SGA及PGA大小(官方image指定的是固定的記憶體大小,如需修改,需要在資料庫建立之後手動調整,所以,在此我們做了相應的自動化)
  • 指定資料庫角色,包括primary及standby(官方映象只能建立primary資料庫,我們同時實現了建立standby資料庫的邏輯,但該部分邏輯依賴沃趣科技QCFS雲端儲存提供的快照功能,目前只能在QFusion 3.0 RDS資料庫雲平臺中實現)
  • 包含對主庫例項狀態、備庫例項狀態和MRP恢復狀態的健康檢查
  • ONLINE REDO LOG自動調整為1G大小避免日誌切換過於頻繁
  • 設定使用者名稱密碼永不過期(雖不安全,但在絕大部分企業級使用者均採用此實踐)
  • 關閉Concurrent Statistics Gathering功能
  • TEMP表空間設定為30G大小
  • SYSTEM表空間設定為1G大小
  • SYSAUX表空間設定為1G大小
  • UNDO表空間設定為10G大小

 Image下載:

docker pull registry.cn-hangzhou.aliyuncs.com/woqutech/oracle-database-11.2.0.4.0-ee

Image使用舉例:

建立資料庫儲存路徑:
mkdir -p /data/oracledb
啟動Oracle資料庫容器:
docker run -d --name oracledb \
-p 1521:1521 \
-e ORACLE_SID=oracledb \
-e ORACLE_PWD=oracle \
-e ORACLE_CHARACTERSET=ZHS16GBK \
-e SGA_SIZE=8G \
-e PGA_SIZE=8G \
-e DB_ROLE=primary \
-e ENABLE_ARCH=true \
-v /data/oracledb:/opt/oracle/oradata \
registry.cn-hangzhou.aliyuncs.com/woqutech/oracle-database-11.2.0.4.0-ee
接下來就可以通過1521埠訪問資料庫啦!Enjoy it!

PS:目前提供的社群版Image只能設定DB_ROLE為primary,standby尚不提供支援。該映象的Dockerfile我們放在Github上,請持續關注本專案。

專案連結: 
https://github.com/woqutech/docker-images/tree/master/Oracle/11.2.0.4