跳到主要内容

GaussDB 外置

适用场景:首次部署或重新初始化 ONES 使用的 GaussDB 数据库。

重要说明:当前仅支持外置 GaussDB。请提前由数据库团队准备可访问的 GaussDB 实例,确保具备网络连通性。

前置约束

  1. 本文支持 ONES 首次安装时指定
  2. ONES版本号 >= 6.43.7
  3. 外置 GaussDB, 需客户准备可访问的 GaussDB 实例,确保具备网络连通性,并且延迟低于 10ms
  4. GaussDB 帐号命名约束与建议
    由于 GaussDB 的账号名 与 业务使用的 schema 名 不可重名(否则可能引发权限冲突及其他问题),
    建议在创建账号时为账号名添加环境前缀。推荐的帐号命名前缀如下:

    DEV环境(开发): u_dev_
    UAT环境(用户验收): u_uat_
    SIT环境(集成测试): u_sit_
    PROD环境(生产环境): u_prod_
  5. GaussDB 逻辑日志复制槽的命名约束与建议
由于 GaussDB 的逻辑复制槽不允许跨db重名。 因此ONES业务使用的逻辑复制槽的名字必须唯一。
ONES 通过 gaussdbCdcLogicalSlotName 配置指定 逻辑复制槽的名称, 推荐不同环境的命名如下:

DEV环境(开发): slot_dev_ones_cdc
UAT环境(用户验收): slot_uat_ones_cdc
SIT环境(集成测试): slot_sit_ones_cdc
PROD环境(生产环境): slot_prod_ones_cdc

配置GaussDB数据库

  1. 创建数据库:比如 ones_uat

在控制台,管理员登录后,创建数据库,填写以下字段:

  • 数据库名称: <数据库名称,按需修改>
  • 字符集: UTF8
  • Template: template0
  • Collation 不填,留空
  • Ctype: 不填,留空
  • DBCOMPATIBILITY: PostgreSQL
  1. 在控制台,调整 GaussDB 实例「参数管理」,修改 wal_level 参数值为 logical(需重启生效)
  2. 安装完成之后,请客户联系华为,根据 GaussDB 数据库的服务器 CPU/内存配置及数据量,对 GaussDB 的参数进行调优;否则可能出现 ONES 页面操作缓慢等性能故障。

初始化配置

请先根据安装文档部署ONES,当部署到 配置 ONES 这一步时,根据如下步骤继续部署。

  1. 初始化配置 make init-config
  2. 在私有配置中补齐 GaussDB 相关字段、及修改默认值 vi config/private.yaml
# 固定值,无需修改
internalComponentMysqlEnable: false
dbDriver: "gaussdb"
wizEditorUseDB: "gaussdb"
dmCdcDbUser: 'root@mysql01' # 固定值,无需调整
dmCdcDbHost: 'oceanbase-service'
oceanbaseImage: img.ones.pro/library/oceanbase-ce:v4.3.1
gaussdbManualInitDBEnable: false

# 下方的所有配置,按实际情况进行修改
# 注意: GaussDB密码长度必须在 8–32 个字符之间,至少包含以下字符中的三种: 大写字母、小写字母、数字和特殊字符。特殊字符仅支持 ~ ! @ # % ^ * _ - = + ? ,
gaussdbBaseDB: "ones_uat"
gaussdbHost: "gaussdb.example.com"
gaussdbPort: 8000
gaussdbAdminUser: "onesadmin"
gaussdbAdminPassword: "******"
gaussdbCdcLogicalSlotName: slot_uat_ones_cdc

mysqlUser: u_uat_ones
mysqlPassword: xxxxxxx
mysqlCamundaUser: u_uat_camunda
mysqlCamundaPassword: xxxxxxx
platformMysqlUser: u_uat_platform
platformMysqlPassword: xxxxxxx
platformMysqlPluginUser: u_uat_platform_plugin
platformMysqlPluginPwd: xxxxxxx
pluginBuiltInGvmbef2yMysqlDbUser: u_uat_plugin_built_in_gvmbef2y
pluginBuiltInGvmbef2yMysqlDbPwd: xxxxxxx
wizMysqlUser: u_uat_wizeditor
wizMysqlPassword: xxxxxxx
oauthMysqlUser: u_uat_oauth
oauthMysqlPassword: xxxxxxx
eventsMysqlUser: u_uat_events
eventsMysqlPassword: xxxxxxx
identityMysqlUser: u_uat_identity
identityMysqlPassword: xxxxxxx
mysqlWatchUser: u_uat_oneswatch
mysqlWatchPassword: xxxxxxx

配置完成后,执行 make init-config 检查是否有 key 重复的问题(如有,移除重复 key 后再次执行命令检查)。

  1. 手动拉取镜像放到客户环境
curl -O https://res.ones.pro/script/k3s_offinstall/dm/oceanbase-ce.tar
# k3s 环境通过以下命令导入(其他情况)
ctr i import oceanbase-ce.tar
ctr i tag img.ones.pro/library/oceanbase-ce:v4.3.1 localhost:5000/ones/oceanbase-ce:v4.3.1
k3s ctr image push localhost:5000/ones/oceanbase-ce:v4.3.1
  1. 初始化数据库

通过命令,完成数据库的初始化(如果需手工执行,请联系ONES提供支持)

make init-gaussdb-db
  1. 继续后续部署 bash script/ones/deploy-ones.sh

重置数据库

如果要清除 GaussDB 数据库 ONES 数据,使用 GaussDB 控制台或 gsql 工具,登录 GaussDB 数据库执行以下 SQL

(以UAT环境为例,根据实际情况,请调整下方的帐号名称和复制槽名称 )

-- 清理帐号
DROP USER IF EXISTS u_uat_ones CASCADE;
DROP USER IF EXISTS u_uat_camunda CASCADE;
DROP USER IF EXISTS u_uat_platform CASCADE;
DROP USER IF EXISTS u_uat_platform_plugin CASCADE;
DROP USER IF EXISTS u_uat_plugin_built_in_gvmbef2y CASCADE;
DROP USER IF EXISTS u_uat_wizeditor CASCADE;
DROP USER IF EXISTS u_uat_oauth CASCADE;
DROP USER IF EXISTS u_uat_events CASCADE;
DROP USER IF EXISTS u_uat_identity CASCADE;
DROP USER IF EXISTS u_uat_oneswatch CASCADE;
-- 由于GaussDB会在DB下创建跟帐号同名的schema,因此也需要清理DB下的同名schema
DROP SCHEMA IF EXISTS u_uat_ones CASCADE;
DROP SCHEMA IF EXISTS u_uat_camunda CASCADE;
DROP SCHEMA IF EXISTS u_uat_platform CASCADE;
DROP SCHEMA IF EXISTS u_uat_platform_plugin CASCADE;
DROP SCHEMA IF EXISTS u_uat_plugin_built_in_gvmbef2y CASCADE;
DROP SCHEMA IF EXISTS u_uat_wizeditor CASCADE;
DROP SCHEMA IF EXISTS u_uat_oauth CASCADE;
DROP SCHEMA IF EXISTS u_uat_events CASCADE;
DROP SCHEMA IF EXISTS u_uat_identity CASCADE;
DROP SCHEMA IF EXISTS u_uat_oneswatch CASCADE;
-- 清理业务数据库
DROP SCHEMA IF EXISTS project CASCADE;
DROP SCHEMA IF EXISTS wiki CASCADE;
DROP SCHEMA IF EXISTS camunda CASCADE;
DROP SCHEMA IF EXISTS plugin_platform CASCADE;
DROP SCHEMA IF EXISTS open_platform_plugin CASCADE;
DROP SCHEMA IF EXISTS plugin_built_in_gvmbef2y CASCADE;
DROP SCHEMA IF EXISTS wizeditor CASCADE;
DROP SCHEMA IF EXISTS oauth CASCADE;
DROP SCHEMA IF EXISTS events CASCADE;
DROP SCHEMA IF EXISTS identity CASCADE;
-- 清理逻辑复制槽
SELECT pg_drop_replication_slot('slot_uat_ones_cdc');