一、前言
磐维数据库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
墨天轮:https://www.modb.pro/u/15197
如有任何疑问,欢迎大家留言,共同探讨~~~




