暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

如何部署 OceanBase 数据库生产环境?

358

名词解释

  • 中控机器

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

  • 目标机器

    安装 OceanBase 数据库的机器。

  • OBD

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

  • OBProxy

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

  • OCP

    OceanBase Cloud Platform,OceanBase 运维管理工具,简称为 OCP。

前提条件

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

  • 您的机器满足软硬件要求。详细信息,参考 软硬件要求

  • 生产环境下,您需要进行环境和配置检查,具体操作请参考 部署前配置

部署模式

本文采用三副本部署模式,推荐使用四台机器,您可以根据自己实际情况选择合适的部署方案。其中:

  • 使用一台机器部署 OBProxy、Grafana、Prometheus;如果您已经安装或计划安装OCP,则无需安装 Grafana 和 Prometheus。

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

说明

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

  • 部署 OBProxy 的机器使用的配置可以和部署 OceanBase 数据库的机器配置不一致。部署 OBProxy 只需 1C/1G 内存即可。

注意

以下内容以 x86 架构的 CentOS Linux 7.9 镜像作为环境,其他环境可能略有不同。

下载并安装 all-in-one package

从 V4.0.0 开始,OceanBase 提供统一的安装包 all-in-one package。您可以通过这个统一的安装包一次性完成 OBD、OceanBase 数据库、OBProxy、obagent、Grafana 和 Prometheus 的安装;您可以根据实际需求选择部分组件安装或者指定组件的版本。

  1. 从 OceanBase 社区下载中心 下载最新的 all-in-one package,oceanbase-all-in-one-4.xx.xx-xxx.tar.gz。

  2. 执行以下命令解压安装包并安装。

    tar -xzf oceanbase-all-in-one-4.xx.xx-xxx.tar.gz
    cd oceanbase-all-in-one/bin/
    ./install.sh
    
  3. 执行 which obd 和 which obclient 检测是否安装成功, 如果可以找到 oceanbase-all-in-one 下的 obd 和 obclient 路径,则表示安装成功。

    [root@test .obd]# which obd
    /root/.oceanbase-all-in-one/obd/usr/bin/obd
    [root@test .obd]# which obclient
    /root/.oceanbase-all-in-one/obclient/u01/obclient/bin/obclient
    

安装 OceanBase 数据库

为了数据安全,建议您切换到非 root 用户。

  1. 选择配置文件。

    所有配置文件均存放在 ~/.oceanbase-all-in-one/conf 目录下, 您也可以从 GitHub obdeploy 上下载最新的配置文件。根据您的实际情况选择相应的配置文件:

    • 使用默认安装配置文件(~/.oceanbase-all-in-one/conf/autodeploy/default-example.yaml)。

    • 如果您采用单机安装,即目标机器只有一台,可修改配置文件, 使之适配单机部署。

  2. 修改配置文件。

    以部署分布式 OceanBase 数据库和 OBProxy 为例,按照以下步骤修改配置文件:

    1. 修改用户名和密码。

      ## 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
      
    2. 修改每台机器的 IP、home_pathdata_dir 和 redo_dir

      oceanbase-ce:
        servers:
          - name: z1
            # Please don't use hostname, only IP can be supported
            ip: 172.xx.xxx.200
          - name: z2
            ip: 172.xx.xxx.201
          - name: z3
            ip: 172.xx.xxx.202
        global:
          # Please set devname as the network adaptor's name whose ip is  in the setting of severs.
          # if set severs as "127.0.0.1", please set devname as "lo"
          # if current ip is 192.168.1.10, and the ip's network adaptor's name is "eth0", please use "eth0"
          devname: eth0
          # 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
      

      说明

      您必须根据您的真实配置修改这些参数。

    3. 配置 OBProxy 并修改 IP 和 home_path

      obproxy-ce:
        servers:
          - 172.xx.xxx.203
        global:
          # The working directory for obproxy. Obproxy is started under this directory. This is a required field.
          home_path: /home/admin/obproxy
      

      说明

      • 您可以使用在线 YAML 文件校验器对您的配置文件进行检测。详细信息,参考 YAML 在线校验器
      • 在本例中, 使用的是autodeploy 进行安装部署,autodeploy 会自动探测硬件以调整参数,但有可能资源没有最大化,例如:硬盘空间不足时,会缩小内存的使用。如果您对 OceanBase 各参数较为了解,推荐使用deploy 进行安装部署。如果使用 deploy,则使用的配置文件位于 ~/.oceanbase-all-in-one/conf 目录下,非 ~/.oceanbase-all-in-one/conf/autodeploy 目录下。

部署 OceanBase 集群

执行以下命令部署 OceanBase 集群。

obd cluster autodeploy obtest -c default-example.yaml 

当安装了 Grafana 或 Prometheus 时,会输出 Grafana 或 Prometheus 的访问地址,类似以下输出。在阿里云或其他云环境下,因为安装程序可能无法获取公网 IP,可能输出的是内网地址(在本例中,为 172.30.62.249),此 IP 非公网地址,您需要使用正确的地址。

+------------------------------------------------------+
|                      prometheus                      |
+---------------------------+------+----------+--------+
| url                       | user | password | status |
+---------------------------+------+----------+--------+
| http://172.30.62.249:9090 |      |          | active |
+---------------------------+------+----------+--------+

说明

all-in-one package 提供的组件已经经过相互适配测试,为官方推荐版本。如果您需要安装历史版本或者自己编译的版本,则需要提前将安装的目标 rpm clone 到 OBD 仓库当中,类似参考如下。

sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/oceanbase/OceanBase.repo
obd mirror clone oceanbase-ce-3.1.4-10000092022071511.el7.x86_64.rpm
obd mirror clone oceanbase-ce-libs-3.1.4-10000092022071511.el7.x86_64.rpm
obd cluster autodeploy obtest -c default-example.yaml 

部署完成后,可以执行以下命令查看 OceanBase 集群。

obd cluster list

(可选)修改集群配置

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

# 使用 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

连接 OceanBase 数据库

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

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

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

创建普通租户

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

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

  • 使用 OBD 创建普通租户。

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

安装组件

推荐您使用 all-in-one 的 package 进行安装, 但如果您不希望使用 all-in-one package 中包含的组件版本,想要安装其他版本的组件或者自由组合软件的版本,可以参考以下操作进行安装。

离线安装 OBD

您可以从 OceanBase 官网下载中心 下载所需版本的 OBD。推荐您使用最新版本的安装包。

下载完成后,将 OBD 复制到您的中控机器上。

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

yum install ob-deploy-x.x.x.el7.x86_64.rpm

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

alien --scripts -i ob-deploy-x.x.x.el7.x86_64.rpm

离线安装 OBClient

您可以从 OceanBase 官网下载中心 下载 OBClient,建议下载最新版本的安装包。

下载完成后,将 OBClient 复制到您的中控机器上。

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

yum install libobclient-x.x.x.el7.x86_64.rpm
yum install obclient-x.x.x-2.el7.x86_64.rpm

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

alien --scripts -i libobclient-x.x.x.el7.x86_64.rpm
alien --scripts -i obclient-x.x.x.el7.x86_64.rpm

安装 OceanBase 数据库和 OBProxy

安装 OceanBase 数据库和 OBProxy 之前,为了数据安全,建议您切换到非 root 用户。

如果离线安装 OceanBase 数据库和 OBProxy,从 OceanBase 官网下载中心 下载 OceanBase 数据库、OBLibs 和 OBProxy。

  • oceanbase-ce-x.x.x.x-xxxx.el7.x86_64

  • oceanbase-ce-libs-x.x.x.x-xxxx.el7.x86_64

  • obproxy-ce-x.x.x-x.el7.x86_64

下载完成后,将 OceanBase 数据库和 OBProxy 复制到您的中控机器上。

跳转至上述安装包的下载目录,按照以下步骤安装 OceanBase 数据库和 OBProxy:

  1. 禁用远程仓库

    obd mirror disable remote
    

    离线安装时,您必须禁用远程仓库。

    注意

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

  2. 将安装包添加至本地镜像

    obd mirror clone *.rpm
    
  3. 查看镜像列表

    obd mirror list
    
  4. 选择配置文件

    • 如果您采用单机安装,即目标机器只有一台,可使用单机安装配置文件(/usr/obd/example/autodeploy/single-example.yaml)。

    • 如果您采用分布式安装,即目标机器有多台,可使用分布式安装配置文件(/usr/obd/example/autodeploy/default-example.yaml)。

    示例采用自动部署配置文件。自动部署将根据简易配置和目标机器资源生成最大规格配置并启动 OceanBase 数据库。

  5. 修改配置文件

    以部署分布式 OceanBase 数据库和 ODP 为例,按照以下步骤修改配置文件:

    1. 修改用户名和密码

      ## 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
      
    2. 修改每台机器的 IP、home_pathdata_dir 和 redo_dir

      oceanbase-ce:
        servers:
          - name: z1
            # Please don't use hostname, only IP can be supported
            ip: 172.xx.xxx.200
          - name: z2
            ip: 172.xx.xxx.201
          - name: z3
            ip: 172.xx.xxx.202
        global:
          # Please set devname as the network adaptor's name whose ip is  in the setting of severs.
          # if set severs as "127.0.0.1", please set devname as "lo"
          # if current ip is 192.168.1.10, and the ip's network adaptor's name is "eth0", please use "eth0"
          devname: eth0
          # 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
      

      说明

      您必须根据您的真实配置修改这些参数。

    3. 配置 ODP 并修改 IP 和 home_path

      obproxy-ce:
        servers:
          - 172.xx.xxx.203
        global:
          # The working directory for obproxy. Obproxy is started under this directory. This is a required field.
          home_path: /home/admin/obproxy
      

      您可以使用在线 YAML 文件校验器对您的配置文件进行检测。详细信息,参考 YAML 在线校验器

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论