在部署 OceanBase 社区版之前,您可通过 Docker 环境快速体验部署好的 OceanBase 社区版环境。我们提供了一个 OceanBase 社区版 Docker 镜像,您可在您的电脑上使用 Docker 技术快速部署并启动 OceanBase 社区版的 Docker 容器。
OceanBase Docker 容器对资源的要求如下:
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
进程几点信息:
查看进程监听端口。
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 数据库。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。