---
title: "转储操作 | OceanBase 文档中心"
description: "转储操作 本节主要介绍转储操作及相关参数。 转储操作命令 转储操作命令的语法如下所示： ALTER SYSTEM MINOR FREEZE [zone] | [server_list] | [tenant_list] | [replica] 各参数的取值格式如下表所示。 参数 格式 zone Zone_name se…"
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 2.2.50 企业版

# 转储操作

更新时间：2023-07-18 17:24:36

本节主要介绍转储操作及相关参数。

## 转储操作命令

转储操作命令的语法如下所示：

```sql
ALTER SYSTEM MINOR FREEZE [zone] | [server_list] | [tenant_list] | [replica]

```

各参数的取值格式如下表所示。

| 参数 | 格式 |
| --- | --- |
| zone | Zone_name |
| server_list | SERVER = ip_port_list |
| tenant_list | TENANT = tenant_name [, tenant_name ...] |
| replica | PARTITION_ID = 'partition_idx%partition_count@table_id' |

**示例 1** ：

集群级别转储：

```sql
obclient> ALTER SYSTEM MINOR FREEZE;

```

**示例 2** ：

Server 级别转储：

```sql
obclient> ALTER SYSTEM MINOR FREEZE server = ('10.10.10.1:2882');

```

**示例 3** ：

租户级别转储：

```sql
obclient> ALTER SYSTEM MINOR FREEZE tenant = ('prod_tenant');

```

**示例 4** ：

Replica 级别转储：

```sql
obclient> ALTER SYSTEM MINOR FREEZE ALTER partition_id = '8%0@1099511627933';

```

## 转储控制参数

最常用的控制参数是 `minor_freeze_times` ，该参数控制在转储多少次后自动转化为合并。如果该参数设置为 0，表示关闭转储功能，每次租户 MemTable 内存使用达到阀值不会触发转储而是直接进行合并。通常根据具体的业务需求来进行配置。

| 配置项 | 含义 | 默认值 | 设定范围 |
| --- | --- | --- | --- |
| minor_compact_trigger | mini merge sstable 个数阀值，达到触发 minor merge compact | 2 | [0, 16] |
| minor_freeze_times | 转储多少次后触发合并 | 0 | [0, 65535] |
| minor_merge_concurrency | 并行转储线程数/并行度 | 0 | [0,64] |
| minor_deferred_gc_time | sstable gc 的时间 | 0s | [0s, 24h] |
| minor_warm_up_duration_time | 转储后的 warm up 时间 | 30s | [0s, 60min] |
| freeze_trigger_percentage | 租户 Memstore 占用内存的比例阀值，达到触发 freeze | 70 | [1, 99] |
| memstore_limit_percentage | 租户 Memstore 占租户总内存的百分比 | 50 | [1, 99] |

**说明**

参数 `minor_freeze_times` 的增长是依赖 MemTable 内存达到设定阈值而触发的转储，而手动运行的转储命令不会进行计数。因此，无论手动转储多少次，都不会记录 `minor_freeze_times`。例如，`minor_freeze_times` 的值为 3 时，手动运行 3 次 `ALTER system minor freeze` 后，当 MemTable 内存使用达到阈值后，并不会触发合并，因为之前的手动转储不做计数。

## 转储查看

转储的动作可以通过系统表进行查看。通过查看转储的时间点，转储的触发和转储的次数可以观察集群内存的使用情况。同时可以调整租户内存的大小，可以配置转储次数进而满足不同的业务需求场景。

下述示例语句展示了通过系统租户如何从 Root Service 角度查看最近 10 次的转储记录。

```sql
obclient> SELECT * FROM __all_rootservice_event_history WHERE event LIKE '%minor%' ORDER BY gmt_create LIMIT 10;

```

下述示例语句展示了通过系统租户如何查看具体的某台 OBServer 的转储情况。

```sql
obclient> SELECT * FROM __all_server_event_history WHERE svr_ip='xx.xx.xx.xx' AND module IN ('freeze', 'minor_merge') ORDER BY gmt_create  DESC LIMIT 10;

```

下述示例语句展示了通过系统租户如何查看转储后租户的 Active MemStore 是否释放，同时查看 `freeze_cnt` 的计数情况。

```sql
obclient> SELECT * FROM __all_virtual_tenant_memstore_info;

```

上述示例的返回结果说明如下表所示。

| 字段 | 说明 |
| --- | --- |
| tenant_id | 租户的 ID |
| svr_ip | 租户所在服务器的 IP |
| svr_port | RPC 端口 |
| active_memstore_used | 租户在某台服务器上的活动 MemStore 的大小 |
| total_memstore_used | 租户在某台服务器上的总 MemStore 的使用大小 |
| major_freeze_trigger | 活动 MemStore 使用量触发转储或合并的阈值 |
| memstore_limit | 租户在某台服务器上的 Memstore 的上限 |
| freeze_cnt | 活动 Memstore 达到阈值触发转储的计数器 |

其他说明：

- `__all_rootservice_event_history`表中保留7天内数据。 `__all_server_event_history`表的记录保留 2 天。
 - 每次合并都需要先进行一次转储，因此在每天的合并 Duty Time 时间点（默认凌晨 2 点）可以看到转储动作。
 - `__all_virtual_tenant_memstore_info`表中 `major_freeze_trigger`参数对应的是转储和合并的阈值。当参数 `minor_freeze_times`值为 0 时， 列 `active_memstore_used`达到这个阈值时触发合并。如果参数 `minor_freeze_times`不为 0，则当列 `active_memstore_used` 达到这个阈值时，触发转储还是合并主要取决于上次合并之后发生的转储次数 。
 - `__all_virtual_tenant_memstore_info`中的 `freeze_cnt` 的统计对应的是参数 `minor_freeze_times`

  。当 `freeze_cnt`计数达到 `minor_freeze_times`这个阈值时，下次租户内存使用率达到阈值将触发合并而不是转储。手动触发的转储不会导致 `freeze_cnt`的计数增加。合并会将`freeze_cnt`计数清零。

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
