生产环境部署 OceanBase 数据库 
=========================================



名词解释 
-------------------------

* 中控机器

  存储 OceanBase 数据库安装包和集群配置信息的机器。
  

* 目标机器

  安装 OceanBase 数据库的机器。
  

* OBD

  OceanBase Deployer，OceanBase 开源软件的安装部署工具，简称为 OBD。
  

* ODP

  OceanBase Database Proxy，OceanBase 高性能反向代理服务器，简称为 ODP。
  




前提条件 
-------------------------

在连接 OceanBase 数据库之前，请您确认以下信息：

* 您的机器满足软硬件要求。详细信息，参考 [资源准备](../4.installation-and-deployment/3.resource-preparation.md)。

  

* 您拥有 root 账户权限。如无特殊说明，均使用 root 操作。

  

* 生产环境下，确保您已完成以下操作：

  * 您已经查看资源。更多信息，参考 [查看资源](../4.installation-and-deployment/4.optional-check-the-operating-system.md)。

    
  
  * 您已经设置无密码 SSH 登录。更多信息，参考 [设置无密码 SSH 登录](../4.installation-and-deployment/5.optional-set-password-free-ssh-logon.md)。

    
  
  * 您已经配置时钟源。更多信息，参考 [配置时钟源](../4.installation-and-deployment/6.optional-configuring-clock-sources.md)。

    
  
  * 您已经规划磁盘。更多信息，参考 [规划磁盘](../4.installation-and-deployment/7.disk-planning.md)。

    
  
  * 您已经配置 limits.conf。更多信息，参考 [配置 limits.conf](../4.installation-and-deployment/8.optional-configure-limits-conf.md)。

    
  
  * 您已经配置 sysctl.conf。更多信息，参考 [配置 sysctl.conf](../4.installation-and-deployment/9.optional-configure-sysctl-conf.md)。

    
  
  * 您已经关闭防火墙和 SELinux。更多信息，参考 [关闭防火墙和 SELinux](../4.installation-and-deployment/10.optional-disable-the-firewall-and-selinux.md)。

    
  
  * 你已经创建用户。更多信息，参考 [创建用户](../4.installation-and-deployment/11.optional-create-a-user.md)。

    
  

  




部署模式 
-------------------------

本文采用三副本部署模式，推荐使用四台机器。其中：

* 使用一台机器部署 ODP。

  

* 使用三台机器部署 OceanBase 集群。

  



**说明**



* 在生产环境下，推荐将 ODP 和应用部署在一台机器上，以节省应用访问 ODP 的时间。 您可以在每个应用的服务器上部署一个 ODP 服务。在本例中，为了更方便使用，将 ODP 单独部署。

  

* 部署 ODP 的机器使用的配置可以和部署 OceanBase 数据库的机器配置不一致。部署 ODP 只需 4c/16g \~ 8c/64g 内存即可。

  




下载安装包 
--------------------------

如您的机器可以访问公网，并能够添加三方 YUM 软件源，您可以执行以下命令，使用 OceanBase 的官方软件源安装 OBD：

```unknow
yum install -y yum-utils
yum-config-manager --add-repo https://mirrors.aliyun.com/oceanbase/OceanBase.repo
yum install -y ob-deploy
```


**注意**



只有 Anolis、CentOS 和 RedHat 操作系统支持此操作。

在您执行了 `obd cluster deploy` 命令之后，OBD 将检查您的目标机器是否有 OceanBase 数据库安装包。如果没有安装包，OBD 将自动从 yum 源获取。

如果您的机器不能访问公网，您可以从 OceanBase 官网下载安装包。详细信息，参考 [安装包下载说明](../4.installation-and-deployment/2.instructions-for-downloading-the-installation-package.md)。

安装 OBD 
---------------------------

**说明**



您只需要在中控机器上安装 OBD。

### 在线安装 OBD 

如您的机器可以访问公网，并能够添加三方 YUM 软件源，您可以执行以下命令，使用 OceanBase 的官方软件源安装 OBD：

```unknow
yum install -y yum-utils
yum-config-manager --add-repo https://mirrors.aliyun.com/oceanbase/OceanBase.repo
yum install -y ob-deploy
```



### 离线安装 OBD 

如果您的机器不能访问公网，您可以从 OceanBase 官网下载 OBD。详细信息，参考 [安装包下载说明](../4.installation-and-deployment/2.instructions-for-downloading-the-installation-package.md)。下载完成后，将 OBD 复制到您的中控机器上。

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

```unknow
yum install ob-deploy-1.1.0-1.el7.x86_64.rpm
```



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

```unknow
alien --scripts -i ob-deploy-1.1.0-1.el7.x86_64.rpm
```



安装 OBLibs 
------------------------------

**说明**



您需要在每台目标机器上安装 OBLibs。

### 在线安装 OBLibs 

执行以下命令，在线安装 OBLibs：

```unknow
yum install -y oceanbase-ce-libs
```



### 离线安装 OBLibs 

如果您的机器不能访问公网，您可以从 OceanBase 官网下载 OBLibs。详细信息，参考 [安装包下载说明](../4.installation-and-deployment/2.instructions-for-downloading-the-installation-package.md)。下载完成后，将 OBLibs 复制到您的每台机器上。

在 Anolis 7、CentOS 7 或 RedHat 7 系统上，执行以下命令安装 OBLibs：

```unknow
yum install oceanbase-ce-libs-3.1.0-3.el7.x86_64.rpm
```



在 Ubuntu 或 Debian 9 系统上，执行以下命令安装 OBLibs：

```unknow
alien -i oceanbase-ce-libs-3.1.0-3.el7.x86_64.rpm
```



在 Anolis 8、CentOS 8 或 RedHat 8 系统上，执行以下命令安装 OBLibs：

```unknow
yum install oceanbase-ce-libs-3.1.0-3.el8.x86_64.rpm
```



在 Debian 10 系统上，执行以下命令安装 OBLibs：

```unknow
alien -i oceanbase-ce-libs-3.1.0-3.el8.x86_64.rpm
```



安装 OBClient 
--------------------------------

您只需要在中控机器上安装 OBClient。
**注意**



您必须首先下载 OBClient 的依赖包 LibOBClient。详细信息，参考 [安装包下载说明](../4.installation-and-deployment/2.instructions-for-downloading-the-installation-package.md)。

### 在线安装 OBClient 

执行以下命令，在线安装 OBLibs：

```unknow
yum install -y libobclient
yum install -y obclient
```



### 离线安装 OBClient 

如果您的机器不能访问公网，您可以从 OceanBase 官网下载 OBClient。详细信息，参考 [安装包下载说明](../4.installation-and-deployment/2.instructions-for-downloading-the-installation-package.md)。下载完成后，将 OBClient 复制到您的中控机器上。

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

```unknow
yum install libobclient-2.0.0-2.el7.x86_64.rpm
yum install obclient-2.0.0-2.el7.x86_64.rpm
```



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

```unknow
alien --scripts -i libobclient-2.0.0-2.el7.x86_64.rpm
alien --scripts -i obclient-2.0.0-2.el7.x86_64.rpm
```



安装 OceanBase 数据库和 ODP 
------------------------------------------

安装 OceanBase 数据库和 ODP之前，为了数据安全，建议您切换到非 root 用户。如果离线安装 OceanBase 数据库和 ODP，从 OceanBase 官网下载 OceanBase 数据库、OBLibs 和 ODP。详细信息，参考 [安装包下载说明](../4.installation-and-deployment/2.instructions-for-downloading-the-installation-package.md)。下载完成后，将 OceanBase 数据库和 ODP 复制到您的中控机器上。如果在线安装，跳过步骤 1\~3。

跳转至上述安装包的下载目录，按照以下步骤安装 OceanBase 数据库和 ODP：

* 删除远程仓库

  ```unknow
  rm -fr ~/.obd/mirror/remote/*.repo
  ```

  

  离线安装时，您需要删除远程仓库。
  **注意**

  

  如果您是在线安装，并且您的操作系统是 Anolis、CentOS 或 RedHat，跳过此步骤。
  




<!-- -->

* 将安装包添加至本地镜像

  ```unknow
  obd mirror clone *.rpm
  ```

  

* 查看镜像列表

  ```unknow
  obd mirror list local
  ```

  

* 下载配置文件

  从 GitHub 上下载对应的配置文件。根据您的实际情况选择相应的配置文件：
  * 如果您采用单机安装，即中控机器和目标机器不是同一台机器，且目标机器只有一台，请下载 [单机安装配置文件](https://github.com/oceanbase/obdeploy/blob/master/example/autodeploy/single-example.yaml)。

    
  
  * 如果您采用分布式安装，即中控机器和目标机器不是同一台机器，且目标机器有多台，请下载 [分布式安装配置文件](https://github.com/oceanbase/obdeploy/blob/master/example/autodeploy/distributed-with-obproxy-example.yaml)。

    
  

  

  示例采用自动部署配置文件。自动部署将根据简易配置和目标机器资源生成最大规格配置并启动 OceanBase 数据库。非自动部署 OceanBase 数据库，参考 [OBD 文档](https://github.com/oceanbase/obdeploy/blob/master/README-CN.md#%E4%BD%BF%E7%94%A8-obd-%E5%90%AF%E5%8A%A8-oceanbase-%E6%95%B0%E6%8D%AE%E5%BA%93%E9%9B%86%E7%BE%A4)。OceanBase 数据库详细参数介绍，参考 [OceanBase 数据库参数](https://github.com/oceanbase/obdeploy/blob/master/plugins/oceanbase/3.1.0/parameter.yaml)。
  

* 修改配置文件

  以部署分布式 OceanBase 数据库和 ODP 为例，按照以下步骤修改配置文件：
  * 修改用户名和密码

    ```unknow
    ## Only need to configure when remote login is required
    # user:
    #   username: your username
    #   password: your password if need
    #   key_file: your ssh-key file path if need
    #   port: your ssh port, default 22
    #   timeout: ssh connection timeout (second), default 30
    ```

    
  
  * 修改每台机器的 IP、`home_path`、`data_dir` 和 `redo_dir`

    ```unknow
    oceanbase-ce:
      servers:
        - name: z1
          # Please don't use hostname, only IP can be supported
          ip: 172.30.62.200
        - name: z2
          ip: 172.30.62.201
        - name: z3
          ip: 172.30.62.202
      global:
        # The working directory for OceanBase Database. OceanBase Database is started under this directory. This is a required field.
        home_path: /home/admin/oceanbase/ob
        # The directory for data storage. The default value is $home_path/store.
        data_dir: /data/ob
        # The directory for clog, ilog, and slog. The default value is the same as the data_dir value.
        redo_dir: /redo/ob
    ```

    
    **说明**

    

    您必须根据您的真实配置修改这些参数。
    
  
  * 配置 ODP 并修改 IP 和 home_path

    ```unknow
    obproxy:
      servers:
        - 172.30.62.203
      global:
        # The working directory for obproxy. Obproxy is started under this directory. This is a required field.
        home_path: /home/admin/oceanbase
    ```

    

    您可以使用在线 YAML 文件校验器对您的配置文件进行检测。详细信息，参考 [YAML 在线校验器](https://www.bejson.com/validators/yaml_editor/)。
    
  

  




部署 OceanBae 集群 
-----------------------------------

按照以下步骤部署 OceanBase 集群：

* 部署 OceanBae 集群

  ```unknow
  obd cluster autodeploy obtest -c distributed-with-obproxy-example.yaml 
  ```

  

* 查看 OceanBae 集群

  ```unknow
  obd cluster list
  ```

  




（可选）修改集群配置 
-------------------------------

OceanBase 数据库有数百个配置项，有些配置是耦合的，在您熟悉 OceanBase 数据库之前，不建议您修改示例配件文件中的配置。此处示例用来说明如何修改配置，并使之生效。

```unknow
# 使用 edit-config 命令进入编辑模式，修改集群配置
obd cluster edit-config obtest
# 修改 sys_bkgd_migration_retry_num 为 5
# 注意 sys_bkgd_migration_retry_num 值最小为 3
# 保存并退出后，OBD 会告知您如何使得此次改动生效
# 此配置项仅需要 reload 即可生效
obd cluster reload obtest
```



（可选）安装 MySQL 开发包 
-------------------------------------

如果需要运行 Sysbench 或者 TPCH 等程序, 您需要安装 MySQL 开发包。

在 CentOS、RedHat 或 Anolis 系统上，执行以下命令安装 MySQL 开发包：

```unknow
yum install mariadb
yum install mariadb-libs
yum install mariadb-devel
```



在 Ubuntu 系统上，执行以下命令安装 MySQL 开发包：

```unknow
apt-get install mariadb-server
```



在 Debian 系统上，执行以下命令安装 MySQL 开发包：

```unknow
apt-get install mysql-server mysql-client libmariadbd18 libmariadbd-dev
```



连接 OceanBase 数据库 
-------------------------------------

运行以下命令，使用 OBClient 客户端连接 OceanBase 数据库：

```unknow
obclient -h<your_ip> -P<obproxy_port> -uroot
```



其中，`your_ip` 为您 OceanBase 实例所在的机器 IP 地址。ODP 默认使用端口 `2883` 连接 OBClient。如果您对端口做了更改，此处使用您实际的端口号。

创建普通租户 
---------------------------

要使用 OceanBase 数据库，您需要创建普通租户。您的业务数据必须在普通租户下运行。

您可以使用以下方法创建普通租户：

* 使用 OBD 创建普通租户。

  ```unknow
  obd cluster tenant create ${cluster_name} -n ${tenant_name}
  ```

  

* 使用 SQL 语句创建普通租户。更多信息，参考 [创建用户租户](../6.administrator-guide/3.basic-database-management/5.tenants/2.create-a-user-tenant.md)。

  



