绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
实战教程第二章2.2:如何快速体验 OceanBase
2022-02-22 17:21:08

部署 OceanBase 社区版之前,建议您快速通过 Docker 环境看一下一个部署好的 OceanBase 社区版环境。我们提供了一个 OceanBase 社区版 Docker 镜像,您可以在您的笔记本或电脑上使用 Docker 技术快速部署并启动 OceanBase 社区版的 Docker 容器。

机器资源要求

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

  • 机器可用内存不少于 10G 。 注意,是剩余可用内存。
  • 机器磁盘目录空间不少于 10G 。少于 10G 后面使用可能会不是很方便。如遭遇空间目录问题。
  • CPU 建议至少有 2个 逻辑 CPU 。

安装 Docker

Docker 是免费软件,在 Windows、Linux、Mac 系统里都可以安装运行。下载和安装地址请参考 : https://docs.docker.com/get-docker/ 。

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



  • 常用 Docker 命令参考
# 查看docker版本
docker version
# 显示docker系统的信息
docker info
# 日志信息
docker logs
# 故障检查
service docker status
# 启动关闭docker
service docker start | stop

# 查看容器日志
docker logs -f <容器名orID>

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

下载镜像并启动

OceanBase Docker 镜像地址:https://hub.docker.com/r/oceanbase/obce-mini 。 镜像的源码地址在 Github 上:https://github.com/oceanbase/oceanbase/tree/master/tools/docker/mini 。有兴趣的朋友可以直接看看。

docker search oceanbase    # 搜索 oceanbase 相关镜像

docker pull oceanbase/obce-mini

启动 OceanBase Docker 容器。

docker run -p 2881:2881 --name obce-mini -d -e OB_HOME_PATH="/root/obce/" -e OB_TENANT_NAME="obmysql" oceanbase/obce-mini

输出:
➜  ~ docker run -p 2881:2881 --name obce-mini -d -e OB_HOME_PATH="/root/obce/" -e OB_TENANT_NAME="obmysql" oceanbase/obce-mini
45180d71f504981ed588b7de0e5abf952511f2c2f9ee5eac0446b6cf0d4dc02c
➜  ~ docker ps
CONTAINER ID   IMAGE                 COMMAND              CREATED         STATUS         PORTS                                       NAMES
45180d71f504   oceanbase/obce-mini   "/bin/sh -c _boot"   4 seconds ago   Up 2 seconds   0.0.0.0:2881->2881/tcp, :::2881->2881/tcp   obce-mini
➜  ~

查看容器启动日志

刚启动的 OceanBase 需要几分钟初始化集群。可以查看容器启动日志。

docker logs obce-mini

输出:
➜  ~ docker logs obce-mini
generate boot.yaml ...
create boot dirs and deploy OceanBase cluster ...
Package oceanbase-ce-3.1.0 is available.
install oceanbase-ce-3.1.0 for local ok
+-----------------------------------------------------------------------------+
|                                   Packages                                  |
+--------------+---------+---------+------------------------------------------+
| Repository   | Version | Release | Md5                                      |
+--------------+---------+---------+------------------------------------------+
| oceanbase-ce | 3.1.0   | 2.el7   | afd11d52f83eef4b456d77969fde620c4bfba85e |
+--------------+---------+---------+------------------------------------------+
Open ssh connection ok
Remote oceanbase-ce-3.1.0-afd11d52f83eef4b456d77969fde620c4bfba85e repository install ok
Remote oceanbase-ce-3.1.0-afd11d52f83eef4b456d77969fde620c4bfba85e repository lib check !!
[WARN] 127.0.0.1 oceanbase-ce-3.1.0-afd11d52f83eef4b456d77969fde620c4bfba85e require: libaio.so.1
[WARN] 127.0.0.1 oceanbase-ce-3.1.0-afd11d52f83eef4b456d77969fde620c4bfba85e require: libmariadb.so.3

Try to get lib-repository
Package oceanbase-ce-libs-3.1.0 is available.
install oceanbase-ce-libs-3.1.0 for local ok
Use oceanbase-ce-libs-3.1.0-47300ca1ac4c62493caf3e9235b105e242e533b5 for oceanbase-ce-3.1.0-afd11d52f83eef4b456d77969fde620c4bfba85e
Remote oceanbase-ce-libs-3.1.0-47300ca1ac4c62493caf3e9235b105e242e533b5 repository install ok
Remote oceanbase-ce-3.1.0-afd11d52f83eef4b456d77969fde620c4bfba85e repository lib check ok
Cluster status check ok
127.0.0.1 initializes cluster work home
mini-ce deployed
start OceanBase cluster ...
Get local repositories and plugins ok
Open ssh connection ok
Cluster param config check ok
Check before start observer ok
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.0   | 2881 | zone1 | active |
+-----------+---------+------+-------+--------+

mini-ce running
generate init_tenant.sql ...
init tenant and sysbench database ...
boot success!

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

  • 会安装两个软件包:oceanbase-ce-lib 和 oceanbase-ce-3.1.0 。
  • 先初始化集群目录。
  • 然后初始化集群(bootstrap)。
  • 再初始化业务租户(tenant)。

分析 OceanBase 进程特点

进入容器

docker exec -it obce-mini bash

查看 OceanBase 社区版的 YUM 仓库

[root@45180d71f504 ~]# 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@45180d71f504 ~]# ps -ef|grep observer
root        85     1 99 01:50 ?        15:27:38 /root/.obd/repository/oceanbase-ce/3.1.0/afd11d52f83eef4b456d77969fde620c4bfba85e/bin/observer -r 127.0.0.1:2882:2881 -o __min_full_resource_pool_memory=268435456,memory_limit=8G,system_memory=4G,stack_size=512K,cpu_count=16,cache_wash_threshold=1G,workers_per_cpu_quota=10,schema_history_expire_time=1d,net_thread_count=4,sys_bkgd_migration_retry_num=3,minor_freeze_times=10,enable_separate_sys_clog=0,enable_merge_by_turn=False,enable_auto_leader_switch=False,enable_one_phase_commit=False,weak_read_version_refresh_interval=5s,trace_log_slow_query_watermark=10s,large_query_threshold=1s,clog_sync_time_warn_threshold=2000ms,syslog_io_bandwidth_limit=10M,enable_sql_audit=False,enable_perf_event=False,clog_max_unconfirmed_log_count=5000,autoinc_cache_refresh_interval=86400s,cpu_quota_concurrency=2,datafile_size=5G,enable_syslog_recycle=True,max_syslog_file_count=2,enable_early_lock_release=false tenant=all,default_compress_func=lz4_1.0,root_password=None -z zone1 -p 2881 -P 2882 -c 1 -d /root/obce//store -i lo -l WARN
root       663   606  0 04:41 pts/0    00:00:00 grep --color=auto observer

[root@45180d71f504 ~]# ll /proc/`pidof observer`/{cwd,exe,cmdline}
-r--r--r-- 1 root root 0 Sep 11 01:47 /proc/85/cmdline
lrwxrwxrwx 1 root root 0 Sep 11 01:47 /proc/85/cwd -> /root/obce
lrwxrwxrwx 1 root root 0 Sep 11 01:47 /proc/85/exe -> /root/.obd/repository/oceanbase-ce/3.1.0/afd11d52f83eef4b456d77969fde620c4bfba85e/bin/observer
[root@45180d71f504 ~]# cat /proc/`pidof observer`/cmdline
/root/.obd/repository/oceanbase-ce/3.1.0/afd11d52f83eef4b456d77969fde620c4bfba85e/bin/observer-r127.0.0.1:2882:2881-o__min_full_resource_pool_memory=268435456,memory_limit=8G,system_memory=4G,stack_size=512K,cpu_count=16,cache_wash_threshold=1G,workers_per_cpu_quota=10,schema_history_expire_time=1d,net_thread_count=4,sys_bkgd_migration_retry_num=3,minor_freeze_times=10,enable_separate_sys_clog=0,enable_merge_by_turn=False,enable_auto_leader_switch=False,enable_one_phase_commit=False,weak_read_version_refresh_interval=5s,trace_log_slow_query_watermark=10s,large_query_threshold=1s,clog_sync_time_warn_threshold=2000ms,syslog_io_bandwidth_limit=10M,enable_sql_audit=False,enable_perf_event=False,clog_max_unconfirmed_log_count=5000,autoinc_cache_refresh_interval=86400s,cpu_quota_concurrency=2,datafile_size=5G,enable_syslog_recycle=True,max_syslog_file_count=2,enable_early_lock_release=false tenant=all,default_compress_func=lz4_1.0,root_password=None-zzone1-p2881-P2882-c1-d
/root/obce//store-ilo-lWARN
[root@45180d71f504 ~]#

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

  • 进程启动目录是在 /root/obce 下。
  • 进程可执行文件目录在 /root/.obd/repository/oceanbase-ce/3.1.0/afd11d52f83eef4b456d77969fde620c4bfba85e/bin/ 下。这个目录是 OBD 安装 OceanBase 软件的目录,里面带了具体的版本号。目录比较长,OBD 后面版本已经将这个目录映射到 /root/obce/bin/ 下了。
  • 进程的启动参数很长。部分参数含义后面再详细介绍。

查看进程监听端口。observer 进程会监听 2 个端口。一个 连接端口 2881, 一个 RPC 通信端口 2882 。

yum install -y net-tools

netstat -ntlp

输出:
[root@45180d71f504 85]# 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      85/observer
tcp        0      0 0.0.0.0:2882            0.0.0.0:*               LISTEN      85/observer

查看 OceanBase 工作目录结构,这个很有必要。

yum -y install tree
tree /root/ob

[root@45180d71f504 ~]# tree /root/ob
/root/ob [error opening dir]

0 directories, 0 files
[root@45180d71f504 ~]# tree /root/obce/
/root/obce/
|-- admin
|-- etc
|   |-- observer.config.bin
|   `-- observer.config.bin.history
|-- etc2
|   |-- observer.conf.bin
|   `-- observer.conf.bin.history
|-- etc3
|   |-- observer.conf.bin
|   `-- observer.conf.bin.history
|-- log
|   |-- election.log
|   |-- election.log.wf
|   |-- observer.log
|   |-- observer.log.wf
|   |-- rootservice.log
|   `-- rootservice.log.wf
|-- run
|   |-- mysql.sock
|   `-- observer.pid
`-- store
    |-- clog
    |   `-- 1
    |-- clog_shm
    |-- ilog
    |   `-- 1
    |-- ilog_shm
    |-- slog
    |   `-- 1
    `-- sstable
        `-- block_file

如果您是手动部署 OceanBase 节点,这个工作目录下的子目录结构是要手动维护好。否则,observer 可能启动失败。使用自动化部署软件 OBD 的时候,会自动创建相应目录。



注意:这个 Docker 示例把 OceanBase 安装在 root 用户目录下,并以 root 用户运行,这个只是是学习用。生产环境不要以 root 用户部署和运行 OceanBase 。

来源 https://zhuanlan.zhihu.com/p/437648443
分享好友

分享这个小栈给你的朋友们,一起进步吧。

OceanBase
创建时间:2022-02-18 17:50:43
OceanBase
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • itt0918
    专家
戳我,来吐槽~