Skip to content

Latest commit

 

History

History
367 lines (283 loc) · 13.5 KB

3.2-2-how-to-quickly-experience-oceanbase.md

File metadata and controls

367 lines (283 loc) · 13.5 KB

2.2 如何快速体验 OceanBase 数据库

在部署 OceanBase 社区版之前,您可通过 Docker 环境快速体验部署好的 OceanBase 社区版环境。我们提供了一个 OceanBase 社区版 Docker 镜像,您可在您的电脑上使用 Docker 技术快速部署并启动 OceanBase 社区版的 Docker 容器。

机器资源要求

OceanBase Docker 容器对资源的要求如下:

  • 机器可用内存不少于 10G。

    注意

    此处的可用内存指剩余可用内存。

  • CPU 建议至少有 2 个逻辑 CPU。

安装 Docker

Docker 是一个免费软件,在 Windows、Linux、Mac 系统里均可安装运行。下载和安装地址如下: https://docs.docker.com/get-docker/

Docker 安装后,对默认的容器资源有限制,需要手动调整。下面以 Mac 电脑上的 Docker 设置为例进行说明。

Docker

常用 Docker 命令参考

# 查看docker版本
docker version
# 显示docker系统的信息
docker info
# 查看当前正在运行的容器
docker ps
# 故障检查
service docker status
# 启动关闭docker
service docker start | stop
# 查看容器日志
docker logs -f <容器名 or ID>

# 清理命令,危险!!!
# 清理不用的容器
docker container prune
# 清理不用的镜像
docker image prune
# 清理不用的卷
docker volume prune

下载镜像并启动

OceanBase Docker 镜像地址:https://hub.docker.com/r/oceanbase/oceanbase-ce

镜像在 Github 上的源码地址:https://github.com/oceanbase/oceanbase/tree/master/tools/docker/standalone

若您有兴趣可点击链接查看详情。

  • (可选)拉取 OceanBase 数据库相关镜像

    docker search oceanbase    # 搜索 oceanbase 相关镜像
    
    docker pull oceanbase/oceanbase-ce

    说明

    上述命令默认拉取最新版本,可根据实际需求在 Docker 镜像 中选择版本。

  • 启动 OceanBase Docker 容器

    # 根据当前容器部署最大规格的实例
    docker run -p 2881:2881 --name obstandalone -d oceanbase/oceanbase-ce
    
    ## 部署 mini 的独立实例
    docker run -p 2881:2881 --name obstandalone -e MINI_MODE=1 -d oceanbase/oceanbase-ce

    输出:

    ~ docker run -p 2881:2881 --name obstandalone -d oceanbase/oceanbase-ce
    9e1607d1a0d933622e0a927a576069fa2e43154cdacf215d3e0f2c412c65c102
    
    ➜  ~ docker ps
    CONTAINER ID   IMAGE                    COMMAND              CREATED          STATUS          PORTS                    NAMES
    9e1607d1a0d9   oceanbase/oceanbase-ce   "/bin/sh -c _boot"   40 seconds ago   Up 39 seconds   0.0.0.0:2881->2881/tcp   obstandalone
  • 查看容器启动日志

    刚启动的 OceanBase 数据库需要几分钟初始化集群。您可运行如下命令查看容器启动日志。

    docker logs obstandalone

    输出:

    ~ docker logs obstandalone
    generate boot.yaml ...
    create boot dirs and deploy ob cluster ...
    Package oceanbase-ce-3.1.3 is available.
    install oceanbase-ce-3.1.3 for local ok
    Cluster param config check ok
    Open ssh connection ok
    Generate observer configuration ok
    oceanbase-ce-3.1.3 already installed.
    +-------------------------------------------------------------------------------------------+
    |                                          Packages                                         |
    +--------------+---------+-----------------------+------------------------------------------+
    | Repository   | Version | Release               | Md5                                      |
    +--------------+---------+-----------------------+------------------------------------------+
    | oceanbase-ce | 3.1.3   | 10000292022032916.el7 | eab08e5d473bd4884fdf2ac4d7dff6a329b68abe |
    +--------------+---------+-----------------------+------------------------------------------+
    Repository integrity check ok
    Parameter check ok
    Open ssh connection ok
    Remote oceanbase-ce-3.1.3-eab08e5d473bd4884fdf2ac4d7dff6a329b68abe repository install ok
    Remote oceanbase-ce-3.1.3-eab08e5d473bd4884fdf2ac4d7dff6a329b68abe repository lib check !!
    [WARN] 127.0.0.1 oceanbase-ce-3.1.3-eab08e5d473bd4884fdf2ac4d7dff6a329b68abe require: libmariadb.so.3
    
    Try to get lib-repository
    Package oceanbase-ce-libs-3.1.3 is available.
    install oceanbase-ce-libs-3.1.3 for local ok
    Use oceanbase-ce-libs-3.1.3-c68c3aca8a1329a360fe5d65e1c3d4fa0f93f2d5 for oceanbase-ce-3.1.3-eab08e5d473bd4884fdf2ac4d7dff6a329b68abe
    Remote oceanbase-ce-libs-3.1.3-c68c3aca8a1329a360fe5d65e1c3d4fa0f93f2d5 repository install ok
    Remote oceanbase-ce-3.1.3-eab08e5d473bd4884fdf2ac4d7dff6a329b68abe repository lib check ok
    Cluster status check ok
    Initializes observer work home ok
    obcluster deployed
    Get local repositories and plugins ok
    Open ssh connection ok
    Load cluster param plugin ok
    Check before start observer ok
    [WARN] (127.0.0.1) clog and data use the same disk (/)
    
    Start observer ok
    observer program health check ok
    Connect to observer ok
    Initialize cluster
    Cluster bootstrap ok
    Wait for observer init ok
    +---------------------------------------------+
    |                   observer                  |
    +-----------+---------+------+-------+--------+
    | ip        | version | port | zone  | status |
    +-----------+---------+------+-------+--------+
    | 127.0.0.1 | 3.1.3   | 2881 | zone1 | active |
    +-----------+---------+------+-------+--------+
    
    obcluster running
    Get local repositories and plugins ok
    Open ssh connection ok
    Connect to observer ok
    Create tenant test ok
    start ob cluster ...
    Get local repositories and plugins ok
    Open ssh connection ok
    Load cluster param plugin ok
    Cluster status check ok
    Deploy "obcluster" is running
    boot success!

    分析上面日志可以看出几点信息:

    1. OceanBase 会安装两个软件包:oceanbase-ce-liboceanbase-ce-3.1.3

    2. 启动 OceanBase 数据库会先初始化集群目录。

    3. 之后初始化集群(bootstrap)。

    4. 最后初始化业务租户(tenant)。

连接 OceanBase 数据库实例

oceanbase-standalone 镜像包含 OBClient(OceanBase 数据库客户端)和默认连接脚本 ob-mysql。

  docker exec -it obstandalone ob-mysql sys # 连接 sys 租户
  docker exec -it obstandalone ob-mysql root # 连接用户租户的 root 账户
  docker exec -it obstandalone ob-mysql test # 连接用户租户的 test 账户

或者,您可以运行以下命令以使用本地 OBClient 或 MySQL 客户端连接到 OceanBase 实例。

$mysql -uroot -h127.1 -P2881

连接 OceanBase 实例成功后,终端返回如下信息:

~ docker exec -it obstandalone ob-mysql sys
  login as root@sys
  Command is: obclient -h127.1 -uroot@sys -A -Doceanbase -P2881
  Welcome to the OceanBase.  Commands end with ; or \g.
  Your OceanBase connection id is 3221488602
  Server version: 5.7.25 OceanBase 3.1.3 (r10000292022032916-3d79cacb37012cf61b7cb8faf00d9a6bb152bcd1) (Built Mar 29 2022 08:20:39)

  Copyright (c) 2000, 2022, OceanBase and/or its affiliates. All rights reserved.

  Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

  obclient [oceanbase]>

OceanBase 数据库进程特点

  • 运行以下命令进入容器

    docker exec -it obstandalone bash
  • 查看 OceanBase 社区版的 YUM 仓库

    [root@9e1607d1a0d9 /]# cat /etc/yum.repos.d/OceanBase.repo
    
    输出:
    # OceanBase.repo
    
    [oceanbase.community.stable]
    name=OceanBase-community-stable-el$releasever
    baseurl=http://mirrors.aliyun.com/oceanbase/community/stable/el/$releasever/$basearch/
    enabled=1
    gpgcheck=1
    gpgkey=http://mirrors.aliyun.com/oceanbase/RPM-GPG-KEY-OceanBase
    
    [oceanbase.development-kit]
    name=OceanBase-development-kit-el$releasever
    baseurl=http://mirrors.aliyun.com/oceanbase/development-kit/el/$releasever/$basearch/
    enabled=1
    gpgcheck=1
    gpgkey=http://mirrors.aliyun.com/oceanbase/RPM-GPG-KEY-OceanBase
  • 查看 observer 进程特点

    分析 OceanBase 集群节点进程,首先通过下面命令确定其启动位置、启动文件和启动参数等。

    yum -y install sysvinit-tools
    [root@9e1607d1a0d9 ~]# ps -ef|grep observer
    root       100     1 99 08:55 ?        00:50:19 /root/ob/bin/observer -r 127.0.0.1:2882:2881 -o __min_full_resource_pool_memory=268435456,enable_syslog_recycle=True,enable_syslog_wf=True,max_syslog_file_count=4,memory_limit=8G,system_memory=4G,cpu_count=16,datafile_size=27G,clog_disk_utilization_threshold=92,clog_disk_usage_limit_percentage=98 -z zone1 -p 2881 -P 2882 -n obcluster -c 1 -d /root/ob/store -i lo -l INFO
    root       809   744  0 09:28 pts/0    00:00:00 grep --color=auto observer
    
    [root@9e1607d1a0d9 ~]# ll /proc/`pidof observer`/{cwd,exe,cmdline}
    -r--r--r-- 1 root root 0 Apr 12 08:55 /proc/100/cmdline
    lrwxrwxrwx 1 root root 0 Apr 12 08:55 /proc/100/cwd -> /root/ob
    lrwxrwxrwx 1 root root 0 Apr 12 08:55 /proc/100/exe -> /root/.obd/repository/oceanbase-ce/3.1.3/eab08e5d473bd4884fdf2ac4d7dff6a329b68abe/bin/observer
    
    [root@9e1607d1a0d9 ~]# cat /proc/`pidof observer`/cmdline
    /root/ob/bin/observer -r 127.0.0.1:2882:2881 -o __min_full_resource_pool_memory=268435456,enable_syslog_recycle=True,enable_syslog_wf=True,max_syslog_file_count=4,memory_limit=8G,system_memory=4G,cpu_count=16,datafile_size=27G,clog_disk_utilization_threshold=92,clog_disk_usage_limit_percentage=98 -z zone1 -p 2881 -P 2882 -n obcluster -c 1 -d /root/ob/store -i lo -l INFO
    

    从上面可以看出 observer 进程几点信息:

    • 进程启动目录在 /root/ob 下。

    • 进程可执行文件目录在 /root/.obd/repository/oceanbase-ce/3.1.3/eab08e5d473bd4884fdf2ac4d7dff6a329b68abe/bin/ 下。

      说明

      这个目录是 OBD 安装 OceanBase 软件的目录,目录中带了具体的版本号。目录较长,OBD 后面版本已将这个目录映射到 /root/ob/bin/ 下。

    • 进程的启动参数很长,部分参数含义后文将进行详细介绍。

  • 查看进程监听端口。

    yum install -y net-tools
    
    netstat -ntlp
    
    输出:
    [root@9e1607d1a0d9 ~]# netstat -ntlp
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
    tcp        0      0 0.0.0.0:2881            0.0.0.0:*               LISTEN      100/observer
    tcp        0      0 0.0.0.0:2882            0.0.0.0:*               LISTEN      100/observer

    observer 进程会监听 2 个端口

    • 连接端口 2881。

    • RPC 通信端口 2882。

  • 查看 OceanBase 数据库工作目录结构

    yum -y install tree
    
    [root@9e1607d1a0d9 ~]# tree /root/ob/
    /root/ob/
    |-- admin
    |-- bin
    |   `-- observer -> /root/.obd/repository/oceanbase-ce/3.1.3/eab08e5d473bd4884fdf2ac4d7dff6a329b68abe/bin/observer
    |-- etc
    |   |-- observer.config.bin
    |   `-- observer.config.bin.history
    |-- etc2
    |   |-- observer.conf.bin
    |   `-- observer.conf.bin.history
    |-- etc3
    |   |-- observer.conf.bin
    |   `-- observer.conf.bin.history
    |-- lib
    |   |-- libaio.so -> /root/.obd/repository/oceanbase-ce/3.1.3/eab08e5d473bd4884fdf2ac4d7dff6a329b68abe/lib/libaio.so
    |   |-- libaio.so.1 -> /root/.obd/repository/oceanbase-ce/3.1.3/eab08e5d473bd4884fdf2ac4d7dff6a329b68abe/lib/libaio.so.1
    |   |-- libaio.so.1.0.1 -> /root/.obd/repository/oceanbase-ce/3.1.3/eab08e5d473bd4884fdf2ac4d7dff6a329b68abe/lib/libaio.so.1.0.1
    |   |-- libmariadb.so -> /root/.obd/repository/oceanbase-ce/3.1.3/eab08e5d473bd4884fdf2ac4d7dff6a329b68abe/lib/libmariadb.so
    |   `-- libmariadb.so.3 -> /root/.obd/repository/oceanbase-ce/3.1.3/eab08e5d473bd4884fdf2ac4d7dff6a329b68abe/lib/libmariadb.so.3
    |-- log
    |   |-- election.log
    |   |-- election.log.wf
    |   |-- observer.log
    |   |-- observer.log.20220412092815
    |   |-- observer.log.wf
    |   |-- observer.log.wf.20220412092815
    |   |-- rootservice.log
    |   `-- rootservice.log.wf
    |-- run
    |   |-- mysql.sock
    |   `-- observer.pid
    `-- store
        |-- clog
        |   `-- 1
        |-- ilog
        |   `-- 1
        |-- slog
        |   `-- 1
        `-- sstable
            `-- block_file

若您是手动部署 OceanBase 数据库节点,该工作目录下的子目录结构需手动维护。否则,observer 可能会启动失败。

若您使用自动化部署软件 OBD 部署 OceanBase 数据库节点,OBD 会自动创建相应目录。

目录路径(相对于工作目录) 备注
etc、etc2、etc3 配置文件所在目录。
log 运行日志目录。
run 运行输出目录,输出 pid 文件。
store 数据(包括日志)所在总目录。
store/clog commit log 所在目录。
store/ilog ilog 所在目录。
store/slog slog 所在目录。
store/sstable 数据文件 block file 所在目录。

注意

该 Docker 示例把 OceanBase 数据库安装在 root 用户目录下,并以root 用户运行,这里只是用作学习。生产环境中请勿以 root 用户部署和运行 OceanBase 数据库。