在部署 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 。
附录:
- 第二章 2.1 OceanBase 部署准备
- 第二章 2.2 如何快速体验 OceanBase
- 第二章 2.3 如何规划部署 OceanBase 集群
- 第二章 2.4 如何初始化服务器环境
- 第二章 2.5 安装 OBD 自动化部署软件
- 第二章 2.6 使用 OBD 自动化部署单节点集群
- 第二章 2.7 使用OBD自动化部署多节点集群
- 第二章 2.8 参看和修改 OceanBase 参数集群
- 第二章 2.9 如何部署 OBAgent
- 第二章 2.10 如何重启 OceanBase 集群
- 第二章 2.11(高级)如何手动部署 OceanBase 集群
- 第二章 2.12 常见问题
- 第二章 2.13 附录
结束语
OceanBase社区版入门到实战教程直播正在进行中~
快和小伙伴一起进群交流学习吧~
加入直播群方式一:
钉钉群号3255 4020
加入直播群方式二:
扫码下方二维码加入