# 安装并配置 OBD

本文介绍如何安装 OBD，以及安装成功后如何配置 OBD。

## 安装 OBD

### 使用 RPM 包安装

#### 在线安装

若您的机器可以连接网络，在 CentOS 或 RedHat 系统上，您可执行以下命令在线安装 OBD。

```shell
[admin@test001 ~]$ sudo yum install -y yum-utils
[admin@test001 ~]$ sudo yum-config-manager --add-repo https://mirrors.aliyun.com/oceanbase/OceanBase.repo
[admin@test001 ~]$ sudo yum install -y ob-deploy
[admin@test001 ~]$ source /etc/profile.d/obd.sh
```

<main id="notice" type='explain'>
  <h4>说明</h4>
  <p>YUM 命令默认安装最新版本，您可通过声明版本号安装指定版本，如使用 <code>yum install -y ob-deploy-1.6.2</code> 命令安装 OBD V1.6.2，推荐安装最新版本。</p>
</main>

#### 离线安装

若您的机器无法连接网络，您可从 [OceanBase 软件下载中心](https://www.oceanbase.com/softwarecenter) 下载所需版本的 OBD。下载完成后，将 OBD 复制到您的中控机器上。推荐您使用最新版本的安装包。

在 CentOS 或 RedHat 系统上，执行如下命令安装 OBD：

```shell
sudo yum install ob-deploy-*.rpm
```

在 Ubuntu 或 Debian 系统上，执行如下命令安装 OBD：

```shell
sudo alien --scripts -i ob-deploy-*.rpm
```

### 使用 all-in-one 安装包安装 OBD

OceanBase 从 V4.0.0 开始提供统一的安装包 all-in-one package。您可以通过这个统一的安装包一次性完成 OBD、OceanBase 数据库、ODP、OBAgent、Grafana、Prometheus 和 OCP Express（自 V4.1.0 起支持）的安装。

#### 在线安装

若您的机器可以连接网络，可执行如下命令在线安装。

```shell
[admin@test001 ~]$ bash -c "$(curl -s https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/download-center/opensource/oceanbase-all-in-one/installer.sh)"
[admin@test001 ~]$ source ~/.oceanbase-all-in-one/bin/env.sh
```

#### 离线安装

若您的机器无法连接网络，可参考如下步骤离线安装。

1. 从 [OceanBase 软件下载中心](https://www.oceanbase.com/softwarecenter) 下载最新的 all-in-one 安装包，并将其复制到中控机中。推荐使用最新版本的安装包

2. 在安装包所在目录下执行如下命令解压安装包并安装。

   ```shell
   [admin@test001 ~]$ tar -xzf oceanbase-all-in-one-*.tar.gz
   [admin@test001 ~]$ cd oceanbase-all-in-one/bin/
   [admin@test001 bin]$ ./install.sh
   [admin@test001 bin]$ source ~/.oceanbase-all-in-one/bin/env.sh
   ```

### 使用源码安装

在使用源码安装 OBD 之前，请您确认已安装以下依赖：

* gcc

* wget

* python-devel

* openssl-devel

* xz-devel

* mysql-devel

源码编译安装 OBD 需要使用到 Python 2.7 环境和 Python 3.8 环境。安装步骤如下：

1. 在 Python 2.7 环境下执行以下命令。

   ```shell
   sh rpm/build.sh executer
   ```

   <main id="notice" type='explain'>
     <h4>说明</h4>
     <p>上述命令是为了编译 OceanBase 数据库升级所需的解释器，如果不使用升级功能可以跳过该命令。</p>
   </main>

2. 在 Python3.8 环境下执行以下命令。

   ```shell
   sh rpm/build.sh build_obd
   source /etc/profile.d/obd.sh
   ```

<main id="notice" type='explain'>
  <h4>说明</h4>
  <p>OBD 自 V2.0.0 开始不支持在 Python2 环境下使用源码安装。</p>
</main>

## 配置 OBD

### 在线配置

OBD 自带仓库信息，当机器可以连接网络时，无须配置，执行 `obd mirror list` 命令即可查看 OBD 仓库中的软件。

```shell
# 查看 OBD 仓库信息
[admin@test001 ~]$ obd mirror list
+-----------------------------------------------------------------------------+
|                            Mirror Repository List                           |
+----------------------------+--------+---------+----------+------------------+
| SectionName                | Type   | Enabled | Avaiable | Update Time      |
+----------------------------+--------+---------+----------+------------------+
| oceanbase.community.stable | remote | True    | True     | 2023-03-20 11:21 |
| oceanbase.development-kit  | remote | True    | True     | 2023-03-20 11:21 |
| local                      | local  | -       | True     | 2023-03-20 11:23 |
+----------------------------+--------+---------+----------+------------------+
Use `obd mirror list <section name>` for more details
Trace ID: 8a4da3a0-c6ce-11ed-91cc-00163e030166
If you want to view detailed obd logs, please run: obd display-trace 8a4da3a0-c6ce-11ed-91cc-00163e030166
# 查看对应仓库中的软件信息
[admin@test001 ~]$ obd mirror list oceanbase.community.stable
Update OceanBase-community-stable-el7 ok
Update OceanBase-development-kit-el7 ok
+--------------------------------------------------------------------------------------------------------------------------------------------------+
|                                                     oceanbase.community.stable Package List                                                      |
+-----------------------------------+---------+------------------------+--------+------------------------------------------------------------------+
| name                              | version | release                | arch   | md5                                                              |
+-----------------------------------+---------+------------------------+--------+------------------------------------------------------------------+
| grafana                           | 7.5.17  | 1                      | x86_64 | f0c86571a2987ee6338a42b79bc1a38aebe2b07500d0120ee003aa7dd30973a5 |
| libobclient                       | 2.0.0   | 1.el7                  | x86_64 | 7bbb2aeb9c628ee35c79d6dc2c1668ebbf97a3323f902e8fd33ff1a5ea95220f |
| libobclient                       | 2.0.0   | 2.el7                  | x86_64 | 6c1587b80df64b68343479aecddb0ca912d5ccd3d085cb41c7a37a1e38effc34 |
| libobclient                       | 2.0.1   | 3.el7                  | x86_64 | 4f92926496dec89936422f41f2f2206eb61c5e62e7b0dde1006c6e02eaebec6e |
| libobclient                       | 2.0.2   | 2.el7                  | x86_64 | eed33520e6911140dad65197cff53652310609ab79d7960ec4d2d6d4b2318ba7 |
# 省略后续输出
```

### 离线配置

当您的机器无法连接网络时，您需提前下载好所需软件的安装包，并将其添加到 OBD 的本地仓库。

下载地址：

* [Redhat/CentOS 7.x](https://mirrors.aliyun.com/oceanbase/community/stable/el/7/x86_64)

* [Redhat/CentOS 8.x](https://mirrors.aliyun.com/oceanbase/community/stable/el/8/x86_64)

<main id="notice" type='explain'>
  <h4>说明</h4>
  <p>请根据实际需求下载软件包，建议使用最新版本的软件。</p>
</main>

#### 将安装包添加到本地仓库

在部署运行 OBD 的操作系统用户下按照如下步骤操作，示例中使用的是用户 admin。

1. 执行如下命令禁用远程仓库

   ```shell
   obd  mirror disable remote
   ```

   禁用后可通过 `obd mirror list` 命令进行确认，查看 Type=remote 对应的 `Enabled` 变成了 `False`，说明已关闭远程镜像源

2. 在安装包所在目录执行如下命令将下载好的安装包上传到本地仓库

   ```shell
   obd mirror clone *.rpm
   ```

3. 查看本地仓库的安装包列表

   ```shell
   obd mirror list local
   ```

   在输出的列表中查看到部署所需安装包即表示上传成功。
