# 工具命令组

OBD 提供了一系列工具命令，其中封装了一些常用命令，可用于提升开发者的使用体验。

您可以在每个命令中使用 `-h/--help` 选项查看子命令的帮助信息。同样的，当命令执行报错时，您亦可使用 `-v/--verbose` 查看命令的详细执行过程。

## obd devmode enable

使用该命令可以开启开发者模式，是使用工具命令组的前提。开启开发者模式后，会出现部分异常报错被降级，OBD 忽略异常参数等情况。非内核开发人员请谨慎使用。

```shell
obd devmode enable
```

## obd devmode disable

使用该命令可关闭开发者模式。

```shell
obd devmode disable
```

## obd env show

使用该命令可展示 OBD 的环境变量。

```shell
obd env show
```

## obd env set

使用该命令可设置 OBD 的环境变量，这些环境变量会一定程度的影响 OBD 的表现，若没有特别需求不建议使用该命令。

```shell
obd env set [key] [value]
```

可设置的参数有：

* OBD_DISABLE_RSYNC：参数值可设置为 0 或 1，在符合条件的情况下 OBD 会使用 rsync 进行远程传输，当该环境变量为 1 时，禁止使用 rsync 命令。

* OBD_DEV_MODE：：开发者模式是否开启，可选值为 0 或 1。

## obd env unset

使用该命令可删除指定环境变量。

```shell
obd env unset [key] [value]
```

## obd env clear

使用该命令可清理 OBD 的环境变量，请谨慎使用。

```shell
obd env clear
```

## obd tool command

使用该命令可执行一些常用的命令。

```shell
obd tool command <deploy name> <command> [options]
```

命令包含：

* pid：查看服务的 pid（非交互式命令）

* ssh：登录到目标 server 并进入 log 目录（交互式命令）

* less：查看目标服务的日志（交互式命令）

* gdb：gdb attach 到模板服务（交互式命令）

参数说明见下表

| 选项名             | 是否必选 | 数据类型   | 默认值                                                   | 说明                        |
|-----------------|------|--------|-------------------------------------------------------|---------------------------|
| -c/--components | 否    | string | 如果是交互式命令默认按照配置文件顺序选择第一个组件，如果是非交互式命令，则默认使用所有组件         | 需要执行命令的组件名。多个组件名以 `,` 相隔。 |
| -s/--servers    | 否    | string | 如果是交互式命令默认按照配置文件顺序选择当前组件的第一个节点名，如果是非交互式命令，则默认使用所有可用节点 | 指定的组件下的节点名。多个节点名以 `,` 相隔。 |

## obd tool db_connect

使用该命令可建立数据库连接。

```shell
obd tool db_connect <deploy name> [options]
```

参数 `deploy name` 为部署集群名，可以理解为配置文件的别名。

参数说明见下表

| 选项名                 | 是否必选 | 数据类型   | 默认值                       | 说明                                                                |
|---------------------|------|--------|---------------------------|-------------------------------------------------------------------|
| -c/--component      | 否    | string | 默认按照配置文件顺序选择第一个组件         | 待连接的组件名。候选项为 `obproxy`、`obproxy-ce`、`oceanbase` 和 `oceanbase-ce`。 |
| -s/--server         | 否    | string | 默认按照配置文件顺序选择当前组件的第一个节点名   | 指定的组件下的节点名。                                                       |
| -u/--user           | 否    | string | root                      | 数据库连接使用的用户名。                                                       |
| -p/--password       | 否    | string | 默认为空                      | 数据库连接使用的密码。                                                       |
| -t/--tenant         | 否    | string | sys                       | 数据库连接使用的租户。                                                        |
| -D/--database       | 否    | string | 默认为空                      | 数据库连接使用的数据库名称。                                                     |
| --obclient-bin      | 否    | string | obclient                  | OBClient 二进制文件路径。                                                 |

## obd display-trace

使用该命令可展示任务 ID 对应日志详情，帮助用户快速查找日志。

```bash
obd display-trace <trace_id>

# example
obd display-trace 080b8ffc-9f7c-11ed-bec1-00163e030e58
```

参数 `trace_id` 为任务 ID，您执行其他 OBD 命令后会输出对应任务 ID，并输出命令提示如何查看。例如：

```bash
[admin@centos7 ~]$ obd cluster list
Local deploy is empty
Trace ID: a3cf9020-be42-11ed-b5b0-00163e030e58
If you want to view detailed obd logs, please run: obd display-trace a3cf9020-be42-11ed-b5b0-00163e030e58
```
