作者:马顺华
从事运维管理工作多年,目前就职于某科技有限公司,熟悉运维自动化、OceanBase部署运维、MySQL 运维以及各种云平台技术和产品。并已获得OceanBase认证OBCA、OBCP 证书、OpenGauss社区认证结业证书。OceanBase & 墨天轮第二、三、四、五、六届技术征文大赛,多次获得 一、二、三 等奖,时常在墨天轮发布原创技术文章,并多次被首页推荐。
本文以部署 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 ~]#
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 ~]#
说明
上述命令默认拉取最新版本,可根据实际需求在 Docker 镜像 中选择版本。
二、启动 OceanBase 数据库实例
运行如下命令,启动 OceanBase 数据库实例。
1、根据当前容器部署最大规格实例
[root@CAIP131 ~]# docker run -p 2885:2881 --name obmax -e MINI_MODE=0 -d oceanbase/oceanbase-ce
d35e33f15433ada57f698b0ec1229c1c5499e9e4d26705e83ae523b4dba9759d
[root@CAIP131 ~]#
查看 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! #启动完成
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
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 ~]#
这里显示返回了 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]>
连接成功后,终端将显示如下内容:
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]>
连接成功后,终端将显示如下内容:
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]>
连接成功后,终端将显示如下内容:
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)]>
连接成功后,终端将显示如下内容:
三、遇到的问题?
报错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 ~]#
端口已在使用中
解决办法,更换端口,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'.
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 ~]#
解决办法,容器部署时修改了默认端口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)]>
报错3:最大规格启动报错
[root@CAIP131 ~]# docker logs obmax | tail -1
boot failed!
[root@CAIP131 ~]#
解决办法,磁盘空间不足,增加磁盘空间,重新启动容器可以正常启动
[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 ~]#