一、前言
磐維數據庫V2.0-S3.2.0新增了很多功能,正好芬達大佬的dbops1.13自動化部署工具也于2025年8月1日發布了,新增了磐維數據庫V2.0-S3.2.0的自動化部署。今天就在centos7.9虛擬機里面體驗一下使用dbops工具部署磐維數據庫V2.0-S3.2.0的整個過程。
注意:這個dbops自動化部署工具是個人研發,不是磐維數據庫的dbops運維管理工具,注意區分。
二、dbops工具介紹
dbops 是一套高效的 ansible playbook 集合,目前是一個可以自動化安裝和部署生產級別的 MySQL 及周邊生態的工具。dbops 正在持續迭代開發中,未來將支持更多功能。你可以查看 roadmap (待補充)以了解 dbops 已經支持的和未來將要支持的功能。開發歷史請查看 releasehistory。目前,支持了 MySQL5.7、8.0、8.4,openGauss5.0、6.0,磐維數據庫V2.0-S2.0.3,磐維數據庫V2.0-S3.0.0,磐維數據庫V2.0-S3.1.0,磐維數據庫V2.0-S3.2.0。
dbops主要解決的問題:
- 各類生產環境的規范化建設(如開源數據庫部署、高可用架構部署、監控工具部署、備份腳本部署)
- 實例生命周期中的備份、監控、事態感知與修復方案下發 roadmap (待開發)
- 生命周期結束時的清理與資源回收
使用前注意:
- dbops 是個人開發的,因此并未經過大量的測試。如果你打算在生產系統中使用它,請詳細閱讀源代碼,通過公司的安全掃描,并確保在測試環境中進行充分的測試,以避免高危操作。由于 dbops 目前只專注于部署,因此在建設期直接使用基本上不會有問題。
- dbops 服務器端(也就是安裝 ansible 的位置)和被控端(即實際要部署軟件/架構的節點)只支持以下操作系統。
| 操作系統 | 說明 |
|---|---|
| RHEL7 系列 | 理論上支持 RHEL7 及其兼容系統,包括: RedHat7、CentOS7 等等 |
| RHEL8 系列 | 理論上支持 RHEL8 及其兼容系統,包括: RedHat8、CentOS8、AnolisOS8 等等 |
| RHEL9 系列 | 理論上支持 RHEL9 及其兼容系統,包括:RockyLinux9 等等 |
| Euler 系列 | 理論上支持 Euler 及其兼容系統,包括: openEuler 20.03 LTS、openEuler 22.03 LTS 、openEuler 24.03 LTS等等 |
支持的系統和數據庫架構
ansible

mysql-ansible


opengauss-ansible(目前版主還沒更新opengauss支持的最新版本文檔,其實6.0企業版已支持)

三、dbops工具下載
https://gitee.com/fanderchan/dbops
四、使用dbops工具部署磐維數據庫
環境說明
dbops版本:1.13
數據庫環境如下:
| 主機名 | ip地址 | OS版本 | 內存、CPU | 節點角色 | 數據庫端口 | cmserver端口 |
|---|---|---|---|---|---|---|
| node1 | 192.*.*.60 | Centos7.9 | 4G 、 1個雙核 | 主節點 | 17700 | 18800 |
| node2 | 192.*.*.62 | Centos7.9 | 4G 、 1個雙核 | 從節點 | 17700 | 18800 |
| node3 | 192.*.*.64 | Centos7.9 | 4G 、 1個雙核 | 從節點 | 17700 | 18800 |
1. 第一臺機器上下載dbops工具
[root@node1 ~]# wget https://gitee.com/fanderchan/dbops/releases/download/dbops.1.13.20250801/dbops.1.13.20250801-Linux-x86_64.tar.gz
[root@node1 ~]# tar -zxvf dbops.1.13.20250801-Linux-x86_64.tar.gz -C /usr/local/
2. 安裝dbops自帶的綠色版ansible
[root@node1 ~]# cd /usr/local/dbops
[root@node1 dbops]# cd portable-ansible-v0.5.0-py3
[root@node1 portable-ansible-v0.5.0-py3]# sh setup_portable_ansible.sh
[root@node1 portable-ansible-v0.5.0-py3]# source ~/.bashrc
檢查ansible是否安裝成功
[root@node1 portable-ansible-v0.5.0-py3]# ansible --version
ansible 2.10.5
config file = None
configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/local/dbops/portable-ansible-v0.5.0-py3/ansible/ansible
executable location = /usr/local/dbops/portable-ansible-v0.5.0-py3/ansible
python version = 3.6.8 (default, Nov 14 2023, 16:29:52) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)]
[root@node1 portable-ansible-v0.5.0-py3]#
3. 上傳PanWeiDB安裝包到downloads目錄
# 操作系統是centos7.9,所以下載centos平臺的磐維安裝包,文件名如下:
PanWeiDB_V2.0-S3.2.0_B01-install-centos_7-x86_64-no_mot.tar.gz
cd /usr/local/dbops/opengauss_ansible/downloads
mv /opt/soft/PanWeiDB_V2.0-S3.2.0_B01-install-centos_7-x86_64-no_mot.tar.gz ./
4. 修改ansible的hosts.ini
cd /usr/local/dbops/opengauss_ansible/inventory/
vi hosts.ini
[dbops_opengauss]
192.*.*.60 ansible_user=root ansible_ssh_pass="'密碼'" #改為你的ip和密碼,只支持root不能改root
192.*.*.62 ansible_user=root ansible_ssh_pass="'密碼'" #改為你的ip和密碼,只支持root不能改root
192.*.*.64 ansible_user=root ansible_ssh_pass="'密碼'" #改為你的ip和密碼,只支持root不能改root
[all:vars]
#ansible_python_interpreter=/usr/bin/python3
5. 修改playbook參數和執行
如果有東西需要改,那么改common_config.yml和vars/var_enterprise_deployment.yml (/usr/local/dbops/opengauss_ansible/playbooks目錄下)即可。
修改common_config.yml:
cd /usr/local/dbops/opengauss_ansible/playbooks
vi common_config.yml
#截止至 20250801,dbops支持的PanWeiDB 最高版本是V2-S3.2.0,最小需要修改以下參數:
opengauss_version: "3.2.0"
db_type: panweidb
#本次部署共修改了3個參數:
opengauss_version: "3.0.0"
opengauss_port: 17700
db_type: panweidb
common_config.yml中有兩處需特別注意:
1、需要根據業務實際情況修改panweidb_dbcompatibility兼容性參數,默認是B,兼容MySQL!
2、如果數據庫安裝目錄不是/database,需要修改gausshome參數
修改后的common_config.yml文件內容如下:
[root@node1 playbooks]# cat common_config.yml
## In most cases, just adjust these two parameters.
opengauss_version: "3.0.0"
opengauss_port: 17700
opengauss_user: omm
db_type: panweidb # opengauss, panweidb
panweidb_dbcompatibility: B # A, B, C, and PG. They are compatible with Oracle, MySQL, Teradata, and PostgreSQL, respectively. Only applicable to the PanWeiDB.
#Directory of openGauss installation package
opengauss_packages_dir: ../downloads/
## linux opengauss run user group and password
opengauss_group: dbgroup
opengauss_user_password: Dbops@9999
## opengauss install directory
gausshome: /database/{{ db_type }}
## The password needs to meet the password complexity requirements
## Complexity requirements: at least 8 digits, including numbers, upper and lower case letters, and special symbols.
opengauss_admin_user: "{{ opengauss_user }}"
opengauss_admin_password: Dbops@8888
## opengauss postgresql.cnf
## Feature Control Switch
fcs_skip_db_mount_verification: 1
fcs_skip_check_ntpd_or_chrony_running: 1
fcs_auto_download_opengauss: 1
fcs_create_opengauss_fast_login: 1
fcs_opengauss_use_jemalloc: 0
fcs_disable_command_history: 0
## Feature Control Switch vars
fcs_create_opengauss_fast_login_name: "db{{ opengauss_port }}"
[root@node1 playbooks]#
修改vars/var_enterprise_deployment.yml:
vi var_enterprise_deployment.yml
# 本次部署修改了2個參數
cm_server_port: 18800
cluster_name: "panweidb"
修改后的vars/var_enterprise_deployment.yml文件內容如下:
[root@node1 vars]# cat var_enterprise_deployment.yml
# vars loading order: common_config -> this file
cluster_name: "panweidb"
gaussdb_app_path: "{{ gausshome }}/app"
gaussdb_log_path: "{{ gausshome }}/log"
tmp_mppdb_path: "{{ gausshome }}/tmp"
gaussdb_tool_path: "{{ gausshome }}/tool"
core_path: "{{ gausshome }}/corefile"
gaussdb_data_path: "{{ gausshome }}/data"
cm_dir: "{{ gausshome }}/cm"
cm_server_port: 18800
tmp_tar_packages_path: "{{ gausshome }}/soft"
audit_directory: "{{ gausshome }}/pg_audit"
archive_dest: "/archive"
[root@node1 vars]#
執行playbook:
cd /usr/local/dbops/opengauss_ansible/playbooks
ansible-playbook enterprise_deployment.yml
# 會先pre_tasks檢查你的配置是否正確,然后你輸入comfirm確認后,就一直等待直到部署完成即可。
confirm
安裝過程部分截圖如下:
...
TASK [../roles/enterprise_deployment : Config cluster_config_template.xml and transfer to the first_host /database/panweidb/soft] ***********************************************************************************************************
changed: [192.*.*.62]
changed: [192.*.*.64]
changed: [192.*.*.60]
TASK [../roles/enterprise_deployment : Execute gs_preinstall script on every node] **********************************************************************************************************************************************************
changed: [192.*.*.60]
changed: [192.*.*.64]
changed: [192.*.*.62]
TASK [../roles/enterprise_deployment : Clear content from the marker to the end of file] ****************************************************************************************************************************************************
changed: [192.*.*.62]
changed: [192.*.*.64]
changed: [192.*.*.60]
TASK [../roles/enterprise_deployment : Add Gauss OM IP Hosts Mapping to /etc/hosts if not present] ******************************************************************************************************************************************
changed: [192.*.*.62]
changed: [192.*.*.64]
changed: [192.*.*.60]
TASK [../roles/enterprise_deployment : Install opengauss to use OM] *************************************************************************************************************************************************************************
skipping: [192.*.*.62]
skipping: [192.*.*.64]
included: /usr/local/dbops/opengauss_ansible/roles/enterprise_deployment/tasks/install_opengauss.yml for 192.*.*.60
TASK [../roles/enterprise_deployment : Transfer expect script to remote host] ***************************************************************************************************************************************************************
changed: [192.*.*.60]
TASK [../roles/enterprise_deployment : Execute expect script to run gs_install] *************************************************************************************************************************************************************
ok: [192.*.*.60]
TASK [../roles/enterprise_deployment : Remove expect script from remote host] ***************************************************************************************************************************************************************
changed: [192.*.*.60]
TASK [../roles/enterprise_deployment : Copy gs_guc.sh.j2 to /tmp] ***************************************************************************************************************************************************************************
skipping: [192.*.*.62]
skipping: [192.*.*.64]
changed: [192.*.*.60]
TASK [../roles/enterprise_deployment : Execute gs_guc.sh as opengauss_user] *****************************************************************************************************************************************************************
skipping: [192.*.*.62]
skipping: [192.*.*.64]
changed: [192.*.*.60]
TASK [../roles/enterprise_deployment : Restart service with gs_om] **************************************************************************************************************************************************************************
skipping: [192.*.*.62]
skipping: [192.*.*.64]
changed: [192.*.*.60]
TASK [../roles/enterprise_deployment : OpenGauss status] ************************************************************************************************************************************************************************************
ok: [192.*.*.60]
ok: [192.*.*.62]
ok: [192.*.*.64]
TASK [../roles/enterprise_deployment : Set up alias in .bashrc named —— db17700] ************************************************************************************************************************************************************
[WARNING]: Module remote_tmp /home/omm/.ansible/tmp did not exist and was created with a mode of 0700, this may cause issues when running as another user. To avoid this, create the remote_tmp dir with the correct permissions manually
changed: [192.*.*.60]
changed: [192.*.*.64]
changed: [192.*.*.62]
TASK [../roles/enterprise_deployment : Touch enterprise_deployment_finish.flag] *************************************************************************************************************************************************************
changed: [192.*.*.62]
changed: [192.*.*.60]
changed: [192.*.*.64]
PLAY RECAP **********************************************************************************************************************************************************************************************************************************
192.*.*.60 : ok=108 changed=36 unreachable=0 failed=0 skipped=32 rescued=0 ignored=0
192.*.*.62 : ok=89 changed=27 unreachable=0 failed=0 skipped=35 rescued=0 ignored=0
192.*.*.64 : ok=89 changed=28 unreachable=0 failed=0 skipped=35 rescued=0 ignored=0
Playbook run took 0 days, 0 hours, 19 minutes, 2 seconds
整個安裝過程會完成檢查并自動安裝缺少的軟件依賴包、設置內核參數、關閉透明大頁、關閉防火墻、關閉RemoveIPC等準備工作,進行預安裝,直到最后安裝成功。安裝成功后會自動配置數據庫基線。在自己本地虛擬機配置比較低的情況下整個安裝過程只花費了19分鐘2秒,縮短了傳統人工部署時間,大大提高了工作效率。
五、檢查數據庫集群狀態
[omm@node1 ~]$ gs_om -t status --detail
[ CMServer State ]
node node_ip instance state
---------------------------------------------------------------------
1 node1 192.*.*.60 1 /database/panweidb/cm/cm_server Primary
2 node2 192.*.*.62 2 /database/panweidb/cm/cm_server Standby
3 node3 192.*.*.64 3 /database/panweidb/cm/cm_server Standby
[ Cluster State ]
cluster_state : Normal
redistributing : No
balanced : Yes
current_az : AZ_ALL
[ Datanode State ]
node node_ip instance state
-----------------------------------------------------------------------
1 node1 192.*.*.60 6001 /database/panweidb/data P Primary Normal
2 node2 192.*.*.62 6002 /database/panweidb/data S Standby Normal
3 node3 192.*.*.64 6003 /database/panweidb/data S Standby Normal
數據庫集群運行正常。
六、登錄數據庫檢查
[omm@node1 ~]$ gsql -d postgres -p17700 -r
gsql ((PanWeiDB_V2.0-S3.2.0_B01) compiled at 2025-07-06 23:17:49 commit 86db355 )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
postgres=# select pw_version();
pw_version
-----------------------------------------------------------------------------
(PanWeiDB_V2.0-S3.2.0_B01) compiled at 2025-07-06 23:17:49 commit 86db355 +
product name:PanWeiDB +
version:V2.0-S3.2.0_B01 +
commit:86db355 +
openGauss version:5.0.0 +
host:x86_64-pc-linux-gnu
(1 row)
postgres=#
七、總結
整個安裝過程非常絲滑,dbops自動化部署工具大大提高了運維人員的工作效率,減少了手動部署過程中容易出現人為錯誤,如配置錯誤、遺漏步驟等錯誤的發生,提高了部署的準確性和可靠性,讓運維人員把精力花費在更有價值的工作上。
關于作者:
網名:飛天,墨天輪2024年度優秀原創作者,擁有 Oracle 10g OCM 認證、PGCE認證、MySQL 8.0 OCP認證以及OBCA、KCP、KCSM、ACP、磐維等眾多國產數據庫認證證書,目前從事Oracle、Mysql、PostgresSQL、磐維數據庫管理運維工作,喜歡結交更多志同道合的朋友,熱衷于研究、分享數據庫技術。
微信公眾號:飛天online
墨天輪:http://www.sunline.cc/u/15197
如有任何疑問,歡迎大家留言,共同探討~~~




