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

「OceanBase 4.1 体验」快速体验 OceanBase 4.1 数据库 docker 部署容器环境

原创 shunwah 2023-04-30
798

作者:马顺华

从事运维管理工作多年,目前就职于某科技有限公司,熟悉运维自动化、OceanBase部署运维、MySQL 运维以及各种云平台技术和产品。并已获得OceanBase认证OBCA、OBCP 证书、OpenGauss社区认证结业证书。OceanBase & 墨天轮第二、三、四、五、六届技术征文大赛,多次获得 一、二、三 等奖,时常在墨天轮发布原创技术文章,并多次被首页推荐。

image.png

本文以部署 OceanBase 演示环境、部署 OceanBase 集群环境和部署 OceanBase 容器环境三种部署方案为例指导您如何快速使用 OceanBase 数据库。

注意

本文中的方法仅适用于 OceanBase 数据库快速上手体验,不适用生产环境,如需在生产环境中部署 OceanBase 数据库,请参考 OceanBase 数据库文档中 部署数据库 章节。

本文提供的方案中,部署演示环境 和 部署集群环境 同时适用于企业版和社区版部署;部署容器环境 仅适用于社区版部署。

背景信息

OceanBase 数据库自 V4.0.0 开始提供统一的安装包 all-in-one package。您可以通过这个统一的安装包一次性完成 OBD、OceanBase 数据库、ODP、OBAgent、Grafana、Prometheus 的安装,自 V4.1.0 起,all-in-one package 新增支持安装 OCP Express。您可以根据实际需求选择部分或全部组件安装。

方案介绍

为了助力您快速上手体验 OceanBase 数据库,OceanBase提供了三种不同的方案实现快速部署 Oceanbase 数据,您可以根据自身环境情况灵活选择。

本次使用 Docker 部署 OceanBase 容器环境(仅适用于社区版)

此方案适用于非 Linux 操作系统(例如 Windows、macOS),希望通过容器实现部署、管理 OceanBase 数据库的用户。该方案未经过规模化的验证,建议谨慎使用。操作步骤请参考 方案三:部署 OceanBase 容器环境。

https://www.oceanbase.com/docs/common-oceanbase-database-cn-10000000001692850

一、部署 OceanBase 容器环境

您可参考本节内容在 Docker 容器里启动 OceanBase 数据库,帮助您快速了解 OceanBase 数据库。

(可选)拉取 OceanBase 数据库镜像
运行如下命令,拉取 OceanBase 数据库所需镜像。
docker search oceanbase

1、 搜索 OceanBase 数据库相关镜像

[root@CAIP131 ~]# docker search oceanbase
NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
oceanbase/oceanbase-ce             OceanBase is an open-source, distributed HTA…   14                                      
obpilot/oceanbase-ce               3 steps to run an OceanBase-CE docker in you…   4                                       
oceanbase/oceanbase-xe             OceanBase Database 2.2 Express Edition          4                                       
oceanbase/obce-mini                obce-mini is a mini standalone test image fo…   3                                       
oceanbase/miniob                   miniob database competition                     2                                       
zibuyu886/oceanbase-ce-cluster     OceanBase ce cluster                            1                                       
oceanbase/obce-operator            obce-operator                                   1                                       
oceanbase/centos7                                                                  0                                       
oceanbase/ob-operator                                                              0                                       
oceanbase/obagent                                                                  0                                       
oceanbase/obproxy-ce                                                               0                                       
oceanbasedev/sealer-ob                                                             0                                       
oceanbasedev/oceanbase-cn                                                          0                                       
oceanbase/oceanbase-cloud-native                                                   0                                       
oceanbasedev/ob-operator                                                           0                                       
oceanbasedev/obproxy-ce                                                            0                                       
oceanbasedev/obproxy                                                               0                                       
oceanbasedev/create_tenant                                                         0                                       
datatomdev/oceanbase                                                               0                                       
oceanbasedev/obagent                                                               0                                       
huweijie/oceanbase-ce-deploy                                                       0                                       
hnwyllmm/oceanbase-ce                                                              0                                       
superbigfu/oceanbase                                                               0                                       
hongxinsun/oceanbase-cn                                                            0                                       
hnwyllmm/oceanbase-ce-x86                                                          0                                       
[root@CAIP131 ~]# 

image.png

2、拉取 OceanBase 数据库最新镜像

[root@CAIP131 ~]# docker pull oceanbase/oceanbase-ce
Using default tag: latest
latest: Pulling from oceanbase/oceanbase-ce
2d473b07cdd5: Already exists 
c21cdfe7a94b: Pull complete 
7433dd4c409c: Pull complete 
00a0e26f2005: Pull complete 
Digest: sha256:18c4055f80ec312fc618ef6356ba0da6379c93c45a01b1b5af46e4667c327135
Status: Downloaded newer image for oceanbase/oceanbase-ce:latest
docker.io/oceanbase/oceanbase-ce:latest
[root@CAIP131 ~]# 

image.png

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

二、启动 OceanBase 数据库实例

运行如下命令,启动 OceanBase 数据库实例。

1、根据当前容器部署最大规格实例

[root@CAIP131 ~]# docker run -p 2885:2881 --name obmax -e MINI_MODE=0 -d oceanbase/oceanbase-ce
d35e33f15433ada57f698b0ec1229c1c5499e9e4d26705e83ae523b4dba9759d
[root@CAIP131 ~]# 

image.png
查看 ob 容器是否启动

[root@CAIP131 ~]# docker ps
CONTAINER ID        IMAGE                    COMMAND              CREATED             STATUS              PORTS                    NAMES
d35e33f15433        oceanbase/oceanbase-ce   "/bin/sh -c _boot"   43 seconds ago      Up 42 seconds       0.0.0.0:2885->2881/tcp   obmax
[root@CAIP131 ~]# docker logs obmax | tail -1
Connect to observer ok     #正在启动
[root@CAIP131 ~]# docker logs obmax | tail -1
boot success!    #启动完成

image.png

2、部署 mini 的独立实例

[root@CAIP131 data]# docker run -p 2889:2881 --name obstandalone -e MINI_MODE=1 -d oceanbase/oceanbase-ce
Unable to find image 'oceanbase/oceanbase-ce:latest' locally
latest: Pulling from oceanbase/oceanbase-ce
2d473b07cdd5: Pull complete 
c21cdfe7a94b: Pull complete 
7433dd4c409c: Pull complete 
00a0e26f2005: Pull complete 
Digest: sha256:18c4055f80ec312fc618ef6356ba0da6379c93c45a01b1b5af46e4667c327135
Status: Downloaded newer image for oceanbase/oceanbase-ce:latest
07cc7fd084da7722323b5c760d55addc7d4d15782a9f97c0a33ce997ae2722f3

image.png

3、查看 ob 容器是否启动

启动预计需要 2~5 分钟。执行以下命令,如果返回 boot success!,则表示启动成功。

[root@CAIP131 ~]# docker ps
CONTAINER ID        IMAGE                    COMMAND              CREATED             STATUS              PORTS                    NAMES
07cc7fd084da        oceanbase/oceanbase-ce   "/bin/sh -c _boot"   39 hours ago        Up 39 hours         0.0.0.0:2889->2881/tcp   obstandalone
[root@CAIP131 ~]# docker logs obstandalone | tail -1
boot success!
[root@CAIP131 ~]# 

image.png

这里显示返回了 boot success!,说明已经启动成功。

三、连接 OceanBase 数据库实例

oceanbase-ce 镜像安装了 OceanBase 数据库客户端 OBClient,并提供了默认连接脚本 ob-mysql。

1、 使用 root 用户登录集群的 sys 租户

docker exec -it obstandalone ob-mysql sys

[root@CAIP131 ~]# 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 3221522660
Server version: OceanBase_CE 4.1.0.0 (r100000192023032010-0265dfc6d00ff4f0ff4ad2710504a18962abaef6) (Built Mar 20 2023 10:12:57)

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

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

obclient [oceanbase]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| LBACSYS            |
| mysql              |
| oceanbase          |
| ORAAUDITOR         |
| SYS                |
| test               |
+--------------------+
7 rows in set (0.023 sec)

obclient [oceanbase]> 

连接成功后,终端将显示如下内容:
image.png

2、 使用 root 用户登录集群的 test 租户

docker exec -it obstandalone ob-mysql root

[root@CAIP131 ~]# docker exec -it obstandalone ob-mysql root
login as root@test
Command is: obclient -h127.1 -uroot@test -A -Doceanbase -P2881 
Welcome to the OceanBase.  Commands end with ; or \g.
Your OceanBase connection id is 3221522687
Server version: OceanBase_CE 4.1.0.0 (r100000192023032010-0265dfc6d00ff4f0ff4ad2710504a18962abaef6) (Built Mar 20 2023 10:12:57)

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

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

obclient [oceanbase]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| oceanbase          |
| test               |
+--------------------+
4 rows in set (0.022 sec)

obclient [oceanbase]> 

连接成功后,终端将显示如下内容:
image.png

3、 使用 test 用户登录集群的 test 租户

[admin@test001 ~]$ docker exec -it obstandalone ob-mysql test

[root@CAIP131 ~]# docker exec -it obstandalone ob-mysql test
login as test@test
Command is: obclient -h127.1 -utest@test -A -Dtest -P2881 
Welcome to the OceanBase.  Commands end with ; or \g.
Your OceanBase connection id is 3221522711
Server version: OceanBase_CE 4.1.0.0 (r100000192023032010-0265dfc6d00ff4f0ff4ad2710504a18962abaef6) (Built Mar 20 2023 10:12:57)

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

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

obclient [test]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| test               |
+--------------------+
2 rows in set (0.019 sec)

obclient [test]> 

连接成功后,终端将显示如下内容:
image.png

4、 使用 obclient 登录集群的 sys 租户

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

obclient -uroot@sys -h127.1 -P2881

[root@CAIP131 ~]# obclient -uroot@sys -h127.1 -P2889
Welcome to the OceanBase.  Commands end with ; or \g.
Your OceanBase connection id is 3221522734
Server version: OceanBase_CE 4.1.0.0 (r100000192023032010-0265dfc6d00ff4f0ff4ad2710504a18962abaef6) (Built Mar 20 2023 10:12:57)

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

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

obclient [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| LBACSYS            |
| mysql              |
| oceanbase          |
| ORAAUDITOR         |
| SYS                |
| test               |
+--------------------+
7 rows in set (0.010 sec)

obclient [(none)]> 

连接成功后,终端将显示如下内容:
image.png

三、遇到的问题?

报错1:启动容器端口被占用
[root@CAIP131 ~]# docker run -p 2881:2881 --name obstandalone -e MINI_MODE=0 -d oceanbase/oceanbase-ce
f564dcb80e3bd5f75fbda34913142c325d8546e6e71b48431141e15dda9d0581
docker: Error response from daemon: driver failed programming external connectivity on endpoint obstandalone (4760b1e258848ca51635a52cb355b0b36ca11be9bf5bf6fab519f6742a83feb5): Error starting userland proxy: listen tcp 0.0.0.0:2881: listen: address already in use.
[root@CAIP131 ~]# 

端口已在使用中
image.png

解决办法,更换端口,2881更换2885或未使用端口

[root@CAIP131 ~]# 
[root@CAIP131 ~]# docker run -p 2885:2881 --name obstandalone -e MINI_MODE=0 -d oceanbase/oceanbase-ce
docker: Error response from daemon: Conflict. The container name "/obstandalone" is already in use by container "f564dcb80e3bd5f75fbda34913142c325d8546e6e71b48431141e15dda9d0581". You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.

image.png

docker rm obstandalone
报错2: 登录sys租户报错,无法连接
[root@CAIP131 ~]# obclient -uroot@sys -h127.1 -P2881
ERROR 2002 (HY000): Can't connect to OceanBase server on '127.1' (115)
[root@CAIP131 ~]# 

image.png

解决办法,容器部署时修改了默认端口2881,新端口是2885,使用新端口2885就可以登录

[root@CAIP131 ~]# obclient -uroot@sys -h127.1 -P2885
Welcome to the OceanBase.  Commands end with ; or \g.
Your OceanBase connection id is 3221487824
Server version: OceanBase_CE 4.1.0.0 (r100000192023032010-0265dfc6d00ff4f0ff4ad2710504a18962abaef6) (Built Mar 20 2023 10:12:57)

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

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

obclient [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| LBACSYS            |
| mysql              |
| oceanbase          |
| ORAAUDITOR         |
| SYS                |
| test               |
+--------------------+
7 rows in set (0.033 sec)

obclient [(none)]> 

image.png

报错3:最大规格启动报错
[root@CAIP131 ~]# docker logs obmax | tail -1
boot failed!
[root@CAIP131 ~]# 

image.png

解决办法,磁盘空间不足,增加磁盘空间,重新启动容器可以正常启动

[root@CAIP131 ~]# docker ps
CONTAINER ID        IMAGE                    COMMAND              CREATED             STATUS              PORTS                    NAMES
d35e33f15433        oceanbase/oceanbase-ce   "/bin/sh -c _boot"   16 minutes ago      Up 16 minutes       0.0.0.0:2885->2881/tcp   obmax
[root@CAIP131 ~]# docker logs obmax | tail -1
boot success!
[root@CAIP131 ~]# 

image.png

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

评论