在部署 OceanBase 社区版之前,您可通过 Docker 环境快速体验部署好的 OceanBase 社区版环境。我们提供了一个 OceanBase 社区版 Docker 镜像,您可在您的电脑上使用 Docker 技术快速部署并启动 OceanBase 社区版的 Docker 容器。
OceanBase Docker 容器对资源的要求如下:
-
机器可用内存不少于 10G。
此处的可用内存指剩余可用内存。
-
CPU 建议至少有 2 个逻辑 CPU。
Docker 是一个免费软件,在 Windows、Linux、Mac 系统里均可安装运行。下载和安装地址如下: https://docs.docker.com/get-docker/。
Docker 安装后,对默认的容器资源有限制,需要手动调整。下面以 Mac 电脑上的 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!
分析上面日志可以看出几点信息:
-
OceanBase 会安装两个软件包:
oceanbase-ce-lib
和oceanbase-ce-3.1.3
。 -
启动 OceanBase 数据库会先初始化集群目录。
-
之后初始化集群(
bootstrap
)。 -
最后初始化业务租户(
tenant
)。
-
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]>
-
运行以下命令进入容器
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 数据库。