From 46a3351505876842d63c43f531d3299b9e40dfb6 Mon Sep 17 00:00:00 2001 From: zcp100_zcp100 Date: Fri, 20 Oct 2023 14:50:34 +0800 Subject: [PATCH 1/2] =?UTF-8?q?update(mogdb):=E6=9B=B4=E6=96=B0mogdb=205.1?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E6=8C=87=E5=8D=97+=E5=BC=80=E5=8F=91?= =?UTF-8?q?=E8=80=85=E6=8C=87=E5=8D=97+ai=E7=89=B9=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workload-level-index-recommendation.md | 4 +- .../x-tuner-examples.md | 2 +- .../AI-features/ai4db/dbmind-deployment.md | 440 +++++++++++++++++ ...rrent-architectural-feature-constraints.md | 23 +- ...-developer-environment-deployment-guide.md | 207 ++++---- ...urce-pooling-om-installation-deployment.md | 30 ++ ...-pooling-one-city-two-center-deployment.md | 459 ++++++++++++++++++ .../v5.1/administrator-guide/upgrade-guide.md | 18 +- .../lock-wait-timeout-is-displayed.md | 1 - .../5-connecting-to-a-database.md | 2 +- .../1-development-based-on-odbc.md | 3 +- ...es-dependent-libraries-and-header-files.md | 4 + .../v5.1/developer-guide/developer-guide.md | 2 + .../publication-subscription/conflicts.md | 15 +- .../zh/docs-mogdb/v5.1/faqs/product-faqs.md | 7 + .../wdr/wdr-snapshot-schema.md | 2 +- .../2-managing-users-and-their-permissions.md | 44 +- .../zh/docs-mogdb/v5.1/source-code-parsing.md | 6 + 18 files changed, 1141 insertions(+), 128 deletions(-) create mode 100644 product/zh/docs-mogdb/v5.1/AI-features/ai4db/dbmind-deployment.md create mode 100644 product/zh/docs-mogdb/v5.1/administrator-guide/database-deployment-scenario/resource-pooling-architecture/resource-pooling-om-installation-deployment.md create mode 100644 product/zh/docs-mogdb/v5.1/administrator-guide/database-deployment-scenario/resource-pooling-architecture/resource-pooling-one-city-two-center-deployment.md diff --git a/product/zh/docs-mogdb/v5.1/AI-features/ai4db/ai-sub-functions-of-the-dbmind/index-advisor-index-recommendation/workload-level-index-recommendation.md b/product/zh/docs-mogdb/v5.1/AI-features/ai4db/ai-sub-functions-of-the-dbmind/index-advisor-index-recommendation/workload-level-index-recommendation.md index 021d600b..b73d70bf 100644 --- a/product/zh/docs-mogdb/v5.1/AI-features/ai4db/ai-sub-functions-of-the-dbmind/index-advisor-index-recommendation/workload-level-index-recommendation.md +++ b/product/zh/docs-mogdb/v5.1/AI-features/ai4db/ai-sub-functions-of-the-dbmind/index-advisor-index-recommendation/workload-level-index-recommendation.md @@ -25,13 +25,13 @@ date: 2021-05-19 2. 执行根据日志抽取SQL语句的功能,命令如下: ``` - ""gs_dbmind component extract_log [l LOG_DIRECTORY] [f OUTPUT_FILE] [p LOG_LINE_PREFIX] [-d DATABASE] [-U USERNAME][--start_time] [--sql_amount] [--statement] [--json] [--max_reserved_period] [--max_template_num] + gs_dbmind component extract_log [l LOG_DIRECTORY] [f OUTPUT_FILE] [p LOG_LINE_PREFIX] [-d DATABASE] [-U USERNAME][--start_time] [--sql_amount] [--statement] [--json] [--max_reserved_period] [--max_template_num] ``` 其中的输入参数依次为: - LOG_DIRECTORY:pg_log的存放目录。 - - OUTPUT_PATH:输出SQL流水文件文件的保存路径,即抽取出的业务数据存放的文件路径。 + - OUTPUT_PATH:输出SQL流水文件的保存路径,即抽取出的业务数据存放的文件路径。 - LOG_LINE_PREFIX:指定每条日志信息的前缀格式。 - DATABASE:(可选)数据库名称,不指定默认所有数据库。 - USERNAME:(可选)用户名称,不指定默认所有用户。 diff --git a/product/zh/docs-mogdb/v5.1/AI-features/ai4db/ai-sub-functions-of-the-dbmind/x-tuner-parameter-optimization-and-diagnosis/x-tuner-examples.md b/product/zh/docs-mogdb/v5.1/AI-features/ai4db/ai-sub-functions-of-the-dbmind/x-tuner-parameter-optimization-and-diagnosis/x-tuner-examples.md index 388b5f41..9da082b2 100644 --- a/product/zh/docs-mogdb/v5.1/AI-features/ai4db/ai-sub-functions-of-the-dbmind/x-tuner-parameter-optimization-and-diagnosis/x-tuner-examples.md +++ b/product/zh/docs-mogdb/v5.1/AI-features/ai4db/ai-sub-functions-of-the-dbmind/x-tuner-parameter-optimization-and-diagnosis/x-tuner-examples.md @@ -98,7 +98,7 @@ gs_dbmind component xtuner recommend -f connection.json - scenario:明确指定的workload类型,如果为auto则为自动判断。在不同模式下,推荐的调优参数列表也不一样。 -- tuning_list:**用户指定需要调哪些参数,如果不指定,则根据workload类型自动推荐应该调的参数列表。**如需指定,则tuning_list 表示调优列表文件的路径。一个调优列表配置文件的文件内容示例如下: +- tuning_list:**用户指定需要调哪些参数,如果不指定,则根据workload类型自动推荐应该调的参数列表。** 如需指定,则tuning_list 表示调优列表文件的路径。一个调优列表配置文件的文件内容示例如下: ```json { diff --git a/product/zh/docs-mogdb/v5.1/AI-features/ai4db/dbmind-deployment.md b/product/zh/docs-mogdb/v5.1/AI-features/ai4db/dbmind-deployment.md new file mode 100644 index 00000000..6a34f4f1 --- /dev/null +++ b/product/zh/docs-mogdb/v5.1/AI-features/ai4db/dbmind-deployment.md @@ -0,0 +1,440 @@ +--- +title: DBMind安装和部署 +summary: DBMind安装和部署 +author: Guo Huan +date: 2023-04-07 +--- + +# DBMind安装和部署 + +## 1. 安装准备 + +### 1.1 环境信息 + +假设在主控节点`192.168.100.4`上部署DBMind,有一套端口号为19999的集群环境,环境信息如下: + +| node | node_ip | state | +| :------ | :------------ | :------ | +| 主节点 | 192.168.100.1 | Primary | +| 备节点1 | 192.168.100.2 | Standby | +| 备节点2 | 192.168.100.3 | Standby | + +假设需要在`test_user`用户下安装,需要在这4个节点上创建好用户,可以使用如下命令,创建用户并指定登入目录。 + +```shell +useradd -m test_user -d /home/test_user +``` + +安装之前需要修改相关文件的权限,并使用`su - test_user`命令切换到目标用户空间下安装。test_user用户要能够使用cm_ctl命令,否则会导致cmd_exporter获取不到数据库节点的信息。 + +### 1.2 安装包 + +安装和部署过程中需要用到的安装包和下载地址如下,用户根据自己的服务器架构进行选择: + +| File Name | Download Address | OS/Arch | +| :------------ | :----------------------------------------------------------- | :----------- | +| DBMind | [dbmind-installer-x86_64-python3.10.sh.tar.gz](https://opengauss.obs.cn-south-1.myhuaweicloud.com/dbmind/latest/x86/dbmind-installer-x86_64-python3.10.sh.tar.gz) | linux/x86_64 | +| DBMind | [dbmind-installer-aarch64-python3.10.sh.tar.gz](https://gitee.com/link?target=https%3A%2F%2Fopengauss.obs.cn-south-1.myhuaweicloud.com%2Fdbmind%2Flatest%2Farm%2Fdbmind-installer-aarch64-python3.10.sh.tar.gz) | linux/arm64 | +| Prometheus | [prometheus-2.43.0.linux-amd64.tar.gz](https://github.com/prometheus/prometheus/releases/download/v2.43.0/prometheus-2.43.0.linux-amd64.tar.gz) | linux/x86_64 | +| Prometheus | [prometheus-2.43.0.linux-arm64.tar.gz](https://github.com/prometheus/prometheus/releases/download/v2.43.0/prometheus-2.43.0.linux-arm64.tar.gz) | linux/arm64 | +| node_exporter | [node_exporter-1.5.0.linux-amd64.tar.gz](https://github.com/prometheus/node_exporter/releases/download/v1.5.0/node_exporter-1.5.0.linux-amd64.tar.gz) | linux/x86_64 | +| node_exporter | [node_exporter-1.5.0.linux-arm64.tar.gz](https://github.com/prometheus/node_exporter/releases/download/v1.5.0/node_exporter-1.5.0.linux-arm64.tar.gz) | linux/arm64 | + +如果需要其他版本或架构的安装包,用户可以到[prometheus官网](https://prometheus.io/download/)进行下载。可以使用`uanme -m`命令查看服务器架构。 + +### 1.3 数据库用户 + +本文以如下的用户和数据库信息作为示例。 + +> - username:dbmind_monitor +> - password:test_123 +> - port:6789 +> - metadatabase:metadatabase + +omm登录主节点,并为数据库节点和DBMind服务器数据库创建dbmind_monitor用户: + +```shell +gs_guc reload -D datanode -c 'password_encryption_type=1' +gsql -p {port} -d postgres -c 'create user {username:dbmind_monitor} with password {password:test_123} ;' +gsql -p {port} -d postgres -c 'alter user {username:dbmind_monitor} monadmin; ' +gs_guc reload -D datanode -c 'password_encryption_type=2' # 可选,将该参数改回去 +``` + +> ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** +> +> 本文中为了突出命令中的参数配置,使用了{key:value}的形式。实际情况下,应输入如下命令 : +> +> ```shell +> gs_guc reload -D datanode -c 'password_encryption_type=1' +> gsql -p {port} -d postgres -c 'create user dbmind_monitor with password test_123;' +> gsql -p {port} -d postgres -c 'alter user dbmind_monitor monadmin;' +> gs_guc reload -D datanode -c 'password_encryption_type=2' # 可选,将该参数改回去 +> ``` + +DBMind服务器,创建元数据库: + +```shell +grant all privileges to {username:dbmind_monitor}; +\c postgres {username:dbmind_monitor}; +create database {metadatabase:metadatabase}; +``` + +创建完成后,用户可通过命令`gsql -d postgres -p 6789 -r -U dbmind_monitor -W test_123`登录到数据库上,并输入`\l`命令查看元数据库`metadatabase`是否存在。 + +## 2. 安装DBMind + +DBMind会定期在openGauss-DBMind项目的release页面发布DBMind的安装包,可以通过下载该DBMind安装包进行安装部署。 + +将安装包`dbmind-install-x86_64-python3.10.sh.tar.gz`放到主控节点`test_user`用户空间下并切换到用户空间后,执行下述命令完成安装: + +1. 解压: + + ```shell + tar zxvf dbmind-install-x86_64-python3.10.sh.tar.gz + ``` + +2. 安装:安装过程中会提示确认安装位置和添加环境变量,按照提示输入回车或yes就行了。 + + ```shell + sh dbmind-install-x86_64-python3.10.sh + ``` + +3. 重新加载环境变量: + + ```shell + source ~/.bashrc + ``` + +4. 测试是否安装成功: + + ```shell + gs_dbmind --help + ``` + +## 3. 部署DBMind + +DBMind有两种部署方式,分别为手动部署和自动部署,推荐使用自动部署的方式,其会自动将prometheus、node_exporter、opengauss_exporter、cmd_expoter和reprocessing_exporter组件安装到指定的节点。 + +### 3.1 自动部署–推荐 + +自动部署会根据配置文件中的信息自动执行部署,所以需要先将配置文件`openGauss-DBMind/dbmind/components/deployment/deploy.conf`配置好。可以手动将文件配置好,也可以使用交互式配置。推荐使用手动配置的方式。 + +需要提前将prometheus和node_exporter两个安装包放置在用户根目录的`downloads`文件夹下,并修改属主为`test_user`用户。 + +#### 手动配置–推荐 + +使用手动配置的方式,需要提前将实例信息和参数填入`openGauss-DBMind/dbmind/components/deployment/deploy.conf`配置文件。 + +假设在test_user用户空间下进行安装,即host_username=test_user,deploy.conf配置文件信息如下: + +```shell +[DOWNLAODING] +host = https://github.com/prometheus +node_exporter = node_exporter-1.5.0.linux-amd64 +prometheus = prometheus-2.42.0.linux-amd64 +node_exporter_sha256 = af999fd31ab54ed3a34b9f0b10c28e9acee9ef5ac5a5d5edfdde85437db7acdb +prometheus_sha256 = 422dab055ed9c7bcaff52b71805f9192c6fac0de6b7e78dd278e70ee2663dcc + +[PROMETHEUS] +host = 192.168.100.4 +ssh_port = 22 +host_username = test_user +path = /home/test_user/prometheus # 用户可以指定其他的安装路径 +listen_address = 192.168.100.4 +prometheus_port = 9090 +reprocessing_exporter_port = 8181 + +[EXPORTERS] +targets = 192.168.100.1:19999/postgres,192.168.100.2:19999/postgres,192.168.100.3:19999/postgres +ssh_port = 22 +host_username = test_user +path = /home/test_user/node_exporter # 用户可以指定其他的安装路径 +database_username = dbmind_monitor +listen_address = 192.168.100.4 +opengauss_ports_range = 9187-9197 +node_exporter_port = 9100 +cmd_exporter_port = 9180 + +[SSL] +enable_ssl = False +# 该模块其他内容不用修改,内容略 +``` + +可以使用`sha256sum`命令生成文件的sha256校验码,如下所示: + +```shell +sha256sum prometheus-2.43.0.linux-amd64.tar.gz +``` + +然后切换到openGauss-DBMind目录下,执行如下命令: + +```shell +gs_dbmind component deployment --offline -c dbmind/components/deployment/deploy.conf +``` + +该命令会提示用户输入用户密码,然后将主控节点downloads目录下的安装包解压并复制到数据库节点。 + +最后执行如下命令,会自动启动DBMind的各exporter组件和prometheus。如果各组件都正常启动,则可以执行[启动DBMind](#4.-启动DBMind)步骤。 + +```shell +gs_dbmind component deployment --run +``` + +> ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-warning.gif) **注意:** +> +> - 需要提前将prometheus和node_exporter两个安装包放置在用户根目录的`downloads`文件夹下,并修改属主为`test_user`用户。 +> - 配置文件中`[DOWNLOADING]`模块的安装包名字**不带**`.tar.gz`后缀。 + +#### 交互式配置 + +通过下述命令,用户可以在交互式界面中,根据提示信息输入需要监控的MogDB实例信息和参数。 + +```shell +gs_dbmind component deployment --offline +``` + +### 3.2 手动部署 + +#### 规划配置 + +使用手动部署的方式,需要用户手动安装prometheus和相关的exporter组件,先做如下的规划配置: + +| **组件** | **地址** | **备注** | +| :------------------------ | :----------------------------------------------------------- | :---------------------------------------------- | +| **node_exporter** | 192.168.100.1: 9100 192.168.100.2: 9100 192.168.100.3: 9100 | 每个数据库节点上都需要安装 | +| **cmd_exporter** | 192.168.100.2: 9180 | 只需要在一个备节点上安装 | +| **opengauss_exporter** | 192.168.100.4: 9187 -> 192.168.100.1: 19999 192.168.100.4: 9188 -> 192.168.100.2: 19999 192.168.100.4: 9189 -> 192.168.100.3: 19999 | 每个数据库节点上都需要安装, 在主控节点远程安装 | +| **prometheus** | 192.168.100.4: 9090 | 只需在主控节点安装 | +| **reprocessing_exporter** | 192.168.100.4: 8181 | 和prometheus一起部署到主控节点 | + +#### node_exporter + +用户需要在数据库的各个节点部署node_exporter,将node_exporter安装包放入数据库节点并切换到`test_user`用户空间后,执行如下命令: + +1. 解压安装包: + + ```shell + tar zxvf node_exporter-1.5.0.linux-amd64.tar.gz + cd node_exporter-1.5.0.linux-amd64 + ``` + +2. 启动 默认端口号为9100: + + ```shell + ./node_exporter > node_exporter.log 2>&1 & + ``` + +3. 如果端口号被占用,可以指定端口号: + + ```shell + ./node_exporter --web.listen-address=:9101 > node_exporter.log 2>&1 & + ``` + +输入上述命令后,如果显示 `[1]+ Exit` 字符表示node_exporter安装失败,可以通过node_exporter.log日志查看原因。 + +#### cmd_exporter + +cmd_exporter用来执行cmd命令并获取返回结果以及采集日志信息,当前主要用于采集集群状态,在一个备数据库节点上安装就可以了。 + +cmd_exporter组件需要通过dbmind安装,所以需要先在一个备节点上[安装dbmind](#2.-安装DBMind),安装完之后,再通过`gs_dbmind`的`component`子命令安装cmd_exporter,如下所示。 + +```shell +gs_dbmind component cmd_exporter --web.listen-address 0.0.0.0 --web.listen-port 9180 --disable-https +``` + +执行完上述命令,如果控制台显示`The process is starting`,说明安装无异常。 + +#### opengauss_exporter + +opengauss_exporter是DBMind采集数据库的组件,从MogDB数据库中读取系统表(或系统视图)的数据,并通过Prometheus保存起来。支持**远程部署**,需要在每个数据库节点上安装。 + +用户可以通过远程部署的方式在主控节点上执行下述命令,从而将opengauss_exporter安装到对应的数据库节点上,opengauss_exporter的默认端口号范围是9187-9197,如果被占用可以使用其他端口。 + +1. 方式一:URL格式 + + ```shell + gs_dbmind component opengauss_exporter --url postgresql://dbmind_monitor:test_123@192.168.100.1:19999/postgres --web.listen-address 0.0.0.0 --web.listen-port 9187 --log.level info --disable-https + ``` + + > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** + > + > 对于采用URL格式的DSN,由于@等特殊字符用来分割URL串中各个部分的内容,故需要URL编码。例如某个用户dbmind的密码为Test@123,则URL格式的DSN为`psotgresql:dbmind:Test%40123@127.0.0.1:19999`,即将@字符编码为`%40`。 + +2. 方式二:K-V格式 + + ```shell + gs_dbmind component opengauss_exporter --url "dbname=postgres user=dbmind_monitor password=test_123 host=192.168.100.1 port=19999" --web.listen-address 0.0.0.0 --web.listen-port 9187 --log.level info --disable-https + ``` + +执行完上述命令,如果控制台显示`The process is starting`,说明安装无异常。也可以通过下述命令检查opengauss_exporter是否已启动。 + +```shell +# 端口号9187为用户指定的端口号, 如果失败会显示Connection refused +curl -vv http://localhost:9187/metrics +``` + +#### prometheus + +prometheus是业内非常流行的开源监控系统,同时本身也是一款时序数据库。需要将其安装在主控节点,默认占用端口为9090,将prometheus安装包放入主控节点环境并切换到目标用户空间后,执行如下命令: + +1. 解压并切换到prometheus目录下: + + ```shell + tar zxvf prometheus-2.42.0.linux-amd64.tar.gz + cd prometheus-2.42.0.linux-amd64/ + ``` + +2. 修改prometheus配置文件: + + ```shell + vi prometheus.yml + ``` + + 在该文件中找到 scrape_configs 部分,该部分包含了所有需要被抓取的targets的配置信息,用户需要根据自己的节点数量和端口占用情况进行修改。根据[规划配置](#规划配置)可做如下配置: + + ```yaml + scrape_configs: + - job_name: 'prometheus' + static_configs: + - targets: ['192.168.100.4:9090'] + - job_name: 'opengauss_exporter' + static_configs: + - targets: ['192.168.100.4:9187', '192.168.100.4:9188', '192.168.100.4:9189'] + - job_name: 'node_exporter' + static_configs: + - targets: ['192.168.100.1:9100', '192.168.100.2:9100', '192.168.100.3:9100'] + - job_name: 'reprocessing_exporter' + static_configs: + - targets: ['192.168.100.4:8181'] + - job_name: 'cmd_exporter' + static_configs: + - targets: ['192.168.100.2:9180'] + ``` + +3. 启动prometheus并将日志输入到同目录下的prometheus.log里: + + ```shell + ./prometheus --web.enable-admin-api --web.enable-lifecycle --storage.tsdb.retention.time=1w >./prometheus.log 2>&1 & + ``` + +#### reprocessing_exporter + +reprocessing_exporter是一个用于二次加工处理数据的exporter。由于node_exporter、opengauss_exporter保存到prometheus中的数据是即时的监控信息,而只通过这些信息是无法反应某些指标的瞬时增量信息的。因此,reprocessing_exporter可以用来计算增量信息或者聚合结果等。 + +由于reprocessing_exporter是从prometheus中获取指标数据,进行二次加工处理后再返回给prometheus。因此,它与prometheus是一一对应的,即如果只有一个prometheus服务,则只需要一个reprocessing_exporter即可。prometheus和reprocessing_exproter一起部署在主控节点上,reprocessing_exproter依赖prometheus,所以需要先启动prometheus再启动reprocessing_exporter。可以通过下述命令启动reprocessing_exporter: + +```shell +# host_ip为主控节点的ip地址,9090为prometheus占用的端口号,8181为reprocessing_exporter占用的端口号,用户可以按需修改 +gs_dbmind component reprocessing_exporter host_ip 9090 --web.listen-address 0.0.0.0 --web.listen-port 8181 --disable-https +``` + +启动完成之后,访问prometheus网页:`http://{主控节点ip}:9090/`,打开`Status/Targets`,查看所有exporter的启动状态。 + +## 4. 启动DBMind + +在主控节点,切换到openGauss-DBMind目录下,输入如下命令启动DBMind: + +1. 启动配置,会在openGauss-DBMind目录下创建dbmindconf/dbmind.conf配置文件: + + ```shell + gs_dbmind service setup -c dbmindconf + ``` + +2. 切换到openGauss-DBMind目录,并修改配置文件: + + ```shell + vi dbmindconf/dbmind.conf + ``` + + 其中必填的配置项如下: + + - **TSDB** + + TDSB为时序数据库配置,即prometheus相关信息。 + + ```shell + [TSDB] + name = prometheus # The type of time-series database. Options: prometheus. + host = {主控节点ip:192.168.100.4} # Address of time-series database. + port = 9090 # Port to connect to time-series database. + ``` + + - **METADATABASE** + + DBMind服务器所创建的metadatabase[数据库相关信息](#1.3-数据库用户),注意用户需要有数据库创建的权限。在启动DBMind之前,需要把metadatabase创建好。 + + ```shell + [METADATABASE] + dbtype = MogDB # Database type. Options: sqlite, MogDB, postgresql. + host = {数据库主节点ip:192.168.100.1} # Address of meta-data database. + port = {数据库占用的端口号:6789} # Port to connect to meta-data database. + username = dbmind_monitor # User name to connect to meta-data database. + password = test_123 # Password to connect to meta-data database. + database = metadatabase # Database name to connect to meta-data database. + ``` + + - **WORKER** + + 该模块用于指定DBMind可以使用的worker子进程数量,如果写0则会进行自适应,尽可能多地使用CPU资源。 + + 用户可以使用`cat /proc/cpuinfo | grep "physical id" | fort | uniq | wc -l`命令查看逻辑CPU的个数,根据服务器情况配置worker子进程数量。 + + ```shell + [WORKER] + process_num = 2 # Number of worker processes on a local node. Less than or equal to zero means adaptive. + ``` + + - **AGENT** + + 该模块用于指定DBMind连接到openGauss Agent的信息。使用该Agent,可以让DBMind获取到被监控实例的即时状态,从而提高分析准确性。同时,也可以向数据库实例下发一些变更动作。 + + master_url为`http://{DBMind服务器IP}:{opengauss_exporter监听端口}`,置空会自动识别。 + + usename为数据库实例的dbmind_minotor用户。 + + ```shell + [AGENT] + master_url = + username = dbmind_monitor # Username to login the monitoring database. Credential for agent. + password = test_123 # Password to login the monitoring database. Credential for agent. + ``` + + - **TIMED_TASK** + + 设置定时任务: + + - discard_expired_results: 删除过期结果 + - self_monitoring:指标异常监控 + - daily_inspection:日检 + - weekly_inspection:周检 + - monthly_inspection: 月检 + - slow_sql_diagnosis:慢SQL诊断 + - knob_recommend:参数调优 + - slow_query_killer:慢SQL查杀 + + ```shell + [TIMED_TASK] + task=discard_expired_results,self_monitoring,daily_inspection, weekly_inspection,slow_sql_diagnosis,knob_recommend,slow_query_killer# select the scheduled task to start,separated by ','. + ``` + + - **WEB-SERVICE** + + ```shell + [WEB-SERVICE] + host = 192.168.100.4 # Which host to bind for web service. '0.0.0.0' means to bind all. + port = 8080 # Port to listen for web serivce. + ``` + +3. 配置项初始化: + + ```shell + gs_dbmind service setup --initialize -c dbmindconf + ``` + +4. 启动DBMind服务: + + ```shell + gs_dbmind service start -c dbmindconf + ``` + +上述步骤执行完之后,就可以通过`http://{DBMind服务器IP}:8080`访问DBMind前台页面。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v5.1/administrator-guide/database-deployment-scenario/resource-pooling-architecture/resource-pooling-current-architectural-feature-constraints.md b/product/zh/docs-mogdb/v5.1/administrator-guide/database-deployment-scenario/resource-pooling-architecture/resource-pooling-current-architectural-feature-constraints.md index cbde8107..05358829 100644 --- a/product/zh/docs-mogdb/v5.1/administrator-guide/database-deployment-scenario/resource-pooling-architecture/resource-pooling-current-architectural-feature-constraints.md +++ b/product/zh/docs-mogdb/v5.1/administrator-guide/database-deployment-scenario/resource-pooling-architecture/resource-pooling-current-architectural-feature-constraints.md @@ -9,26 +9,27 @@ date: 2023-04-07 ## 内容简介 -MogDB资源池化是MogDB推出的一种新型的集群架构。通过DMS和DSS组件,实现集群中多个节点的底层存储数据共享和节点间的内存实时共享,达到节省底层存储资源以及集群内部支持一写多读且可以实时一致性读的目的。 本文主要介绍资源池化当前的架构下对数据库的一些特性约束。 +MogDB资源池化是MogDB推出的一种新型的集群架构.通过DMS和DSS组件,实现集群中多个节点的底层存储数据共享和节点间的内存实时共享,达到节省底层存储资源以及集群内部支持一写多读且可以实时一致性读的目的。 本文主要介绍资源池化当前的架构下对数据库的一些特性约束。 ## 当前的一些约束说明 -- 下面是资源池化当前的架构下对数据库的一些特性约束的说明,需要注意的是**当前的约束不代表以后一直不支持**,只是出于当前版本设计上的考虑,做出的一些约束。 +- 下面是资源池化当前的架构下对数据库的一些特性约束的说明, 需要注意的是**当前的约束不代表以后一直不支持**, 只是出于当前版本设计上的考虑, 做出的一些约束。 | 编号 | 约束说明 | 补充说明 | | :--: | :----------------------------------------------------------- | :----------------------------------------------------------- | -| 1 | 仅支持段页式存储,不支持页式 | 建表语句需要带上with (segment = on, xxx) | +| 1 | 仅支持段页式存储, 不支持页式 | 建表语句需要带上with (segment = on, xxx) | | 2 | 不支持列存表 | 无 | | 3 | 不支持FDW | 无 | | 4 | 不支持unlogged表 | 无 | | 5 | 不支持本地临时表和全局临时表 | 无 | | 6 | 不支持带压缩的特性 | 无 | | 7 | 不支持物化视图 | 无 | -| 8 | 备机不支持开启事务的操作 | 无 | -| 9 | 不支持XA事务 | 无 | -| 10 | 使用OM安装时仅支持磁阵方式部署,不支持ceph,不支持虚拟化存储池 | 无 | -| 11 | 不支持发布订阅 | 无 | -| 12 | 不支持传统主备架构同时部署 | 即同一套集群不能既使用资源池化主备,又配上传统主备,也就是不支持replconninfo或hot_standby这些参数的配置 | -| 13 | 不支持ustore | 也不支持闪回,因为闪回只支持ustore | -| 14 | 单个xlog的文件大小从16MB调整成了1G | 回收机制也适配了1G,pg_xlogdump工具也进行了适配 | -| 15 | 不建议关闭global syscache | 默认是打开的,通过配置项可以关闭,关闭后高并发下目前可能导致连接变慢 | \ No newline at end of file +| 8 | 备机不支持写语句的操作 | 开启写转发特性后,备机可以支持接收写语句,然后转发到主机执行,详情请参考写转发特性说明(文档搜索“备机支持写语句参数”) | +| 9 | 使用OM安装时仅支持磁阵方式部署, 不支持ceph, 不支持虚拟化存储池 | 无 | +| 10 | 不支持发布订阅 | 无 | +| 11 | 不支持传统主备架构同时部署 | 即同一套集群不能既使用资源池化主备, 又配上传统主备 | +| 12 | 不支持ustore | 也不支持闪回,因为闪回只支持ustore | +| 13 | 单个xlog的文件大小从16MB调整成了1G | 回收机制也适配了1G, pg_xlogdump工具也进行了适配 | +| 14 | 不建议关闭global syscache | 默认是打开的, 通过配置项可以关闭, 关闭后高并发下目前可能导致连接变慢 | +| 15 | 创建表空间时,不支持指定绝对路径 | | +| 16 | 有条件的支持逻辑复制 | pg_replslot目录放在了底层共享存储里,但在failover场景下,会因为主备xlog目录的切换导致逻辑复制找不到restart lsn, 所以如果使用了逻辑复制,在failover场景下,得手动重建逻辑复制槽 | \ No newline at end of file diff --git a/product/zh/docs-mogdb/v5.1/administrator-guide/database-deployment-scenario/resource-pooling-architecture/resource-pooling-developer-environment-deployment-guide.md b/product/zh/docs-mogdb/v5.1/administrator-guide/database-deployment-scenario/resource-pooling-architecture/resource-pooling-developer-environment-deployment-guide.md index 66bf38fb..3660438a 100644 --- a/product/zh/docs-mogdb/v5.1/administrator-guide/database-deployment-scenario/resource-pooling-architecture/resource-pooling-developer-environment-deployment-guide.md +++ b/product/zh/docs-mogdb/v5.1/administrator-guide/database-deployment-scenario/resource-pooling-architecture/resource-pooling-developer-environment-deployment-guide.md @@ -9,11 +9,11 @@ date: 2023-04-04 ## 内容简介 -MogDB资源池化是MogDB推出的一种新型的集群架构。通过DMS和DSS组件,实现集群中多个节点的底层存储数据共享和节点间的内存实时共享,达到节省底层存储资源以及集群内部支持一写多读且可以实时一致性读的目的。本文主要介绍开发者如何搭建一个可以用于自己学习或者开发的资源池化环境。 +MogDB资源池化是MogDB推出的一种新型的集群架构。该架构通过DMS和DSS组件,实现集群中多个节点的底层存储数据共享和节点间的内存实时共享,达到节省底层存储资源以及集群内部支持一写多读且可以实时一致性读的目的。 本文主要介绍开发者如何搭建一个可以用于自己学习或者开发的资源池化环境,请不要应用于生产场景。 ## 预备知识 -开发者最好具备以下基础: +开发者最好具备以下基础: - Linux的基础命令,比如dd命令,iscis等。 - 对磁阵有一定的了解。 @@ -23,22 +23,22 @@ MogDB资源池化是MogDB推出的一种新型的集群架构。通过DMS和DSS - 资源池化部署图参考: -**图1:MogDB资源池化部署图** +**图1: MogDB资源池化部署图** ![img](https://cdn-mogdb.enmotech.com/docs-media/mogdb/administrator-guide/资源池化部署图.png) - 在社区上正式发布的企业版安装包中,如果需要搭建资源池化架构,在硬件上需要准备磁阵,服务器和光交换机,且需要部署CM和OM组件。 - 本文主要介绍可用于开发者进行开发的编译环境搭建方式,不需要磁阵、CM和OM组件,仅需要一台普通的物理机就可以搭建出资源池化的环境。 -- 需要注意的是,因为没有使用到真正的CM,这种方式搭建的环境不能用于调试主备倒换或failover场景,只能用于验证集群正常运行时的场景。 +- 需要注意的是,因为没有使用到真正的CM,这种方式搭建的环境仅能够模拟集群内状态切换的场景,实际开发时还应当在磁针环境进行验证。 ## 环境预备 -- 一台单独的物理机,且至少存在一个剩余空间大于200GB的磁盘分区。 -- 已经自行使用编译方式编译出了MogDB带资源池化代码的debug版本的安装包,可以通过确认生成的bin目录下是否有dssserver, dsscmd, lib目录下是否有libdms.so, libdssapi.so , libdssaio.so, 来判断,同时要保证编译MogDB时使用的是测试版本的DSS组件和DMS组件,详细参考下面的步骤。 +- 一台单独的物理机,且至少存在一个剩余空间大于1000GB的磁盘分区。 +- 已经自行使用编译方式编译出了MogDB带资源池化代码的debug版本的安装包,可以通过确认生成的bin目录下是否有dssserver,dsscmd,lib目录下是否有libdms.so,libdssapi.so ,libdssaio.so来判断,同时要保证编译MogDB时使用的是测试版本的DSS组件和DMS组件,详细参考下面的步骤。 ## 独立编译安装指南 -> ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-caution.gif) **注意:** +> ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-warning.gif) **注意:** > > 以下部署操作请勿用于生产环境 @@ -49,53 +49,54 @@ MogDB资源池化是MogDB推出的一种新型的集群架构。通过DMS和DSS 1. 编译测试版本的DSS组件。 - a.下载最新版本CBB代码,编译安装替换三方库中的CBB。 + a.下载最新版本CBB代码,编译安装替换三方库中的CBB,CBB组件可以使用Release版本。 b.下载最新版本的DSS代码,并根据src/gausskernel/ddes/ddes_commit_id内的版本号,回退DSS至指定版本。 c.编译安装替换三方库中的DSS组件,命令如下(DSS_CODE_PATH表示解压后的DSS源码目录,ThirdParty_Binarylibs_Path表示解压后的三方库目录): - ```shell - #-3rd后面跟三方库对应的绝对路径 - cd [DSS_CODE_PATH]/build/linux/opengauss - sh build.sh -3rd [ThirdParty_Binarylibs_Path] -t cmake -m DebugDsstest + ``` + #-3rd后面跟三方库对应的绝对路径 + cd [DSS_CODE_PATH]/build/linux/mogdb + sh build.sh -3rd [ThirdParty_Binarylibs_Path] -t cmake -m DebugDsstest ``` 2. 编译测试版本的DMS组件。 - a.下载最新版本CBB代码,编译安装替换三方库中的CBB。 + a.下载最新版本CBB代码,编译安装替换三方库中的CBB(如果在编译DSS组件中已经执行过该步骤,则本次可以跳过)。 b.下载最新版本的DMS代码,并根据src/gausskernel/ddes/ddes_commit_id内的版本号,回退DMS至指定版本。 c.编译安装替换三方库中的DMS组件,命令如下(DMS_CODE_PATH表示解压后的DMS源码目录,ThirdParty_Binarylibs_Path表示解压后的三方库目录): ```shell - cd [DMS_CODE_PATH]/build/linux/opengauss - sh build.sh -3rd [ThirdParty_Binarylibs_Path] -t cmake -m Release - cd [DMS_CODE_PATH] - mkdir -p tmp - export BUILD_MODE=Debug - cmake . -DCMAKE_BUILD_TYPE=Debug -D DMS_TEST=ON -DOPENGAUSS=yes -B ./tmp - cd tmp/ - make -sj + cd [DMS_CODE_PATH]/build/linux/mogdb + sh build.sh -3rd [ThirdParty_Binarylibs_Path] -t cmake -m DMSTest ``` - > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-caution.gif) **注意:** + > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-warning.gif) **注意:** > > 当编译完DSS、DMS、CBB之后,会自动更新到三方库,不需要手动拷贝,接下来只需按标准步骤编译数据库即可。 -3. 配置环境变量。 +3. 检查DSS、DMS组件编译版本是否满足要求。 + + ``` + ##xxx.so分别为lib目录下的libdms.so、libdssapi.so和libdssaio.so + strings xxx.so | grep comliled + ``` + +4. 配置环境变量。 - 下面是以2个节点为例进行说明,参考示例,其中DSS_HOME是dn实例1的dssserver运行时需要的目录,需要手动新建。将下面的内容写入到/home/test/envfile中作为环境变量导入。 + 下面是以2个节点为例进行说明,假设本次安装资源池化集群的用户为test,参考示例如下。其中DSS_HOME是dn实例1的dssserver运行时需要的目录,需要手动新建。将下面的内容写入到/home/test/envfile中作为环境变量导入。 ```shell - export GAUSSHOME=/home/test/openGauss-server/dest/ + export GAUSSHOME=/home/test/mogdb-server/dest/ export LD_LIBRARY_PATH=$GAUSSHOME/lib:$LD_LIBRARY_PATH export PATH=$GAUSSHOME/bin:$PATH export DSS_HOME=/home/test/dss/dss0/dssdba ``` -4. 新建dsssever的目录。 +5. 新建dsssever的目录。 ```shell cd /home/test @@ -106,15 +107,15 @@ MogDB资源池化是MogDB推出的一种新型的集群架构。通过DMS和DSS mkdir -p dss/dev ``` -5. 用dd命令新建一个模拟的块设备文件。 +6. 用dd命令新建一个模拟的块设备文件。 - 下面的命令是建2T的命令,请根据自己需要的大小调整bs和count的值,执行时间依赖于磁盘的性能。 + 下面的命令是建100G的命令,请根据自己需要的大小调整bs和count的值,执行时间依赖于磁盘的性能。 ```shell - dd if=/dev/zero of=/home/test/dss/dev/dss-dba bs=2M count=1024000 >/dev/null 2>&1 + dd if=/dev/zero of=/home/test/dss/dev/dss-dba bs=2M count=51200 >/dev/null 2>&1 ``` -6. 创建2个dn节点需要的dss实例0和dss实例1的配置文件。 +7. 创建2个dn节点需要的dss实例0和dss实例1的配置文件,其中17102和18102是dssserver要用的端口,应避免冲突,同时INST_ID不能与本机中其它dssserver有冲突。 创建dss实例0的配置文件: @@ -176,104 +177,100 @@ MogDB资源池化是MogDB推出的一种新型的集群架构。通过DMS和DSS data:/home/test/dss/dev/dss-dba ``` - > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-caution.gif) **注意:** + > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-warning.gif) **注意:** > > 一台服务器上建多个dn(数据库)节点,ip是相同的,服务使用的端口号不同。 -7. 创建存放数据库数据的数据卷,启动dssserver服务。 +8. 【可选】【初次执行请跳过】当后续步骤执行出错时,需要先执行如下命令清理残余目录,完成清理后再从下一步开始执行 + + ```shell + ##删除文件系统内的pgdata残余目录 + rm -rf /home/test/data/node1 /home/test/data/node2 + ##擦除模拟文件头部内容,使得虚拟文件内容不被dssserver识别,用于重新建卷 + dd if=/dev/zero of=/home/test/dss/dev/dss-dba bs=2M count=100 conv=notrunc >/dev/null 2>&1 + ``` + +9. 创建存放数据库数据的数据卷,启动dssserver服务。 ```shell ##这里是第3步中配好的环境变量 source /home/test/envfile + ##创建DSS卷组信息 dsscmd cv -g data -v /home/test/dss/dev/dss-dba + ##拉起dssserver服务 dssserver -D /home/test/dss/dss0/dssdba & #上个命令显示DSS SERVER STARTED即为成功 dssserver -D /home/test/dss/dss1/dssdba & #上个命令显示DSS SERVER STARTED即为成功 - + #创建完可以通过如下命令确认是否建卷成功 dsscmd lsvg -U UDS:/home/test/dss/dss0/.dss_unix_d_socket dsscmd ls -m M -p +data -U UDS:/home/test/dss/dss0/.dss_unix_d_socket ``` - > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-caution.gif) **注意:** + > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-warning.gif) **注意:** > - > dss不支持启动后修改卷组配置,如涉及修改请重新执行上述步骤。 - -8. 依次执行每个节点的gs_initdb操作。 + > DSS不支持启动后修改卷组配置,如涉及修改,请先使用kill -9命令关闭dssserver进程,完成修改后再重新拉起dssserver进程。 该步骤如果出错,请查看DSS配置文件是否正确,如端口号是否冲突,INST_ID是否已经被其它DSS服务使用等。 - ```shell - mkdir -p /home/test/data - rm -rf node1 node2 - - gs_intdb -D /home/test/data/node1 --nodename=node1 -U tester -w Pasword --vgname=+data --enable-dss --dms_url="0:127.0.0.1:1613,1:127.0.0.1:1614" -I 0 --socketpath='UDS:/home/test/dss/dss0/.dss_unix_d_socket' - - echo "ss_enable_ssl = off - listen_addresses = '*' - port=12210 - ss_enable_reform = off - ss_work_thread_count = 32 - enable_segment = on - ss_log_level = 255 - ss_log_backup_file_count = 100 - ss_log_max_file_size = 1GB - " >> /home/test/data/node1/postgresql.conf - - sed '91 ahost all all 0.0.0.0/0 sha256' -i /home/test/data/node1/pg_hba.conf - - gs_intdb -D /home/test/data/node2 --nodename=node2 -U tester -w Pasword --vgname=+data --enable-dss --dms_url="0:127.0.0.1:1613,1:127.0.0.1:1614" -I 1 --socketpath='UDS:/home/test/dss/dss1/.dss_unix_d_socket' - - echo "ss_enable_ssl = off - listen_addresses = '*' - port=13210 - ss_enable_reform = off - ss_work_thread_count = 32 - enable_segment = on - ss_log_level = 255 - ss_log_backup_file_count = 100 - ss_log_max_file_size = 1GB - " >> /home/test/data/node2/postgresql.conf - - sed '91 ahost all all 0.0.0.0/0 sha256' -i /home/test/data/node2/pg_hba.conf - ``` +10. 手动执行多节点的initdb,其中initdb命令中1613和1614是dms通信要用的端口,12210和13210是数据库的通信端口,应避免冲突。 -9. 创建模拟CM功能的文件,并将其加入到第3步创建的环境变量中。 + ```shell + mkdir -p /home/test/data + rm -rf /home/test/data/node1 /home/test/data/node2 + + gs_initdb -D /home/test/data/node1 --nodename=node1 -U tester -w Pasword --vgname=+data --enable-dss --dms_url="0:127.0.0.1:1613,1:127.0.0.1:1614" -I 0 --socketpath='UDS:/home/test/dss/dss0/.dss_unix_d_socket' + + echo "ss_enable_ssl = off + listen_addresses = '*' + port=12210 + ss_enable_reform = off + ss_work_thread_count = 32 + enable_segment = on + ss_log_level = 255 + ss_log_backup_file_count = 100 + ss_log_max_file_size = 1GB + " >> /home/test/data/node1/postgresql.conf + + sed '91 ahost all all 0.0.0.0/0 sha256' -i /home/test/data/node1/pg_hba.conf + + gs_initdb -D /home/test/data/node2 --nodename=node2 -U tester -w Pasword --vgname=+data --enable-dss --dms_url="0:127.0.0.1:1613,1:127.0.0.1:1614" -I 1 --socketpath='UDS:/home/test/dss/dss1/.dss_unix_d_socket' + + echo "ss_enable_ssl = off + listen_addresses = '*' + port=13210 + ss_enable_reform = off + ss_work_thread_count = 32 + enable_segment = on + ss_log_level = 255 + ss_log_backup_file_count = 100 + ss_log_max_file_size = 1GB + " >> /home/test/data/node2/postgresql.conf + + sed '91 ahost all all 0.0.0.0/0 sha256' -i /home/test/data/node2/pg_hba.conf + ``` + +11. 创建模拟CM功能的文件,并将其加入到第3步创建的环境变量中。 - ```shell - echo "REFORMER_ID = 0" > /home/test/cm_config.ini - echo "BITMAP_ONLINE = 3" >> /home/test/cm_config.ini - echo "export CM_CONFIG_PATH=/home/test/cm_config.ini" >> /home/test/envfile - ``` + ```shell + echo "REFORMER_ID = 0" > /home/test/cm_config.ini + echo "BITMAP_ONLINE = 3" >> /home/test/cm_config.ini + echo "export CM_CONFIG_PATH=/home/test/cm_config.ini" >> /home/test/envfile + ``` -10. 依次启动节点1和节点2。 +12. 依次启动节点1和节点2。 - ```shell - source /home/test/envfile - gs_ctrl start -D /home/test/data/node1 - gs_ctrl start -D /home/test/data/node2 - ``` + ```shell + source /home/test/envfile + gs_ctrl start -D /home/test/data/node1 + gs_ctrl start -D /home/test/data/node2 + ``` ## 部分补充说明 -- ss_log_level参数用于控制日志中打印DMS和DSS相关的日志, 日志目录在pg_log/DMS里面。 - - - 17102和18102是dssserver要用的端口。 - - - 1613和1614是dms通信要用的端口。 - - - 12210和13210是MogDB数据库提供服务需要用的端口。 - - - dssserver配置中INST_ID不能有冲突, 比如多个dssserver配置成相同的ID。 - - - 该方式搭建出来的环境不支持高可用, 不能测试倒换和failover。 - - - 如果启动时报错,提示如“dms library version is not matched”等报错,表示DMS/DSS组件版本号错误,请参考编译步骤重新编译。 - - - 非CM环境下,限制了0节点为主节点,因此需要确保initdb阶段0节点创建成功。 - - - 如果安装过程出现报错,再次initdb时候可能会提示目录不为空。此时需要清理文件系统及DSS中的残留文件。文件系统可以通过rm命令直接删除node文件夹,DSS中可以对模拟的块设备文件头部写0(DSS将元数据信息记录在头部),清理完成后重新从第7步开始执行,清理命令参考如下: - - ```shell - rm -rf /home/test/data/node1 /home/test/data/node2 - dd if=/dev/zero of=/home/test/dss/dev/dss-dba bs=2M count=10 conv=notrunc >/dev/null 2>&1 - ``` \ No newline at end of file +- ss_log_level参数用于控制日志中打印DMS和DSS相关的日志,日志目录在pg_log/DMS里面。 +- 17102和18102是dssserver要用的端口。 +- 1613和1614是dms通信要用的端口。 +- 12210和13210是MogDB数据库提供服务需要用的端口。 +- dssserver配置中INST_ID不能有冲突,比如多个dssserver配置成相同的ID。 +- 如果启动时报错,提示如“dms library version is not matched”等报错,表示DMS/DSS组件版本号错误,请参考编译步骤重新编译。 +- 非CM环境下,限制了0节点为主节点,因此需要确保initdb阶段0节点创建成功。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v5.1/administrator-guide/database-deployment-scenario/resource-pooling-architecture/resource-pooling-om-installation-deployment.md b/product/zh/docs-mogdb/v5.1/administrator-guide/database-deployment-scenario/resource-pooling-architecture/resource-pooling-om-installation-deployment.md new file mode 100644 index 00000000..dc799467 --- /dev/null +++ b/product/zh/docs-mogdb/v5.1/administrator-guide/database-deployment-scenario/resource-pooling-architecture/resource-pooling-om-installation-deployment.md @@ -0,0 +1,30 @@ +--- +title: 资源池化OM安装部署 +summary: 资源池化OM安装部署 +author: Guo Huan +date: 2023-04-07 +--- + +# 资源池化OM安装部署 + +## 内容简介 + +MogDB资源池化是MogDB推出的一种新型的集群架构。该架构通过DMS和DSS组件,实现集群中多个节点的底层存储数据共享和节点间的内存实时共享,达到节省底层存储资源以及集群内部支持一写多读且可以实时一致性读的目的。 本文主要介绍如何用企业版安装包,使用OM安装资源池化环境。 + +## 环境预备 + +- 两台及以上的物理机 +- 一台企业级集中式存储(比如Huawei Dorado系列)或支持iscsi3协议的集中式存储 +- 两台物理机和存储之间通过光交换机互连,两台物理机之间通过光交换机或以太交换机互连,业务客户端和物理机之间通过光交换机或以太交换机互连 + +## OM安装指南 + +> ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** +> +> - 存储自身的配置、LUN的划分以及存储节点与物理机的连通配置不在安装指导范围中,此处假定物理机已经可以看到用于安装数据库的LUN。 +> - 一套集群需要(3+N)个LUN,说明如下: 1. cm_vote, cm投票盘,1套集群1个 2. cm_shared, cm数据盘,1套集群1个 3. dss_shared, 数据库数据盘,1套集群1个 4. dss_private_N, 数据库xlog盘,1套集群中根据节点数量每个节点1个,比如1主1备,就是2个:dss_private_0和dss_private_1,1主2备就是3个:dss_private_0、dss_private_1和dss_private_2,以此类推。 + +1. 准备软件包以及准备操作系统环境。 +2. 准备安装需要的xml。 +3. 执行preinstall。 +4. 执行install。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v5.1/administrator-guide/database-deployment-scenario/resource-pooling-architecture/resource-pooling-one-city-two-center-deployment.md b/product/zh/docs-mogdb/v5.1/administrator-guide/database-deployment-scenario/resource-pooling-architecture/resource-pooling-one-city-two-center-deployment.md new file mode 100644 index 00000000..d3879699 --- /dev/null +++ b/product/zh/docs-mogdb/v5.1/administrator-guide/database-deployment-scenario/resource-pooling-architecture/resource-pooling-one-city-two-center-deployment.md @@ -0,0 +1,459 @@ +--- +title: 资源池化同城双中心部署 +summary: 资源池化同城双中心部署 +author: Guo Huan +date: 2023-04-07 +--- + +# 资源池化同城双中心部署 + +## 内容简介 + +MogDB资源池化是MogDB推出的一种新型的集群架构.通过DMS和DSS组件,实现集群中多个节点的底层存储数据共享和节点间的内存实时共享,达到节省底层存储资源以及集群内部支持一写多读且可以实时一致性读的目的。 本文主要介绍基于日志合一的资源池化部署同城双中心。 + +- 在社区上正式发布的企业版安装包中, 如果需要搭建资源池化同城双中心, 在硬件上需要准备磁阵, 服务器和光交换机,且需要部署CM和OM组件。 +- 当前版本只支持资源池化本地xlog日志和远程同步复制xlog日志共存的实现下部署资源池化双集群。 + +## 手动部署同城双中心示例 + +资源池化部署通过om管理工具部署两个资源池化单集群,再配置容灾参数,从而搭建同城双中心。 + +> ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** 此处的手动安装是指工程编译之后,可通过om管理工具执行相关命令进行资源池化集群安装部署,MogDB常规安装请参照《安装指南》。 + +- 前置条件 + + - 工程已完成代码编译。 + - 主备存储已经挂载磁阵LUN设备,并且已经安装ultrapath多路径软件,磁阵设备可用。 + +- 限制条件 + + - 两套正常的dorado存储,需要搭建两套资源池化集群。 + - 为了支持日志合一,需要将集群内xlog日志全部存放在一个卷上。 + +- 组网方式 + + | 生产中心 | 主端 | 业务计算节点0 | 10.0.0.10 | 主存储 | Dorado1 | + | ------------- | --------- | ------------- | --------- | ------ | ------- | + | 业务计算节点1 | 10.0.0.20 | | | | | + | 容灾中心 | 备端 | 业务计算节点0 | 20.0.0.10 | 备存储 | Dorado2 | + | 业务计算节点1 | 20.0.0.20 | | | | | + +- 操作步骤 + + 第一步: 在主存储上创建资源池化需要的lun,以及远程同步复制xlog卷对应的lun,并且所有lun全部映射到业务计算节点上 + + - 需要保证同一个Dorado lun在一个集群内多台机器上映射的盘符一致,若不一致可以通过建立软连接的方法,使其对MogDB暴露的盘符一致即可。 + + - 例如wwn为00000000000001的盘在主机群0节点的盘符为sda,在主机群1节点的盘符为sdb,我们可以通过 + + ```bash + ll /dev/disk/by-id // 查看lun对应的wwn来确定具体的盘符 + ln -s /dev/sda /dev/first // 在0节点执行 + ln -s /dev/sdb /dev/first // 在1节点执行 + ``` + + 然后将/dev/first作为我们可用的盘 + + | lun | 盘符 | + | -------------- | -------- | + | data | /dev/sda | + | xlog | /dev/sdb | + | votingDiskPath | /dev/sdc | + | shareDiskDir | /dev/sdd | + +- 磁阵操作步骤 + + 1. 登录主集群DeviceManager,选择**服务->LUN组->创建** 来创建主集群LUN组; + 2. 登录主集群DeviceManager,选择**数据保护->LUN->远程复制Pair->创建** 为xlog卷创建远程复制Pair,执行完成后DeviceManager会在对端自动创建一个与本端xlog卷有同步复制关系的卷; + 3. 点击创建好的远程复制Pair,通过**操作->分裂** 将上一步建立的远程复制Pair分裂,此步骤是为了先分别拉起主备集群。 + 4. 登录备集群DeviceManager,执行相同的创建LUN的操作,在创建的LUN组中点击**成员LUN->增加**,然后选择主集群上已经创建的xlog卷,添加xlog盘,并在备集群存储创建并映射剩余的3个lun。 + 5. 在备集群DeviceManager中选择**数据保护->LUN->远程复制Pair**,然后搜索已经创建的远程复制Pair,通过**操作->取消从资源保护**使从端可读写。 + 6. 在**服务->LUN组->LUN**中搜索刚才创建的LUN名称,查询本端WWN,用来在服务器上映射到对应的盘符。在服务器root用户下,执行rescan-scsi-bus.sh脚本扫描创建的LUN组,执行 ll /dev/disk/by-id | grep xxx 查询对应的盘符。 + + 第二步: 主存储上准备xml文件。 + + 根据配置说明准备资源池化集群需要的xml文件,以一主一备举例: + + ```xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ``` + + 将xml保存在/opt/software/MogDB/cluster_config.xml中 + + `Tips`: 用户需要修改节点名称、节点IP、目录、盘符、端口号 + + 第三步: 在主存储上执行如下操作安装部署主集群,安装用户omm。 + + 简化步骤如下: + + ```bash + su - root + mkdir -p /opt/software/MogDB + chmod 755 -R /opt/software + 将下载的安装包放置/opt/software/MogDB目录下 + + cd /opt/software/MogDB + tar -zxvf MogDB-x.x.x-openEuler-64bit-all.tar.gz + tar -zxvf MogDB-x.x.x-openEuler-64bit-om.tar.gz + + cd /opt/software/MogDB/script + ./gs_preinstall -U omm -G dbgrp -X /opt/software/MogDB/cluster_config.xml --sep-env-file=/home/omm/env + + su - omm + source /home/omm/env + gs_install -X /opt/software/MogDB/cluster_config.xml --dorado-cluster-mode="primary" + ``` + + 参数解释: + + - sep-env-file 分离环境变量,参数取值是一个安装用户omm可以访问到的文件目录 + - dorado-cluster-mode 主机群or备集群 + - omm 操作系统用户 + - dbgrp 操作系统用户属组 + + 第四步: 查询主集群状态。 + + 建立容灾关系之后就是主集群,未建立容灾关系之前还是资源池化单集群。 + + ```markdown + [huawei@node1 dn_6001]$ cm_ctl query -Cvidp + [ CMServer State ] + + node node_ip instance state + ------------------------------------------------------------------------- + 1 node1 10.0.0.10 1 /opt/huawei/install/cm/cm_server Primary + 2 node2 10.0.0.20 2 /opt/huawei/install/cm/cm_server Standby + + + [ Defined Resource State ] + + node node_ip res_name instance state + --------------------------------------------------------- + 1 node1 10.0.0.10 dms_res 6001 OnLine + 2 node2 10.0.0.20 dms_res 6002 OnLine + 1 node1 10.0.0.10 dss 20001 OnLine + 2 node2 10.0.0.20 dss 20002 OnLine + + [ Cluster State ] + + cluster_state : Normal + redistributing : No + balanced : Yes + current_az : AZ_ALL + + [ Datanode State ] + + node node_ip instance state | node node_ip instance state + ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ + 1 node1 10.0.0.10 6001 25400 /opt/huawei/install/data/dn P Primary Normal | 2 node2 10.0.0.20 6002 25400 /opt/huawei/install/data/dn S Standby Normal + ``` + + 第五步: 在备存储上准备lun和xml文件。同第1步和第2步一样。 + + `Tips`: 用户需要修改节点名称、节点IP、目录、盘符、端口号 + + 第六步: 在备存储上集群(建立容灾关系之后就是备集群)上执行如下操作安装部署备集群,安装用户omm。 + + 简化步骤如下: + + ```bash + su - root + mkdir -p /opt/software/MogDB + chmod 755 -R /opt/software + 将下载的安装包放置/opt/software/MogDB目录下 + + cd /opt/software/MogDB + tar -zxvf MogDB-x.x.x-openEuler-64bit-all.tar.gz + tar -zxvf MogDB-x.x.x-openEuler-64bit-om.tar.gz + + cd /opt/software/MogDB/script + gs_preinstall -U omm -G dbgrp -X /opt/software/MogDB/cluster_config.xml --sep-env-file=/home/omm/env + + su - omm + gs_install -X /opt/software/MogDB/cluster_config.xml --dorado-cluster-mode="standby" + ``` + + 第七步: 查询备存储上集群(建立容灾关系之后就是备集群)状态。 + + ```markdown + 建立容灾关系之后就是备集群,未建立容灾关系之前还是资源池化单集群。 + [omm@node1 dn_6001]$ cm_ctl query -Cvidp + [ CMServer State ] + + node node_ip instance state + ------------------------------------------------------------------------- + 1 node1 20.0.0.10 1 /opt/huawei/install/cm/cm_server Primary + 2 node2 20.0.0.20 2 /opt/huawei/install/cm/cm_server Standby + + + [ Defined Resource State ] + + node node_ip res_name instance state + --------------------------------------------------------- + 1 node1 20.0.0.10 dms_res 6001 OnLine + 2 node2 20.0.0.20 dms_res 6002 OnLine + 1 node1 20.0.0.10 dss 20001 OnLine + 2 node2 20.0.0.20 dss 20002 OnLine + + [ Cluster State ] + + cluster_state : Normal + redistributing : No + balanced : Yes + current_az : AZ_ALL + + [ Datanode State ] + + node node_ip instance state | node node_ip instance state + ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ + 1 node1 20.0.0.10 6001 25400 /opt/huawei/install/data/dn P Primary Normal | 2 node2 20.0.0.20 6002 25400 /opt/huawei/install/data/dn S Standby Normal + ``` + + 第八步: 停止主集群,配置容灾参数,重新拉起主集群 + + ```bash + cm_ctl stop + + 主节点 + gs_guc set -N node1 -D /opt/mpp/install/data/dn -c "application_name = 'dn_master_0'" + gs_guc set -N node1 -D /opt/mpp/install/data/dn -c "cross_cluster_replconninfo1='localhost=10.0.0.10 localport=25400 remotehost=20.0.0.10 remoteport=25400'" + gs_guc set -N node1 -D /opt/mpp/install/data/dn -c "cross_cluster_replconninfo2='localhost=10.0.0.10 localport=25400 remotehost=20.0.0.20 remoteport=25400'" + gs_guc set -N node1 -D /opt/mpp/install/data/dn -c "ha_module_debug = off" + + gs_guc set -N node1 -D /opt/mpp/install/data/dn -h "host all all 20.0.0.10/32 trust" + gs_guc set -N node1 -D /opt/mpp/install/data/dn -h "host all all 20.0.0.20/32 trust" + + 备节点 + gs_guc set -N node2 -D /opt/mpp/install/data/dn -c "application_name = 'dn_master_1'" + gs_guc set -N node2 -D /opt/mpp/install/data/dn -c "cross_cluster_replconninfo1='localhost=10.0.0.20 localport=25400 remotehost=20.0.0.10 remoteport=25400'" + gs_guc set -N node2 -D /opt/mpp/install/data/dn -c "cross_cluster_replconninfo2='localhost=10.0.0.20 localport=25400 remotehost=20.0.0.20 remoteport=25400'" + gs_guc set -N node2 -D /opt/mpp/install/data/dn -c "ha_module_debug = off" + + gs_guc set -N node2 -D /opt/mpp/install/data/dn -h "host all all 20.0.0.10/32 trust" + gs_guc set -N node2 -D /opt/mpp/install/data/dn -h "host all all 20.0.0.20/32 trust" + + 设置主集群cm参数 + cm_ctl set --param --agent -k dorado_cluster_mode=1 + + 启动主集群 + cm_ctl start + ``` + + 参数解释: + + - cross_cluster_replconninfo 主备集群建立连接信息,localport为数据库HA端口(上述示例用的xml里的dataPortBase,当开启线程池enable_thread_pool时,需配置为实际HAPort) + + `Tips`: gs_guc为MogDB提供的修改配置文件工具,也可以通过直接打开/opt/huawei/install/data/dn($PGDATA)下的postgresql.conf与pg_hba.conf文件将上面双引号中的内容手动写入文件中。 + + 第九步:. 停止备存储上的资源池化单集群(建立容灾关系之后就是备集群),配置容灾参数 + + ```bash + cm_ctl stop + + 主节点 + gs_guc set -N node1 -D /opt/mpp/install/data/dn -c "application_name = 'dn_standby_0'" + gs_guc set -N node1 -D /opt/mpp/install/data/dn -c "cross_cluster_replconninfo1='localhost=20.0.0.10 localport=25400 remotehost=10.0.0.10 remoteport=25400'" + gs_guc set -N node1 -D /opt/mpp/install/data/dn -c "cross_cluster_replconninfo2='localhost=20.0.0.10 localport=25400 remotehost=10.0.0.20 remoteport=25400'" + gs_guc set -N node1 -D /opt/mpp/install/data/dn -c "ha_module_debug = off" + + gs_guc set -N node1 -D /opt/mpp/install/data/dn -h "host all all 10.0.0.10/32 trust" + gs_guc set -N node1 -D /opt/mpp/install/data/dn -h "host all all 10.0.0.20/32 trust" + + 备节点 + gs_guc set -N node2 -D /opt/mpp/install/data/dn -c "application_name = 'dn_standby_1'" + gs_guc set -N node2 -D /opt/mpp/install/data/dn -c "cross_cluster_replconninfo1='localhost=20.0.0.20 localport=25400 remotehost=10.0.0.10 remoteport=25400'" + gs_guc set -N node2 -D /opt/mpp/install/data/dn -c "cross_cluster_replconninfo2='localhost=20.0.0.20 localport=25400 remotehost=10.0.0.20 remoteport=25400'" + gs_guc set -N node2 -D /opt/mpp/install/data/dn -c "ha_module_debug = off" + + gs_guc set -N node2 -D /opt/mpp/install/data/dn -h "host all all 10.0.0.10/32 trust" + gs_guc set -N node2 -D /opt/mpp/install/data/dn -h "host all all 10.0.0.20/32 trust" + ``` + + 第十步:. 拉起首备dssserver,执行build + + ```javascript + export DSS_MAINTAIN=TRUE // 打开dss手动模式 + dssserver -D /opt/huawei/install/dss_home & // 拉起dssserver,-D 指定$DSS_HOME + gs_ctl build -D /opt/huawei/install/data/dn -b cross_cluster_full -q + dsscmd stopdss // 停止手动模式的dssserver + + `Tips`: build必须需要加-q,指build成功后不拉起数据库。 + ``` + + 第十一步: 配置备集群cm参数,重新拉起备集群 + + ```sql + cm_ctl set --param --server -k backup_open=1 + cm_ctl set --param --agent -k agent_backup_open=1 + cm_ctl set --param --agent -k dorado_cluster_mode=2 + 在$DSS_HOME/cfg/dss_inst.ini文件中增加一行(备集群所有节点) + CLUSTER_RUN_MODE=cluster_standby + + 切换同步复制关系 分裂改为同步(非常关键) + + cm_ctl start + ``` + + 第十二步: 查询集群状态 + + ```yaml + 主集群使用cm_ctl query -Cvidp查询出来同第步一样 + 备集群查询结果如下,备集群节点0从没有建立容灾关系时的primary变成建立容灾关系之后的Main Standby + + [mpp@node2 dn_6002]$ cm_ctl query -Cvidp + [ CMServer State ] + + node node_ip instance state + ------------------------------------------------------------------------- + 1 node1 20.0.0.10 1 /opt/huawei/install/cm/cm_server Primary + 2 node2 20.0.0.20 2 /opt/huawei/install/cm/cm_server Standby + + + [ Defined Resource State ] + + node node_ip res_name instance state + --------------------------------------------------------- + 1 node1 20.0.0.10 dms_res 6001 OnLine + 2 node2 20.0.0.20 dms_res 6002 OnLine + 1 node1 20.0.0.10 dss 20001 OnLine + 2 node2 20.0.0.20 dss 20002 OnLine + + [ Cluster State ] + + cluster_state : Normal + redistributing : No + balanced : Yes + current_az : AZ_ALL + + [ Datanode State ] + + node node_ip instance state | node node_ip instance state + ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ + 1 node1 20.0.0.10 6001 25400 /opt/huawei/install/data/dn P Main Standby Normal | 2 node2 20.0.0.20 6002 25400 /opt/huawei/install/data/dn S Standby Normal + ``` + + 第十三步: . 在主集群主机和备集群首备执行查询,可观察到流复制信息 + + ```yaml + 主集群主节点0 + [omm@node1 dn]$ gs_ctl query -D /opt/huawei/install/data/dn + [2023-04-18 09:38:34.397][1498175][][gs_ctl]: gs_ctl query ,datadir is /opt/huawei/install/data/dn + HA state: + local_role : Primary + static_connections : 2 + db_state : Normal + detail_information : Normal + + Senders info: + sender_pid : 1456376 + local_role : Primary + peer_role : StandbyCluster_Standby + peer_state : Normal + state : Streaming + sender_sent_location : 2/5C8 + sender_write_location : 2/5C8 + sender_flush_location : 2/5C8 + sender_replay_location : 2/5C8 + receiver_received_location : 2/5C8 + receiver_write_location : 2/5C8 + receiver_flush_location : 2/5C8 + receiver_replay_location : 2/5C8 + sync_percent : 100% + sync_state : Async + sync_priority : 0 + sync_most_available : Off + channel : 10.0.0.10:25400-->20.0.0.10:43350 + + Receiver info: + No information + + 备集群首备节点0 + [omm@nodename pg_log]$ gs_ctl query -D /opt/huawei/install/data/dn + [2023-04-18 11:33:09.288][2760315][][gs_ctl]: gs_ctl query ,datadir is /opt/huawei/install/data/dn + HA state: + local_role : Main Standby + static_connections : 2 + db_state : Normal + detail_information : Normal + + Senders info: + No information + Receiver info: + receiver_pid : 1901181 + local_role : Standby + peer_role : Primary + peer_state : Normal + state : Normal + sender_sent_location : 2/5C8 + sender_write_location : 2/5C8 + sender_flush_location : 2/5C8 + sender_replay_location : 2/5C8 + receiver_received_location : 2/5C8 + receiver_write_location : 2/5C8 + receiver_flush_location : 2/5C8 + receiver_replay_location : 2/5C8 + sync_percent : 100% + channel : 20.0.0.10:43350<--10.0.0.10:25400 + ``` \ No newline at end of file diff --git a/product/zh/docs-mogdb/v5.1/administrator-guide/upgrade-guide.md b/product/zh/docs-mogdb/v5.1/administrator-guide/upgrade-guide.md index 52c41d41..901e18e2 100644 --- a/product/zh/docs-mogdb/v5.1/administrator-guide/upgrade-guide.md +++ b/product/zh/docs-mogdb/v5.1/administrator-guide/upgrade-guide.md @@ -246,7 +246,7 @@ root用户密码 ```sql mkdir static cd static/ - wget https://cdn-mogdb.enmotech.com/mogdb-media/3.0.1/Plugins-3.0.1-CentOS-x86_64.tar.gz + wget https://cdn-mogdb.enmotech.com/mogdb-media/5.1.0/Plugins-x.x.x-CentOS-x86_64.tar.gz ``` 6. 在就地升级或灰度升级前执行前置脚本gs_preinstall。 @@ -300,9 +300,23 @@ root用户密码 2. 执行如下命令查看所有节点的版本信息。 - ```shell + ``` gs_ssh -c "gsql -V" ``` + + 查看gaussdb版本,升级提交后应该为新版本 + + ```bash + gs_ssh -c "guassdb -V" + ``` + + 查看内核版本,升级提交后应该为新版本 + + ```csharp + gs_ssh -c "gsql -d postgres -p 5432 -c "select working_version_num();"" + ``` + + **重点说明:** 内核版本查询出来为升级后新版本的二进制包中的version.cfg中对应的版本号,提交升级后进程中会显示(-u + 版本号),该版本号是旧版本的二进制包中的version.cfg中对应的版本号,这是因为灰度升级提交流程中,不做进程切换,是在线切换内核版本号,因此查询的进程中仍显示(-u + 旧版本的二进制包中的version.cfg中对应的版本号),实际内核版本号应根据working_version_num函数查询,用户可在业务空闲状态,重启数据库,查询的进程中就不会显示(-u + 旧版本的二进制包中的version.cfg中对应的版本号)。 ### 检查升级数据库状态 diff --git a/product/zh/docs-mogdb/v5.1/common-faults-and-identification/common-fault-locating-cases/sql-fault/lock-wait-timeout-is-displayed.md b/product/zh/docs-mogdb/v5.1/common-faults-and-identification/common-fault-locating-cases/sql-fault/lock-wait-timeout-is-displayed.md index 06e30c47..bfed0d73 100644 --- a/product/zh/docs-mogdb/v5.1/common-faults-and-identification/common-fault-locating-cases/sql-fault/lock-wait-timeout-is-displayed.md +++ b/product/zh/docs-mogdb/v5.1/common-faults-and-identification/common-fault-locating-cases/sql-fault/lock-wait-timeout-is-displayed.md @@ -21,5 +21,4 @@ ERROR: Lock wait timeout: thread 140533638080272 waiting for ShareLock on relat ## 处理办法 -- 数据库在识别此类错误后,会自动进行重跑,重跑次数可以使用max_query_retry_times控制。 - 需要分析锁超时的原因,查看系统表pg_locks,pg_stat_activity可以找出超时的SQL语句。 diff --git a/product/zh/docs-mogdb/v5.1/developer-guide/dev/2-development-based-on-jdbc/5-connecting-to-a-database.md b/product/zh/docs-mogdb/v5.1/developer-guide/dev/2-development-based-on-jdbc/5-connecting-to-a-database.md index ad7c6d83..2700dc41 100644 --- a/product/zh/docs-mogdb/v5.1/developer-guide/dev/2-development-based-on-jdbc/5-connecting-to-a-database.md +++ b/product/zh/docs-mogdb/v5.1/developer-guide/dev/2-development-based-on-jdbc/5-connecting-to-a-database.md @@ -28,7 +28,7 @@ JDBC提供了三个方法,用于创建数据库连接。 | 参数 | 描述 | | :------- | :-------------- | | url | 以opengauss-jdbc-X.X.X.jar为例,opengauss-jdbc-X.X.X.jar的数据库连接描述符格式如下
- `jdbc:opengauss:database`
- `jdbc:opengauss://host/database`
- `jdbc:opengauss://host:port/database`
- `jdbc:opengauss://host:port/database?param1=value1¶m2=value2`
-`jdbc:opengauss://host1:port1,host2:port2/database?param1=value1¶m2=value2`
说明:
- database为要连接的数据库名称。
- host为数据库服务器名称或IP地址。
连接MogDB的机器与MogDB不在同一网段时,host指定的IP地址应为Manager界面上所设的coo.cooListenIp2(应用访问IP)的取值。
由于安全原因,数据库主节点禁止MogDB内部其他节点无认证接入。如果要在MogDB内部访问数据库主节点,请将JDBC程序部署在数据库主节点所在机器,host使用"127.0.0.1"。否则可能会出现"FATAL: Forbid remote connection with trust method!"错误。
建议业务系统单独部署在MogDB外部,否则可能会影响数据库运行性能。
缺省情况下,连接服务器为localhost。
- port为数据库服务器端口。
缺省情况下,会尝试连接到5432端口的database。
- param为参数名称,即数据库连接属性。
参数可以配置在URL中,以"?"开始配置,以"="给参数赋值,以"&"作为不同参数的间隔。也可以采用info对象的属性方式进行配置,详细示例会在本节给出。
- value为参数值,即数据库连接属性值。
- 连接时需配置connectTimeout、socketTimeout,如果未配置,默认为0,即不会超时。在DN与客户端出现网络故障时,客户端一直未收到DN侧ACK确认报文,会启动超时重传机制,不断的进行重传。当超时时间达到系统默认的600s后才会报超时错误,这也就会导致RTO时间很高。 | -| info | 数据库连接属性(所有属性大小写敏感)。常用的属性如下:
- PGDBNAME: String类型。表示数据库名称。(URL中无需配置该参数,自动从URL中解析)
- PGHOST: String类型。主机IP地址。详细示例见下。
- PGPORT: Integer类型。主机端口号。详细示例见下。
- user: String类型。表示创建连接的数据库用户。
- password: String类型。表示数据库用户的密码。
- enable_ce:String类型。其中enable_ce=1表示JDBC支持密态等值查询。
- loggerLevel: String类型。目前支持4种级别: OFF、INFO、DEBUG、TRACE。设置为OFF关闭日志,设置为INFO、DEBUG和TRACE记录的日志信息详细程度不同。默认值为INFO。该参数设置值不区分大小写。
- loggerFile: String类型。Logger输出的文件名。需要显示指定日志文件名,若未指定目录则生成在客户端运行程序目录。
- allowEncodingChanges: Boolean类型。设置该参数值为"true"进行字符集类型更改,配合characterEncoding=CHARSET设置字符集,二者使用"&"分隔。
- currentSchema: String类型。在search-path中指定要设置的schema。
- hostRecheckSeconds: Integer类型。JDBC尝试连接主机后会保存主机状态: 连接成功或连接失败。在hostRecheckSeconds时间内保持可信,超过则状态失效。缺省值是10秒。
- ssl: Boolean类型。以SSL方式连接。
ssl=true可支持NonValidatingFactory通道和使用证书的方式:
1、NonValidatingFactory通道需要配置用户名和密码,同时将SSL设置为true。
2、配置客户端证书、密钥、根证书,将SSL设置为true。
- sslmode: String类型。SSL认证方式。取值范围为: disable、allow、prefer、require、verify-ca、verify-full。
- disable:不使用SSL安全连接。
- allow:如果数据库服务器要求使用,则可以使用SSL安全加密连接,但不验证数据库服务器的真实性。
- prefer:如果数据库支持,那么首选使用SSL连接,但不验证数据库服务器的真实性。
- require:只尝试SSL连接,如果存在CA文件,则应设置成verify-ca的方式验证。
- verify-ca:只尝试SSL连接,并且验证服务器是否具有由可信任的证书机构签发的证书。
- verify-full:只尝试SSL连接,并且验证服务器是否具有由可信任的证书机构签发的证书,以及验证服务器主机名是否与证书中的一致。
- sslcert: String类型。提供证书文件的完整路径。客户端和服务端证书的类型为End Entity。
- sslkey: String类型。提供密钥文件的完整路径。使用时将客户端证书转换为DER格式:
`openssl pkcs8 -topk8 -outform DER -in client.key -out client.key.pk8 -nocrypt`
- sslrootcert: String类型。SSL根证书的文件名。根证书的类型为CA。
- sslpassword: String类型。提供给ConsoleCallbackHandler使用。
- sslpasswordcallback: String类型。SSL密码提供者的类名。缺省值: org.opengauss.ssl.jdbc4.LibPQFactory.ConsoleCallbackHandler。
- sslfactory: String类型。提供的值是SSLSocketFactory在建立SSL连接时用的类名。
- sslfactoryarg: String类型。此值是上面提供的sslfactory类的构造函数的可选参数(不推荐使用)。
- sslhostnameverifier: String类型。主机名验证程序的类名。接口实现javax.net.ssl.HostnameVerifier,默认使用org.opengauss.ssl.PGjdbcHostnameVerifier。
- loginTimeout: Integer类型。指建立数据库连接的等待时间。超时时间单位为秒。
- connectTimeout: Integer类型。用于连接服务器操作的超时值。如果连接到服务器花费的时间超过此值,则连接断开。超时时间单位为秒,值为0时表示已禁用,timeout不超时。
- socketTimeoutInConnecting:Integer类型。用于socket读取操作的超时值。在建立PgConnection到可以执行sql语句之前的socket读操作超时时间受该参数影响。如果从服务器读取所花费的时间超过此值,则连接关闭。超时时间单位为秒,值为0时表示已禁用,timeout不超时。默认值为5。
- socketTimeout: Integer类型。用于socket读取操作的超时值。当连接可以执行sql语句之后,socket读操作超时时间受该参数影响。如果从服务器读取所花费的时间超过此值,则连接关闭。超时时间单位为秒,值为0时表示已禁用,timeout不超时。默认值为0。
- cancelSignalTimeout: Integer类型。发送取消消息本身可能会阻塞,此属性控制用于取消命令的"connect超时"和"socket超时"。超时时间单位为秒,默认值为10秒。
- tcpKeepAlive: Boolean类型。启用或禁用TCP保活探测功能。默认为false。
- logUnclosedConnections: Boolean类型。客户端可能由于未调用Connection对象的close()方法而泄漏Connection对象。最终这些对象将被垃圾回收,并且调用finalize()方法。如果调用者自己忽略了此操作,该方法将关闭Connection。
- assumeMinServerVersion: String类型。客户端会发送请求进行float精度设置。该参数设置要连接的服务器版本,如assumeMinServerVersion=9.0,可以在建立时减少相关包的发送。
- ApplicationName: String类型。设置正在使用连接的JDBC驱动的名称。通过在数据库主节点上查询pg_stat_activity表可以看到正在连接的客户端信息,JDBC驱动名称显示在application_name列。缺省值为PostgreSQL JDBC Driver。
- connectionExtraInfo: Boolean类型。表示驱动是否上报当前驱动的部署路径、进程属主用户到数据库。取值范围: true或false,默认值为false。设置connectionExtraInfo为true,JDBC驱动会将当前驱动的部署路径、进程属主用户上报到数据库中,记录在connection_info参数里;同时可以在PG_STAT_ACTIVITY中查询到。
- autosave: String类型。共有3种: "always", "never", "conservative"。如果查询失败,指定驱动程序应该执行的操作。在autosave=always模式下,JDBC驱动程序在每次查询之前设置一个保存点,并在失败时回滚到该保存点。在autosave=never模式(默认)下,无保存点。在autosave=conservative模式下,每次查询都会设置保存点,但是只会在"statement XXX无效"等情况下回滚并重试。
- protocolVersion: Integer类型。连接协议版本号,目前仅支持3。注意:设置该参数时将采用md5加密方式,需要同步修改数据库的加密方式:gs_guc set -N all -I all -c "password_encryption_type=1" ,重启MogDB生效后需要创建用md5方式加密口令的用户。同时修改pg_hba.conf,将客户端连接方式修改为md5。用新建用户进行登录(不推荐)。
说明:
MD5加密算法安全性低,存在安全风险,建议使用更安全的加密算法。
- prepareThreshold: Integer类型。控制parse语句何时发送。默认值是5。第一次parse一个SQL比较慢,后面再parse就会比较快,因为有缓存了。如果一个会话连续多次执行同一个SQL,在达到prepareThreshold次数以上时,JDBC将不再对这个SQL发送parse命令。
- preparedStatementCacheQueries: Integer类型。确定每个连接中缓存的查询数,默认情况下是256。若在prepareStatement()调用中使用超过256个不同的查询,则最近最少使用的查询缓存将被丢弃。0表示禁用缓存。
- preparedStatementCacheSizeMiB: Integer类型。确定每个连接可缓存的最大值(以兆字节为单位),默认情况下是5。若缓存了超过5MB的查询,则最近最少使用的查询缓存将被丢弃。0表示禁用缓存。
- databaseMetadataCacheFields: Integer类型。默认值是65536。指定每个连接可缓存的最大值。"0"表示禁用缓存。
- databaseMetadataCacheFieldsMiB: Integer类型。默认值是5。每个连接可缓存的最大值,单位是MB。"0"表示禁用缓存。
- stringtype: String类型,可选字段为: false, "unspecified", "varchar"。设置通过setString()方法使用的PreparedStatement参数的类型,如果stringtype设置为VARCHAR(默认值),则这些参数将作为varchar参数发送给服务器。若stringtype设置为unspecified,则参数将作为untyped值发送到服务器,服务器将尝试推断适当的类型。
- batchMode: Boolean类型。用于确定是否使用batch模式连接。默认值为on,表示开启batch模式。
- fetchsize: Integer类型。用于设置数据库连接所创建statement的默认fetchsize。默认值为0,表示一次获取所有结果。与defaultRowFetchSize等价。
- reWriteBatchedInserts: Boolean类型。批量导入时,该参数设置为on,可将N条插入语句合并为一条: insert into TABLE_NAME values(values1, …, valuesN), …, (values1, …, valuesN);使用该参数时,需设置batchMode=off。
- unknownLength: Integer类型,默认为Integer.MAX_VALUE。某些postgresql类型(例如TEXT)没有明确定义的长度,当通过ResultSetMetaData.getColumnDisplaySize和ResultSetMetaData.getPrecision等函数返回关于这些类型的数据时,此参数指定未知长度类型的长度。
- defaultRowFetchSize: Integer类型。确定一次fetch在ResultSet中读取的行数。限制每次访问数据库时读取的行数可以避免不必要的内存消耗,从而避免OutOfMemoryException。缺省值是0,这意味着ResultSet中将一次获取所有行。没有负数。
- binaryTransfer: Boolean类型。使用二进制格式发送和接收数据,默认值为"false"。
- binaryTransferEnable: String类型。启用二进制传输的类型列表,以逗号分隔。OID编号和名称二选一,例如binaryTransferEnable=Integer4_ARRAY,Integer8_ARRAY。比如:OID名称为BLOB,编号为88,可以如下配置:
binaryTransferEnable=BLOB 或 binaryTransferEnable=88
- binaryTransferDisEnable: String类型。禁用二进制传输的类型列表,以逗号分隔。OID编号和名称二选一。覆盖binaryTransferEnable的设置。
- blobMode: String类型。用于设置setBinaryStream方法为不同类型的数据赋值,设置为on时表示为blob类型数据赋值,设置为off时表示为bytea类型数据赋值,默认为on。
- socketFactory: String类型。用于创建与服务器socket连接的类的名称。该类必须实现了接口"javax.net.SocketFactory",并定义无参或单String参数的构造函数。
- socketFactoryArg: String类型。此值是上面提供的socketFactory类的构造函数的可选参数,不推荐使用。
- receiveBufferSize: Integer类型。该值用于设置连接流上的SO_RCVBUF。
- sendBufferSize: Integer类型。该值用于设置连接流上的SO_SNDBUF。
- preferQueryMode: String类型。共有4种:“extended”、“extendedForPrepared”、“extendedCacheEverything”和“simple”。用于指定执行查询的模式,simple模式会excute,不parse和bind;extended模式会bind和excute;extendedForPrepared模式为prepared statement扩展使用;extendedCacheEverything模式会缓存每个statement。
- targetServerType: String类型。该参数识别主备数据节点是通过查询URL连接串中,数据节点是否允许写操作来实现的,默认为“any”。共有四种:“any”、“master”、“slave”、“preferSlave”:
1. master则尝试连接到URL连接串中的主节点,如果找不到就抛出异常。
2. slave则尝试连接到URL连接串中的备节点,如果找不到就抛出异常。
3. preferSlave则尝试连接到URL连接串中的备数据节点(如果有可用的话),否则连接到主数据节点。
4. any则尝试连接URL连接串中的任何一个数据节点。
- heartbeatPeriod:是否开启对集群主节点进行心跳维护。该功能主要针对连接主备集群并且配置连接主节点的场景,当主节点宕机后,jdbc会在其备机中查找新的主机,使下次建连的时候可以快速定位到新的主机。当且仅当设置了targetServerType=master且连接串的节点数大于1,如果可以建连成功,则开启或者加入对集群主节点的心跳维护,该参数配置小于等于0时,没有心跳间隔按照不开启,或者当前连接节点不加入心跳维护,Integer类型,默认值5000,单位毫秒
- masterFailureHeartbeatTimeout:在开启主节点心跳维护的场景下,当集群主节点宕机,设置对集群探寻主节点的超时阈值,在这个超时时间内还没有探测到主节点的存在,则认为集群一直没有主节点,不在对当前集群进行维护,这个时间应该包含主节点的RTO时间,Integer类型,单位:毫秒,默认值:30000
- priorityServers:Integer类型。此值用于指定url上配置的前n个节点作为主集群被优先连接。默认值为null。该值为数字,大于0,且小于url上配置的DN数量。例如:`jdbc:opengauss://host1:port1,host2:port2,host3:port3,host4:port4,/database?priorityServers=2`。即表示host1与host2为主集群节点,host3与host4为容灾集群节点。
- forceTargetServerSlave:Boolean类型。此值用于控制是否开启强制连接备机功能,并在集群发生主备切换时,禁止已存在的连接在升主备机上继续使用。默认值为false,表示不开启强制连接备机功能。true,表示开启强制连接备机功能。
- loadBalanceHosts:Boolean类型。在默认模式下(禁用),默认顺序连接URL中指定的多个主机。如果启用,则使用洗牌算法从候选主机中随机选择一个主机建立连接。集中式环境下,如果使用此参数需要保证业务中没有写操作。
- autoBalance:jdbc可以通过URL中设置多个数据库节点,实现对主备集群的访问。通过设置负载均衡算法,jdbc可以在建立连接时,依照特定规则将客户端与主备集群的连接依次建立在URL中配置的各个节点上,以此实现连接的负载均衡。默认值为"false",此时jdbc始终与URL中配置的同一个满足建连条件的节点建立连接。连接主备集群时,使用此参数需要保证业务中没有写操作,或者与targetServerType=slave搭配,限制客户端只连接备机。目前,jdbc提供了roundrobin、priority roundrobin、leastconn、shuffle四种负载均衡模式,具体说明如下:
1. roundrobin:轮询模式,即与各候选节点轮流建立连接。取值:"roundrobin"、"true"、"balance"。
2. priority roundrobin:带优先级的轮询模式,优先对前n个候选节点做轮询建连,取值:"proprity[n]",n为非负整数。
3. leastconn:最小连接模式,对候选节点依照各节点的有效连接数做优先级排序,优先与连接数少的节点建立连接,该方法只会统计通过当前驱动在当前集群内使用leastconn模式建立的连接。取值:"leastconn"。
4. shuffle:随机模式,即随机选择候选节点建立连接,取值:"shuffle"。loadBalanceHosts设置为"true"等同于autoBalance设置为"shuffle"。
如果loadBalanceHosts设置为"true"的同时,autoBalance设置为以上四种负载均衡模式,优先使autoBalance生效;如果同时配置了autoBalance和targetServerType,jdbc会在满足targetServerType的前提下负载均衡;如果客户端使用多个指定了相同节点集合的URL分别通过同一驱动建立连接,jdbc会将其视为同一集群上的连接,并整体进行负载均衡。
- enableQuickAutoBalance:是否开启集群状态变化时,jdbc快速负载均衡功能。该功能主要针对使用连接池连接主备集群并配置负载均衡的场景。当功能开启时,jdbc会定时检测URL中配置的节点的状态,当检测到节点恢复时,jdbc会筛选集群内其他节点上的空闲连接并关闭。连接池感知到缓存连接减少后,会基于leastconn模式在新恢复节点上创建连接,使集群重新负载均衡。该功能在筛选可关闭连接时,只会筛选由当前驱动创建的当前集群内的设置了enableQuickAutoBalance="true"的连接。该功能必须与最小连接模式配合使用:设置为"true"且autoBalance设置为"leastconn"时,功能开启。
取值范围:{"true", "false"}。
默认值:"false"。
- maxIdleTimeBeforeTerminal:jdbc触发快速负载均衡时,可保留连接的最大空闲时长。jdbc快速负载均衡功能筛选空闲连接时,会将处于idle状态并且持续时间大于等于maxIdleTimeBeforeTerminal的连接视为空闲连接,这些连接可能会被关闭。该参数只在autoBalance设置为"leastconn"且enableQuickAutoBalance设置为"true"时才生效。
单位:秒。
取值范围:[0, 9223372036854775)内的整数。
默认值:30。
- minReservedConPerCluster:jdbc触发快速负载均衡时,一个集群内空闲连接的最小保留百分比。默认情况下,jdbc触发快速负载均衡时,所有被筛选出来的空闲连接都会被关闭。设置该参数可以在触发快速负载均衡时,jdbc会至少保留一个集群内空闲连接的minReservedConPerCluster%。该参数针对集群生效,如果存在多个配置了相同节点的URL都设置了该参数,则取最小值。
取值范围:[0, 100]内的整数。
默认值:0。
- minReservedConPerDatanode:jdbc触发快速负载均衡时,一个节点内空闲连接的最小保留百分比。设置该参数可以在触发快速负载均衡时,jdbc会至少保留每个节点内空闲连接的minReservedConPerDatanode%。如果URL串同时设置了minReservedConPerDatanode和minReservedConPerCluster,jdbc会保证最终筛选出来的待关闭连接同时满足两个参数。该参数针对集群生效,如果存在多个配置了相同节点的URL都设置了该参数,则取最小值。
取值范围:[0, 100]内的整数。
默认值:0。 | +| info | 数据库连接属性(所有属性大小写敏感)。常用的属性如下:
- PGDBNAME: String类型。表示数据库名称。(URL中无需配置该参数,自动从URL中解析)
- PGHOST: String类型。主机IP地址。详细示例见下。
- PGPORT: Integer类型。主机端口号。详细示例见下。
- user: String类型。表示创建连接的数据库用户。
- password: String类型。表示数据库用户的密码。
- enable_ce:String类型。其中enable_ce=1表示JDBC支持密态等值查询。
- loggerLevel: String类型。目前支持4种级别: OFF、INFO、DEBUG、TRACE。设置为OFF关闭日志,设置为INFO、DEBUG和TRACE记录的日志信息详细程度不同。默认值为INFO。该参数设置值不区分大小写。
- loggerFile: String类型。Logger输出的文件名。需要显示指定日志文件名,若未指定目录则生成在客户端运行程序目录。此参数已废弃,不再生效,如需使用可通过 java.util.logging 属性文件或系统属性进行配置。
- allowEncodingChanges: Boolean类型。设置该参数值为"true"进行字符集类型更改,配合characterEncoding=CHARSET设置字符集,二者使用"&"分隔。
- currentSchema: String类型。在search-path中指定要设置的schema。
- hostRecheckSeconds: Integer类型。JDBC尝试连接主机后会保存主机状态: 连接成功或连接失败。在hostRecheckSeconds时间内保持可信,超过则状态失效。缺省值是10秒。
- ssl: Boolean类型。以SSL方式连接。
ssl=true可支持NonValidatingFactory通道和使用证书的方式:
1、NonValidatingFactory通道需要配置用户名和密码,同时将SSL设置为true。
2、配置客户端证书、密钥、根证书,将SSL设置为true。
- sslmode: String类型。SSL认证方式。取值范围为: disable、allow、prefer、require、verify-ca、verify-full。
- disable:不使用SSL安全连接。
- allow:如果数据库服务器要求使用,则可以使用SSL安全加密连接,但不验证数据库服务器的真实性。
- prefer:如果数据库支持,那么首选使用SSL连接,但不验证数据库服务器的真实性。
- require:只尝试SSL连接,如果存在CA文件,则应设置成verify-ca的方式验证。
- verify-ca:只尝试SSL连接,并且验证服务器是否具有由可信任的证书机构签发的证书。
- verify-full:只尝试SSL连接,并且验证服务器是否具有由可信任的证书机构签发的证书,以及验证服务器主机名是否与证书中的一致。
- sslcert: String类型。提供证书文件的完整路径。客户端和服务端证书的类型为End Entity。
- sslkey: String类型。提供密钥文件的完整路径。使用时将客户端证书转换为DER格式:
`openssl pkcs8 -topk8 -outform DER -in client.key -out client.key.pk8 -nocrypt`
- sslrootcert: String类型。SSL根证书的文件名。根证书的类型为CA。
- sslpassword: String类型。提供给ConsoleCallbackHandler使用。
- sslpasswordcallback: String类型。SSL密码提供者的类名。缺省值: org.opengauss.ssl.jdbc4.LibPQFactory.ConsoleCallbackHandler。
- sslfactory: String类型。提供的值是SSLSocketFactory在建立SSL连接时用的类名。
- sslfactoryarg: String类型。此值是上面提供的sslfactory类的构造函数的可选参数(不推荐使用)。
- sslhostnameverifier: String类型。主机名验证程序的类名。接口实现javax.net.ssl.HostnameVerifier,默认使用org.opengauss.ssl.PGjdbcHostnameVerifier。
- loginTimeout: Integer类型。指建立数据库连接的等待时间。超时时间单位为秒。
- connectTimeout: Integer类型。用于连接服务器操作的超时值。如果连接到服务器花费的时间超过此值,则连接断开。超时时间单位为秒,值为0时表示已禁用,timeout不超时。
- socketTimeoutInConnecting:Integer类型。用于socket读取操作的超时值。在建立PgConnection到可以执行sql语句之前的socket读操作超时时间受该参数影响。如果从服务器读取所花费的时间超过此值,则连接关闭。超时时间单位为秒,值为0时表示已禁用,timeout不超时。默认值为5。
- socketTimeout: Integer类型。用于socket读取操作的超时值。当连接可以执行sql语句之后,socket读操作超时时间受该参数影响。如果从服务器读取所花费的时间超过此值,则连接关闭。超时时间单位为秒,值为0时表示已禁用,timeout不超时。默认值为0。
- cancelSignalTimeout: Integer类型。发送取消消息本身可能会阻塞,此属性控制用于取消命令的"connect超时"和"socket超时"。超时时间单位为秒,默认值为10秒。
- tcpKeepAlive: Boolean类型。启用或禁用TCP保活探测功能。默认为false。
- logUnclosedConnections: Boolean类型。客户端可能由于未调用Connection对象的close()方法而泄漏Connection对象。最终这些对象将被垃圾回收,并且调用finalize()方法。如果调用者自己忽略了此操作,该方法将关闭Connection。
- assumeMinServerVersion: String类型。客户端会发送请求进行float精度设置。该参数设置要连接的服务器版本,如assumeMinServerVersion=9.0,可以在建立时减少相关包的发送。
- ApplicationName: String类型。设置正在使用连接的JDBC驱动的名称。通过在数据库主节点上查询pg_stat_activity表可以看到正在连接的客户端信息,JDBC驱动名称显示在application_name列。缺省值为PostgreSQL JDBC Driver。
- connectionExtraInfo: Boolean类型。表示驱动是否上报当前驱动的部署路径、进程属主用户到数据库。取值范围: true或false,默认值为false。设置connectionExtraInfo为true,JDBC驱动会将当前驱动的部署路径、进程属主用户上报到数据库中,记录在connection_info参数里;同时可以在PG_STAT_ACTIVITY中查询到。
- autosave: String类型。共有3种: "always", "never", "conservative"。如果查询失败,指定驱动程序应该执行的操作。在autosave=always模式下,JDBC驱动程序在每次查询之前设置一个保存点,并在失败时回滚到该保存点。在autosave=never模式(默认)下,无保存点。在autosave=conservative模式下,每次查询都会设置保存点,但是只会在"statement XXX无效"等情况下回滚并重试。
- protocolVersion: Integer类型。连接协议版本号,目前仅支持3。注意:设置该参数时将采用md5加密方式,需要同步修改数据库的加密方式:gs_guc set -N all -I all -c "password_encryption_type=1" ,重启MogDB生效后需要创建用md5方式加密口令的用户。同时修改pg_hba.conf,将客户端连接方式修改为md5。用新建用户进行登录(不推荐)。
说明:
MD5加密算法安全性低,存在安全风险,建议使用更安全的加密算法。
- prepareThreshold: Integer类型。控制parse语句何时发送。默认值是5。第一次parse一个SQL比较慢,后面再parse就会比较快,因为有缓存了。如果一个会话连续多次执行同一个SQL,在达到prepareThreshold次数以上时,JDBC将不再对这个SQL发送parse命令。
- preparedStatementCacheQueries: Integer类型。确定每个连接中缓存的查询数,默认情况下是256。若在prepareStatement()调用中使用超过256个不同的查询,则最近最少使用的查询缓存将被丢弃。0表示禁用缓存。
- preparedStatementCacheSizeMiB: Integer类型。确定每个连接可缓存的最大值(以兆字节为单位),默认情况下是5。若缓存了超过5MB的查询,则最近最少使用的查询缓存将被丢弃。0表示禁用缓存。
- databaseMetadataCacheFields: Integer类型。默认值是65536。指定每个连接可缓存的最大值。"0"表示禁用缓存。
- databaseMetadataCacheFieldsMiB: Integer类型。默认值是5。每个连接可缓存的最大值,单位是MB。"0"表示禁用缓存。
- stringtype: String类型,可选字段为: false, "unspecified", "varchar"。设置通过setString()方法使用的PreparedStatement参数的类型,如果stringtype设置为VARCHAR(默认值),则这些参数将作为varchar参数发送给服务器。若stringtype设置为unspecified,则参数将作为untyped值发送到服务器,服务器将尝试推断适当的类型。
- batchMode: Boolean类型。用于确定是否使用batch模式连接。默认值为on,表示开启batch模式。
- fetchsize: Integer类型。用于设置数据库连接所创建statement的默认fetchsize。默认值为0,表示一次获取所有结果。与defaultRowFetchSize等价。
- reWriteBatchedInserts: Boolean类型。批量导入时,该参数设置为on,可将N条插入语句合并为一条: insert into TABLE_NAME values(values1, …, valuesN), …, (values1, …, valuesN);使用该参数时,需设置batchMode=off。
- unknownLength: Integer类型,默认为Integer.MAX_VALUE。某些postgresql类型(例如TEXT)没有明确定义的长度,当通过ResultSetMetaData.getColumnDisplaySize和ResultSetMetaData.getPrecision等函数返回关于这些类型的数据时,此参数指定未知长度类型的长度。
- defaultRowFetchSize: Integer类型。确定一次fetch在ResultSet中读取的行数。限制每次访问数据库时读取的行数可以避免不必要的内存消耗,从而避免OutOfMemoryException。缺省值是0,这意味着ResultSet中将一次获取所有行。没有负数。
- binaryTransfer: Boolean类型。使用二进制格式发送和接收数据,默认值为"false"。
- binaryTransferEnable: String类型。启用二进制传输的类型列表,以逗号分隔。OID编号和名称二选一,例如binaryTransferEnable=Integer4_ARRAY,Integer8_ARRAY。比如:OID名称为BLOB,编号为88,可以如下配置:
binaryTransferEnable=BLOB 或 binaryTransferEnable=88
- binaryTransferDisEnable: String类型。禁用二进制传输的类型列表,以逗号分隔。OID编号和名称二选一。覆盖binaryTransferEnable的设置。
- blobMode: String类型。用于设置setBinaryStream方法为不同类型的数据赋值,设置为on时表示为blob类型数据赋值,设置为off时表示为bytea类型数据赋值,默认为on。
- socketFactory: String类型。用于创建与服务器socket连接的类的名称。该类必须实现了接口"javax.net.SocketFactory",并定义无参或单String参数的构造函数。
- socketFactoryArg: String类型。此值是上面提供的socketFactory类的构造函数的可选参数,不推荐使用。
- receiveBufferSize: Integer类型。该值用于设置连接流上的SO_RCVBUF。
- sendBufferSize: Integer类型。该值用于设置连接流上的SO_SNDBUF。
- preferQueryMode: String类型。共有4种:“extended”、“extendedForPrepared”、“extendedCacheEverything”和“simple”。用于指定执行查询的模式,simple模式会excute,不parse和bind;extended模式会bind和excute;extendedForPrepared模式为prepared statement扩展使用;extendedCacheEverything模式会缓存每个statement。
- targetServerType: String类型。该参数识别主备数据节点是通过查询URL连接串中,数据节点是否允许写操作来实现的,默认为“any”。共有四种:“any”、“master”、“slave”、“preferSlave”:
1. master则尝试连接到URL连接串中的主节点,如果找不到就抛出异常。
2. slave则尝试连接到URL连接串中的备节点,如果找不到就抛出异常。
3. preferSlave则尝试连接到URL连接串中的备数据节点(如果有可用的话),否则连接到主数据节点。
4. any则尝试连接URL连接串中的任何一个数据节点。
- heartbeatPeriod:是否开启对集群主节点进行心跳维护。该功能主要针对连接主备集群并且配置连接主节点的场景,当主节点宕机后,jdbc会在其备机中查找新的主机,使下次建连的时候可以快速定位到新的主机。当且仅当设置了targetServerType=master且连接串的节点数大于1,如果可以建连成功,则开启或者加入对集群主节点的心跳维护,该参数配置小于等于0时,没有心跳间隔按照不开启,或者当前连接节点不加入心跳维护,Integer类型,默认值5000,单位毫秒
- masterFailureHeartbeatTimeout:在开启主节点心跳维护的场景下,当集群主节点宕机,设置对集群探寻主节点的超时阈值,在这个超时时间内还没有探测到主节点的存在,则认为集群一直没有主节点,不在对当前集群进行维护,这个时间应该包含主节点的RTO时间,Integer类型,单位:毫秒,默认值:30000
- priorityServers:Integer类型。此值用于指定url上配置的前n个节点作为主集群被优先连接。默认值为null。该值为数字,大于0,且小于url上配置的DN数量。例如:`jdbc:opengauss://host1:port1,host2:port2,host3:port3,host4:port4,/database?priorityServers=2`。即表示host1与host2为主集群节点,host3与host4为容灾集群节点。
- forceTargetServerSlave:Boolean类型。此值用于控制是否开启强制连接备机功能,并在集群发生主备切换时,禁止已存在的连接在升主备机上继续使用。默认值为false,表示不开启强制连接备机功能。true,表示开启强制连接备机功能。
- loadBalanceHosts:Boolean类型。在默认模式下(禁用),默认顺序连接URL中指定的多个主机。如果启用,则使用洗牌算法从候选主机中随机选择一个主机建立连接。集中式环境下,如果使用此参数需要保证业务中没有写操作。
- autoBalance:jdbc可以通过URL中设置多个数据库节点,实现对主备集群的访问。通过设置负载均衡算法,jdbc可以在建立连接时,依照特定规则将客户端与主备集群的连接依次建立在URL中配置的各个节点上,以此实现连接的负载均衡。默认值为"false",此时jdbc始终与URL中配置的同一个满足建连条件的节点建立连接。连接主备集群时,使用此参数需要保证业务中没有写操作,或者与targetServerType=slave搭配,限制客户端只连接备机。目前,jdbc提供了roundrobin、priority roundrobin、leastconn、shuffle四种负载均衡模式,具体说明如下:
1. roundrobin:轮询模式,即与各候选节点轮流建立连接。取值:"roundrobin"、"true"、"balance"。
2. priority roundrobin:带优先级的轮询模式,优先对前n个候选节点做轮询建连,取值:"proprity[n]",n为非负整数。
3. leastconn:最小连接模式,对候选节点依照各节点的有效连接数做优先级排序,优先与连接数少的节点建立连接,该方法只会统计通过当前驱动在当前集群内使用leastconn模式建立的连接。取值:"leastconn"。
4. shuffle:随机模式,即随机选择候选节点建立连接,取值:"shuffle"。loadBalanceHosts设置为"true"等同于autoBalance设置为"shuffle"。
如果loadBalanceHosts设置为"true"的同时,autoBalance设置为以上四种负载均衡模式,优先使autoBalance生效;如果同时配置了autoBalance和targetServerType,jdbc会在满足targetServerType的前提下负载均衡;如果客户端使用多个指定了相同节点集合的URL分别通过同一驱动建立连接,jdbc会将其视为同一集群上的连接,并整体进行负载均衡。
- enableQuickAutoBalance:是否开启集群状态变化时,jdbc快速负载均衡功能。该功能主要针对使用连接池连接主备集群并配置负载均衡的场景。当功能开启时,jdbc会定时检测URL中配置的节点的状态,当检测到节点恢复时,jdbc会筛选集群内其他节点上的空闲连接并关闭。连接池感知到缓存连接减少后,会基于leastconn模式在新恢复节点上创建连接,使集群重新负载均衡。该功能在筛选可关闭连接时,只会筛选由当前驱动创建的当前集群内的设置了enableQuickAutoBalance="true"的连接。该功能必须与最小连接模式配合使用:设置为"true"且autoBalance设置为"leastconn"时,功能开启。
取值范围:{"true", "false"}。
默认值:"false"。
- maxIdleTimeBeforeTerminal:jdbc触发快速负载均衡时,可保留连接的最大空闲时长。jdbc快速负载均衡功能筛选空闲连接时,会将处于idle状态并且持续时间大于等于maxIdleTimeBeforeTerminal的连接视为空闲连接,这些连接可能会被关闭。该参数只在autoBalance设置为"leastconn"且enableQuickAutoBalance设置为"true"时才生效。
单位:秒。
取值范围:[0, 9223372036854775)内的整数。
默认值:30。
- minReservedConPerCluster:jdbc触发快速负载均衡时,一个集群内空闲连接的最小保留百分比。默认情况下,jdbc触发快速负载均衡时,所有被筛选出来的空闲连接都会被关闭。设置该参数可以在触发快速负载均衡时,jdbc会至少保留一个集群内空闲连接的minReservedConPerCluster%。该参数针对集群生效,如果存在多个配置了相同节点的URL都设置了该参数,则取最小值。
取值范围:[0, 100]内的整数。
默认值:0。
- minReservedConPerDatanode:jdbc触发快速负载均衡时,一个节点内空闲连接的最小保留百分比。设置该参数可以在触发快速负载均衡时,jdbc会至少保留每个节点内空闲连接的minReservedConPerDatanode%。如果URL串同时设置了minReservedConPerDatanode和minReservedConPerCluster,jdbc会保证最终筛选出来的待关闭连接同时满足两个参数。该参数针对集群生效,如果存在多个配置了相同节点的URL都设置了该参数,则取最小值。
取值范围:[0, 100]内的整数。
默认值:0。 | | user | 数据库用户。 | | password | 数据库用户的密码。 | diff --git a/product/zh/docs-mogdb/v5.1/developer-guide/dev/3-development-based-on-odbc/1-development-based-on-odbc.md b/product/zh/docs-mogdb/v5.1/developer-guide/dev/3-development-based-on-odbc/1-development-based-on-odbc.md index c0c9d7f4..1e95a102 100644 --- a/product/zh/docs-mogdb/v5.1/developer-guide/dev/3-development-based-on-odbc/1-development-based-on-odbc.md +++ b/product/zh/docs-mogdb/v5.1/developer-guide/dev/3-development-based-on-odbc/1-development-based-on-odbc.md @@ -32,10 +32,11 @@ MogDB目前在以下环境中提供对ODBC3.5的支持。 | CentOS 7.6 | ARM64位 | | EulerOS 2.0 SP2/SP3 | x86_64位 | | EulerOS 2.0 SP8 | ARM64位 | +| windows 7/8/10 | x86_32位 | UNIX/Linux系统下的驱动程序管理器主要有unixODBC和iODBC,在这选择驱动管理器unixODBC-2.3.0作为连接数据库的组件。 -Windows系统自带ODBC驱动程序管理器,在控制面板->管理工具中可以找到数据源(ODBC)选项。 +Windows系统自带ODBC驱动程序管理器,在控制面板->管理工具中可以找到数据源(ODBC)选项,可以参考[ODBC文档](https://gitee.com/opengauss/openGauss-connector-odbc/blob/master/windows/odbc-测试.md)。 > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** > 当前数据库ODBC驱动基于开源版本,对于tinyint、smalldatetime、nvarchar2类型,在获取数据类型的时候,可能会出现不兼容。 diff --git a/product/zh/docs-mogdb/v5.1/developer-guide/dev/3-development-based-on-odbc/2-odbc-packages-dependent-libraries-and-header-files.md b/product/zh/docs-mogdb/v5.1/developer-guide/dev/3-development-based-on-odbc/2-odbc-packages-dependent-libraries-and-header-files.md index de51cd2a..b1705062 100644 --- a/product/zh/docs-mogdb/v5.1/developer-guide/dev/3-development-based-on-odbc/2-odbc-packages-dependent-libraries-and-header-files.md +++ b/product/zh/docs-mogdb/v5.1/developer-guide/dev/3-development-based-on-odbc/2-odbc-packages-dependent-libraries-and-header-files.md @@ -12,3 +12,7 @@ date: 2021-04-26 ## Linux下的ODBC包 从发布包中获取,包名为[openGauss-x.x.x-ODBC.tar.gz](https://opengauss.org/zh/download/)。Linux环境下,开发应用程序要用到unixODBC提供的头文件(sql.h、sqlext.h等)和库libodbc.so。这些头文件和库可从unixODBC-2.3.0的安装包中获得。 + +## Windows下的ODBC包 + +从发布包中获取,包名为openGauss-x.x.x-ODBC-windows.tar.gz。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v5.1/developer-guide/developer-guide.md b/product/zh/docs-mogdb/v5.1/developer-guide/developer-guide.md index f07fed64..69b44b4b 100644 --- a/product/zh/docs-mogdb/v5.1/developer-guide/developer-guide.md +++ b/product/zh/docs-mogdb/v5.1/developer-guide/developer-guide.md @@ -7,6 +7,8 @@ date: 2023-05-22 # 开发者指南 +本文档介绍介绍了MogDB的应用开发指导。 + - **[应用程序开发教程](dev/application-development-tutorial.md)** - **[存储过程](1-1-stored-procedure.md)** - **[用户自定义函数](user-defined-functions.md)** diff --git a/product/zh/docs-mogdb/v5.1/developer-guide/logical-replication/publication-subscription/conflicts.md b/product/zh/docs-mogdb/v5.1/developer-guide/logical-replication/publication-subscription/conflicts.md index f7a711e4..6d6532d2 100644 --- a/product/zh/docs-mogdb/v5.1/developer-guide/logical-replication/publication-subscription/conflicts.md +++ b/product/zh/docs-mogdb/v5.1/developer-guide/logical-replication/publication-subscription/conflicts.md @@ -9,6 +9,17 @@ date: 2022-04-29 逻辑复制的行为类似于正常的DML操作,即便数据在订阅者节点本地被修改,逻辑复制也会根据收到的更改来更新数据。如果流入的数据违背了任何约束,复制将停止。这种情况被称为一个冲突。在复制UPDATE或DELETE操作时,缺失的数据将不会产生冲突并且这类操作将被简单地跳过。 -冲突将会产生错误并且停止复制,它必须由用户手工解决。在订阅者的服务器日志中可以找到有关冲突的详细情况。 +冲突将会产生错误并且停止复制,它可以设置参数,由数据库自动解决,或者用户手工解决。 -通过更改订阅者上的数据(这样它就不会与到来的数据发生冲突)或者跳过与已有数据冲突的事务可以解决这种冲突。通过调用pg_replication_origin_advance()函数可以跳过该事务,函数的参数是对应于该订阅名称的node_name以及一个位置。复制源头的当前位置可以在pg_replication_origin_status系统视图中看到。 \ No newline at end of file +参数subscription_conflict_resolution可以控制订阅端在主键或唯一键冲突时的处理方式,可以选择是直接报错,还是应用远端或保留本地。设置应用远端时,当insert操作发生冲突时,会将冲突数据更新为同步过来的新元组;当update操作发生冲突时,会先将冲突数据删除,再执行更新操作。设置保留本地时,冲突发生时直接忽略。 + +> ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-warning.gif) **注意:** 设置应用远端时,当同步过来的新元组存在多行因为不同索引发生冲突时,尝试应用该元组时仍会报错。 + +此外,在订阅者的服务器日志中可以找到有关冲突的详细情况,如下。 + +```sql +ERROR: CONFLICT: remote insert on relation t1 (local index t1_idx). Resolution: apply_remote. +DETAIL: local tuple: a[integer]:2 b[integer]:10, remote tuple: a[integer]:3 b[integer]:10, origin: pg_57351, commit_lsn: 0/143A06A0 +``` + +通过更改订阅者上的数据(这样它就不会与到来的数据发生冲突)或者跳过与已有数据冲突的事务可以解决这种冲突。冲突事务的复制源名称和LSN可以从服务器日志中找到(在上面的例子中,复制源名称是pg_57351,LSN是0/143A06A0)。使用ALTER SUBSCRIPTION SET (SKIPLSN = '0/143A06A0')可以跳过产生冲突的事务。也可以通过调用pg_replication_origin_advance()函数跳过该事务,函数的参数是对应于该订阅名称的node_name(即pg_57351)以及commit_lsn的下一个LSN(即0/143A06A1)。复制源头的当前位置可以在pg_replication_origin_status系统视图中看到。请注意,跳过整个事务包括跳过可能不违反任何约束的更改,使得发布端和订阅端数据不一致。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v5.1/faqs/product-faqs.md b/product/zh/docs-mogdb/v5.1/faqs/product-faqs.md index 82523e45..60054995 100644 --- a/product/zh/docs-mogdb/v5.1/faqs/product-faqs.md +++ b/product/zh/docs-mogdb/v5.1/faqs/product-faqs.md @@ -151,3 +151,10 @@ gs_probackup支持并行备份。可以远程执行,可以通过archive文件 **Q21:在物理备份的时候,设置xlog-method=stream或者fetch有什么不同?** 设置xlog传输方式。没有设置该参数的情况下,默认–xlog-method=stream。在备份中包括所需的预写式日志文件(WAL文件)。这包括所有在备份期间产生的预写式日志。fetch方式在备份末尾收集预写式日志文件。因此,有必要把wal_keep_segments参数设置得足够高,这样在备份末尾之前日志不会被移除。如果在要传输日志时它已经被轮转,备份将失败并且是不可用的。stream方式在备份被创建时流传送预写式日志。这将开启一个到服务器的第二连接并且在运行备份时并行开始流传输预写式日志。因此,它将使用最多两个由max_wal_senders参数配置的连接。只要客户端能保持接收预写式日志,使用这种模式不需要在主控机上保存额外的预写式日志。 + +**Q22:“极致RTO按需回放”和“极致RTO”的关系是什么?** + +- 使用场景不同。极致RTO支持资源池化和非资源池化部署下使用,极致RTO按需回放仅支持资源池化部署下使用。在资源池化下,极致RTO和极致RTO按需回放功能相同,都用于主机故障重启或备机failover。 +- 极致RTO按需回放来源于极致RTO。极致RTO按需回放完成回放信息构建后,立即对外提供服务,降低RTO,之后再对外服务时仍在后台进行回放。极致RTO需要完成全部日志回放后,才能够对外提供服务。 +- 极致RTO按需回放继承极致RTO现有约束,并新增[约束](https://docs.opengauss.org/zh/docs/5.1.0/docs/AboutopenGauss/极致RTO按需回放.html)。 +- 由于资源池化下主备机共享一份存储,备机不再需要实时接收主机的XLOG日志并完成回放,因此资源池化下原生支持备机可读,与hot_standby配置无关。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v5.1/performance-tuning/wdr/wdr-snapshot-schema.md b/product/zh/docs-mogdb/v5.1/performance-tuning/wdr/wdr-snapshot-schema.md index fbf8229d..60f1e8ab 100644 --- a/product/zh/docs-mogdb/v5.1/performance-tuning/wdr/wdr-snapshot-schema.md +++ b/product/zh/docs-mogdb/v5.1/performance-tuning/wdr/wdr-snapshot-schema.md @@ -160,7 +160,7 @@ WDR Snasphot启动(即参数[enable_wdr_snapshot](../../reference-guide/guc-pa select * from snapshot.snapshot; ``` -4. (可选)在CCN上执行如下命令手动创建快照。数据库中只有一个快照或者需要查看在当前时间段数据库的监控数据,可以选择手动执行快照操作,该命令需要用户具有sysadmin权限。 +4. (可选)在单机节点或集群主节点上执行如下命令手动创建快照。数据库中只有一个快照或者需要查看在当前时间段数据库的监控数据,可以选择手动执行快照操作,该命令需要用户具有sysadmin权限 ``` select create_wdr_snapshot(); diff --git a/product/zh/docs-mogdb/v5.1/security-guide/security/2-managing-users-and-their-permissions.md b/product/zh/docs-mogdb/v5.1/security-guide/security/2-managing-users-and-their-permissions.md index 84072aa6..ec0392dd 100644 --- a/product/zh/docs-mogdb/v5.1/security-guide/security/2-managing-users-and-their-permissions.md +++ b/product/zh/docs-mogdb/v5.1/security-guide/security/2-managing-users-and-their-permissions.md @@ -22,12 +22,14 @@ MogDB支持以下的权限: SELECT、INSERT、UPDATE、DELETE、TRUNCATE、REFER - UPDATE:允许对声明的表中任意字段执行UPDATE命令。通常,UPDATE命令也需要SELECT权限来查询出哪些行需要更新。SELECT… FOR UPDATE和SELECT… FOR SHARE除了需要SELECT权限外,还需要UPDATE权限。 - DELETE:允许执行DELETE命令删除指定表中的数据。通常,DELETE命令也需要SELECT权限来查询出哪些行需要删除。 - TRUNCATE:允许执行TRUNCATE语句删除指定表中的所有记录。 -- REFERENCES:创建一个外键约束,必须拥有参考表和被参考表的REFERENCES权限。 +- REFERENCES:允许创建一个外键约束,必须拥有参考表和被参考表的REFERENCES权限。 +- TRIGGER:允许创建触发器。 - CREATE: - 对于数据库,允许在数据库里创建新的模式。 - 对于模式,允许在模式中创建新的对象。如果要重命名一个对象,用户除了必须是该对象的所有者外,还必须拥有该对象所在模式的CREATE权限。 - 对于表空间,允许在表空间中创建表,允许在创建数据库和模式的时候把该表空间指定为缺省表空间。 - CONNECT:允许用户连接到指定的数据库。 +- TEMPORARY:允许在指定的数据库中创建临时表。 - EXECUTE:允许使用指定的函数,以及利用这些函数实现的操作符。 - USAGE: - 对于过程语言,允许用户在创建函数的时候指定过程语言。 @@ -51,6 +53,46 @@ MogDB支持以下的权限: SELECT、INSERT、UPDATE、DELETE、TRUNCATE、REFER 不建议用户修改系统表和系统视图的权限。 +表1 ACL权限缩写 + +| 权限 | 缩写 | 对象类型 | +| :--------- | :--- | :----------------------------------------------------------- | +| SELECT | r | TABLE, table column, SEQUENCE | +| INSERT | a | TABLE, table column | +| UPDATE | w | TABLE, table column, SEQUENCE | +| DELETE | d | TABLE | +| TRUNCATE | D | TABLE | +| REFERENCES | x | TABLE, table column | +| TRIGGER | t | TABLE | +| CREATE | C | DATABASE, SHEMA, TABLESPACE | +| CONNECT | c | DATABASE | +| TEMPORARY | T | DATABASE | +| EXECUTE | X | FUNCTION, PROCEDURE, PACKAGE | +| USAGE | U | SEQUENCE, DOMAIN, CLIENT_MASTER_KEY, COLUMN_ENCRYPTION_KEY, FOREIGN DATA WRAPPER, FOREIGN SERVER, LANGUAGE, SCHEMA, DATA SOURCE | +| ALTER | A | TABLE, SEQUENCE, DATABASE, FOREIGN SERVER, FUNCTION, PROCEDURE, SCHEMA, TABLESPACE, DIRECTORY, PACKAGE | +| DROP | P | TABLE, SEQUENCE, DATABASE, CLIENT_MASTER_KEY, COLUMN_ENCRYPTION_KEY, FOREIGN SERVER, FUNCTION, PROCEDURE, SCHEMA, TABLESPACE, TYPE, DIRECTORY, PACKAGE | +| COMMENT | m | TABLE, table column, SEQUENCE, DATABASE, FOREIGN SERVER, FUNCTION, PROCEDURE, SCHEMA, TABLESPACE, PACKAGE | +| INDEX | i | TABLE | +| VACUUM | v | TABLE | + +表2 类型访问权限 + +| 对象类型 | 所有权限 | 默认PUBLIC权限 | gsql命令 | +| :-------------------- | :----------- | :------------- | :------- | +| TABLE | arwdDxtAPmiv | none | \dp | +| table column | arwxm | none | \dp | +| SEQUENCE | rwUAPm | none | \dp | +| DATABASE | CTcAPm | Tc | \l | +| CLIENT_MASTER_KEY | UP | none | | +| COLUMN_ENCRYPTION_KEY | UP | none | | +| FOREIGN DATA WRAPPER | U | none | \dew+ | +| FOREIGN SERVER | UAPm | none | \des+ | +| FUNCTION | XAPm | X | \df+ | +| PROCEDURE | XAPm | X | \df+ | +| LANGUAGE | U | U | \dL+ | +| SCHEMA | UCAPm | none | \dn+ | +| TABLESPACE | CAPm | none | \dp | +
## 管理员 diff --git a/product/zh/docs-mogdb/v5.1/source-code-parsing.md b/product/zh/docs-mogdb/v5.1/source-code-parsing.md index 35b0edb8..91d8af8d 100644 --- a/product/zh/docs-mogdb/v5.1/source-code-parsing.md +++ b/product/zh/docs-mogdb/v5.1/source-code-parsing.md @@ -51,6 +51,8 @@ date: 2022-02-07 [事务机制源码解析(三)](https://www.modb.pro/db/81991) +[事务机制源码解析(四)](https://www.modb.pro/db/1684084734212251648) + ## SQL引擎源码解析 [SQL引擎源码解析(一)](https://www.modb.pro/db/397777) @@ -91,6 +93,10 @@ date: 2022-02-07 [安全管理源码解析(四)](https://www.modb.pro/db/397425) +[安全管理源码解析(五)](https://www.modb.pro/db/1688838920090509312) + +[安全管理源码解析(六)](https://www.modb.pro/db/1688837212833128448) + ## 密态等值查询技术 [密态等值查询技术详解(上)](https://www.modb.pro/db/423515) -- Gitee From d7bf9dca85f00cd7464a0d88e5c8e1b4d223957f Mon Sep 17 00:00:00 2001 From: zcp100_zcp100 Date: Fri, 20 Oct 2023 15:25:45 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A0=87=E7=82=B9?= =?UTF-8?q?=E7=AC=A6=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...esource-pooling-current-architectural-feature-constraints.md | 2 +- product/zh/docs-mogdb/v5.1/administrator-guide/upgrade-guide.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/product/zh/docs-mogdb/v5.1/administrator-guide/database-deployment-scenario/resource-pooling-architecture/resource-pooling-current-architectural-feature-constraints.md b/product/zh/docs-mogdb/v5.1/administrator-guide/database-deployment-scenario/resource-pooling-architecture/resource-pooling-current-architectural-feature-constraints.md index 05358829..3f131479 100644 --- a/product/zh/docs-mogdb/v5.1/administrator-guide/database-deployment-scenario/resource-pooling-architecture/resource-pooling-current-architectural-feature-constraints.md +++ b/product/zh/docs-mogdb/v5.1/administrator-guide/database-deployment-scenario/resource-pooling-architecture/resource-pooling-current-architectural-feature-constraints.md @@ -9,7 +9,7 @@ date: 2023-04-07 ## 内容简介 -MogDB资源池化是MogDB推出的一种新型的集群架构.通过DMS和DSS组件,实现集群中多个节点的底层存储数据共享和节点间的内存实时共享,达到节省底层存储资源以及集群内部支持一写多读且可以实时一致性读的目的。 本文主要介绍资源池化当前的架构下对数据库的一些特性约束。 +MogDB资源池化是MogDB推出的一种新型的集群架构。通过DMS和DSS组件,实现集群中多个节点的底层存储数据共享和节点间的内存实时共享,达到节省底层存储资源以及集群内部支持一写多读且可以实时一致性读的目的。 本文主要介绍资源池化当前的架构下对数据库的一些特性约束。 ## 当前的一些约束说明 diff --git a/product/zh/docs-mogdb/v5.1/administrator-guide/upgrade-guide.md b/product/zh/docs-mogdb/v5.1/administrator-guide/upgrade-guide.md index 901e18e2..12d9c963 100644 --- a/product/zh/docs-mogdb/v5.1/administrator-guide/upgrade-guide.md +++ b/product/zh/docs-mogdb/v5.1/administrator-guide/upgrade-guide.md @@ -246,7 +246,7 @@ root用户密码 ```sql mkdir static cd static/ - wget https://cdn-mogdb.enmotech.com/mogdb-media/5.1.0/Plugins-x.x.x-CentOS-x86_64.tar.gz + wget https://cdn-mogdb.enmotech.com/mogdb-media/5.1.0/Plugins-5.1.0-CentOS-x86_64.tar.gz ``` 6. 在就地升级或灰度升级前执行前置脚本gs_preinstall。 -- Gitee