Skip to content

feat: add prevent metadata changes docs #1873

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 2 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion docs/contributor-guide/metasrv/admin-api.md
Original file line number Diff line number Diff line change
Expand Up @@ -255,4 +255,8 @@ curl -X GET 'http://localhost:3002/admin/heartbeat?addr=127.0.0.1:4100'

## /maintenance HTTP endpoint

Maintenance mode is a safety feature in GreptimeDB that temporarily disables automatic cluster management operations. This mode is particularly useful during cluster upgrades, planned downtime, and any operation that might temporarily affect cluster stability. For more details, please refer to [Maintenance Mode](/user-guide/deployments-administration/maintenance-mode.md).
Cluster Maintenance Mode is a safety feature in GreptimeDB that temporarily disables automatic cluster management operations. This mode is particularly useful during cluster upgrades, planned downtime, and any operation that might temporarily affect cluster stability. For more details, please refer to [Cluster Maintenance Mode](/user-guide/deployments-administration/maintenance/maintenance-mode.md).

## /procedure-manager HTTP endpoint

This endpoint is used to manage the procedure manager status. For more details, please refer to [Prevent Metadata Changes](/user-guide/deployments-administration/maintenance/prevent-metadata-changes.md).
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
---
keywords: [GreptimeDB, GreptimeDB cluster, maintenance, pause metadata changes, maintenance mode]
description: Guide for managing GreptimeDB pause metadata changes to safely perform operations like metadata backup.
---

# Prevent Metadata Changes

To prevent metadata changes, you can pause the procedure manager. This mechanism rejects all new procedures (i.e., new metadata-changing operations) while allowing existing procedures to continue running.
Once enabled, the Metasrv will reject the following procedures:

**DDL procedures:**
- Create table
- Drop table
- Alter table
- Create database
- Drop database
- Create view
- Create flow
- Drop flow

**Region procedures:**
- Region Migration
- Region Failover (if enabled)
- Auto Balancing (if enabled)

You may see error messages if you or Metasrv try to perform these procedures after metadata changes are paused. For region procedures, you can enable [Cluster Maintenance Mode](/user-guide/deployments-administration/maintenance/maintenance-mode.md) to temporarily disable them.

## Managing procedure manager
The procedure manager can be paused and resumed through Metasrv's HTTP interface at: `http://{METASRV}:{RPC_PORT}/admin/procedure-manager/pause` and `http://{METASRV}:{RPC_PORT}/admin/procedure-manager/resume`. Note that this interface listens on Metasrv's `RPC_PORT`, which defaults to `3002`.

### Pause Procedure Manager

Pause procedure manager by sending a POST request to the `/admin/procedure-manager/pause` endpoint.

```bash
curl -X POST 'http://localhost:3002/admin/procedure-manager/pause'
```

The expected output is:
```bash
{"status":"paused"}
```

### Resume Procedure Manager

Resume procedure manager by sending a POST request to the `/admin/procedure-manager/resume` endpoint.

```bash
curl -X POST 'http://localhost:3002/admin/procedure-manager/resume'
```

The expected output is:
```bash
{"status":"running"}
```

### Check Procedure Manager Status

Check procedure manager status by sending a GET request to the `/admin/procedure-manager/status` endpoint.

```bash
curl -X GET 'http://localhost:3002/admin/procedure-manager/status'
```

The expected output is:
```bash
{"status":"running"}
```


Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ This feature is only available on GreptimeDB running on distributed mode and
If you want to enable region failover on local WAL, you need to set `allow_region_failover_on_local_wal=true` in [metasrv](/user-guide/deployments-administration/configuration.md#metasrv-only-configuration) configuration file. It's not recommended to enable this option, because it may lead to data loss.

### Via configuration file
Set `enable_region_failover=true` in the [metasrv](/user-guide/deployments-administration/configuration.md#metasrv-only-configuration) configuration file. Additionally, set `region_failure_detector_initialization_delay` to a larger value and enable [Cluster Maintenance Mode](/user-guide/deployments-administration/maintenance-mode.md) within the `region_failure_detector_initialization_delay` period to avoid triggering unnecessary Region Failover during datanode startup or upgrades.
Set `enable_region_failover=true` in the [metasrv](/user-guide/deployments-administration/configuration.md#metasrv-only-configuration) configuration file. Additionally, set `region_failure_detector_initialization_delay` to a larger value and enable [Cluster Maintenance Mode](/user-guide/deployments-administration/maintenance/maintenance-mode.md) within the `region_failure_detector_initialization_delay` period to avoid triggering unnecessary Region Failover during datanode startup or upgrades.

### Via GreptimeDB Operator

Expand Down
4 changes: 4 additions & 0 deletions i18n/zh/docusaurus-plugin-content-docs/current.json
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,10 @@
"message": "监控",
"description": "The label for category Monitoring in sidebar docs"
},
"sidebar.docs.category.Maintenance": {
"message": "维护",
"description": "The label for category Maintenance in sidebar docs"
},
"sidebar.docs.category.Vector Storage": {
"message": "向量存储",
"description": "The label for category Vector Storage in sidebar docs"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -251,4 +251,8 @@ curl -X GET 'http://localhost:3002/admin/heartbeat?addr=127.0.0.1:4100'

## /maintenance HTTP 端点

维护模式是 GreptimeDB 中的一项安全功能,它可以临时禁用自动集群管理操作。此模式在集群升级、计划停机以及任何可能暂时影响集群稳定性的操作期间特别有用。有关更多详细信息,请参阅[维护模式](/user-guide/deployments-administration/maintenance-mode.md)。
集群维护模式是 GreptimeDB 中的一项安全功能,它可以临时禁用自动集群管理操作。此模式在集群升级、计划停机以及任何可能暂时影响集群稳定性的操作期间特别有用。有关更多详细信息,请参阅[集群维护模式](/user-guide/deployments-administration/maintenance/maintenance-mode.md)。

## /procedure-manager HTTP 端点

该端点用于管理 procedure manager 状态。有关更多详细信息,请参阅[防止元数据变更](/user-guide/deployments-administration/maintenance/prevent-metadata-changes.md)。
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
---
keywords: [GreptimeDB, GreptimeDB 集群, 维护, 暂停元数据变更]
description: 管理 GreptimeDB 暂停元数据变更的指南,用于安全执行元数据备份等操作。
---

# 防止元数据变更

要防止元数据变更,你可以暂停 procedure manager。此机制拒绝所有新 procedure(即新的元数据变更操作),同时允许现有 procedure 继续运行。
一旦启用,Metasrv 将拒绝以下 procedure 操作:

**DDL 操作:**
- 创建表
- 删除表
- 修改表
- 创建数据库
- 删除数据库
- 创建视图
- 创建流
- 删除流

**Region 调度操作:**
- Region Migration
- Region Failover (if enabled)
- Region 自动负载均衡 (if enabled)

你在启用暂停元数据变更功能后尝试执行这些操作时,可能会看到错误消息。对于 Region 调度操作,你可以启用 [集群维护模式](/user-guide/deployments-administration/maintenance/maintenance-mode.md) 来临时暂时它们。

## 管理 procedure manager
procedure manager 可以通过 Metasrv 的 HTTP 接口暂停和恢复:`http://{METASRV}:{RPC_PORT}/admin/procedure-manager/pause` 和 `http://{METASRV}:{RPC_PORT}/admin/procedure-manager/resume`。请注意,此接口监听 Metasrv 的 `RPC_PORT`,默认为 `3002`。

### 暂停 procedure manager

通过向 `/admin/procedure-manager/pause` 端点发送 POST 请求来暂停 procedure manager。

```bash
curl -X POST 'http://localhost:3002/admin/procedure-manager/pause'
```

预期输出:
```bash
{"status":"paused"}
```

### 恢复 procedure manager

通过向 `/admin/procedure-manager/resume` 端点发送 POST 请求来恢复 procedure manager。

```bash
curl -X POST 'http://localhost:3002/admin/procedure-manager/resume'
```

预期输出:
```bash
{"status":"running"}
```

### 检查 procedure manager 状态

通过向 `/admin/procedure-manager/status` 端点发送 GET 请求来检查 procedure manager 状态。

```bash
curl -X GET 'http://localhost:3002/admin/procedure-manager/status'
```

预期输出:
```bash
{"status":"running"}
```


Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ Region Failover 提供了在不丢失数据的情况下从 Region 故障中恢
### 通过配置文件

在 [metasrv](/user-guide/deployments-administration/configuration.md#metasrv-only-configuration) 配置文件中设置 `enable_region_failover=true`.
另外,你还需要将 `region_failure_detector_initialization_delay` 设置为较大的值,并在 `region_failure_detector_initialization_delay` 期间内,启动[集群维护模式](/user-guide/deployments-administration/maintenance-mode.md),以避免在 Datanode 启动或升级期间触发不必要的 Region Failover。
另外,你还需要将 `region_failure_detector_initialization_delay` 设置为较大的值,并在 `region_failure_detector_initialization_delay` 期间内,启动[集群维护模式](/user-guide/deployments-administration/maintenance/maintenance-mode.md),以避免在 Datanode 启动或升级期间触发不必要的 Region Failover。

### 通过 GreptimeDB Operator

Expand Down
9 changes: 8 additions & 1 deletion sidebars.ts
Original file line number Diff line number Diff line change
Expand Up @@ -377,7 +377,14 @@ const sidebars: SidebarsConfig = {
'user-guide/deployments-administration/disaster-recovery/dr-solution-based-on-cross-region-deployment-in-single-cluster',
],
},
'user-guide/deployments-administration/maintenance-mode',
{
type: 'category',
label: 'Maintenance',
items: [
'user-guide/deployments-administration/maintenance/maintenance-mode',
'user-guide/deployments-administration/maintenance/prevent-metadata-changes',
]
},
'user-guide/deployments-administration/run-on-android',
'user-guide/deployments-administration/upgrade',
],
Expand Down