技术分享 | OceanBase 在 Ubuntu 平台部署

news/2024/7/3 0:43:20

作者:杨涛涛

资深数据库专家,专研 MySQL 十余年。擅长 MySQL、PostgreSQL、MongoDB 等开源数据库相关的备份恢复、SQL 调优、监控运维、高可用架构设计等。目前任职于爱可生,为各大运营商及银行金融企业提供 MySQL 相关技术支持、MySQL 相关课程培训等工作。

本文来源:原创投稿

*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。


OceanBase 在官方文档中提到支持的 OS 列表包括 CENTOS 、UBUNTU 、DEBIAN 等等,但是软件源只提供 CENTOS 版本,无法直接在其他平台远程自动部署。但是对于我这种喜欢用 UBUNTU / DEBIAN 系统的用户来讲,就稍感欠缺!

目前部署 OceanBase 有以下几种方式:
1. OCP 平台部署:

OCP 平台本身对硬件(官方文档推荐配置CPU为32C,内存为128GB,磁盘为1.5TB ,并且要求 SSD)要求极高,故个人把玩的概率不大。

2. OBD 方式部署:

通过这种方式部署,只要满足 OceanBase 本身对硬件的要求即可。比如可以用最低 2C ,8GB 的配置来玩,普通笔记本都可以,堪称贫民玩法!

3. DOCKER 方式部署:

对硬件要求更低,不限制 OS 平台,更加贫民化。

4. 下载安装包来手动部署:

可以下载官方的 RPM 包来手动部署。 缺点是需要手动启动脚本、手动初始化等步骤,比较繁琐(比如在 UBUNTU 下,需要安装 Alien 来对 RPM 包进行转化,而且可能因为各种原因不成功,比如 KEY 过期等)!

本篇我来基于第二种贫民部署方法:在 UBUNTU 上用 OBD 工具来部署 OceanBase !为了节省资源,我选择1-0-0的方式,也即:只有一个 zone ,一台 Server ,一个obproxy(odp)实例。

我的 UBUNTU 版本为 22.04.1 LTS ,OceanBase 版本为最新版 4.0 。选择 4.0 版本是因为比 3.0 版本部署来的简单。4.0 版本把所有安装包打包在一起,命名为 oceanbase-all-in-one.tar.gz ,里面包含了一个 shell 自动化脚本,便于一键安装!

此处省去 OS 配置参数、NTP 服务配置、创建用户以及属主等步骤, 只列举一些重要的步骤(不推荐生产使用,仅限自己把玩!)。

接下来我来演示下如何在 UBUNTU 上部署 OceanBase 。

1.创建数据目录、REDO 目录:

root@ytt-pc:/home# mkdir -p /data/1 /data/log1
root@ytt-pc:/home# chown -R admin.admin /data/1 /data/log1/

2.解压 oceanbase-all-in-one.tar.gz ,然后进入子目录,执行 install.sh 脚本即可安装本地软件包以及禁止 OBD 远程安装源。以下结果没出错,代表 OBD 环境初始化成功。

root@ytt-pc-super:/home/ytt/下载/oceanbase-all-in-one/bin# ./install.sh
   
...
   
add /home/ytt/下载/oceanbase-all-in-one/rpms/prometheus-2.37.1-10000102022110211.el7.x86_64.rpm to local mirror
Disable remote ok
   
#####################################################################
   
Install Finished 
=====================================================================
   
Setup Environment:     source ~/.oceanbase-all-in-one/bin/env.sh 
Quick Start:           obd demo 
   
More Details:          obd -h 
=====================================================================

本地部署的安装包列表: 之后在配置文件里只需配置 obproxy-ce 和 oceanbase-ce 即可快速尝鲜。

root@ytt-pc-super:~# obd mirror list local
+----------------------------------------------------------------------------------------------------------+
|                                            local Package List                                 |
+-------------------+---------+------------------------+--------+------------------------------------------+
| name              | version | release                | arch   | md5                                   |
+-------------------+---------+------------------------+--------+------------------------------------------+
| grafana           | 7.5.17  | 1                      | x86_64 | 1bf1f338d3a3445d8599dc6902e7aeed4de4e0d6 |
| obagent           | 1.2.0   | 4.el7                  | x86_64 | 0e8f5ee68c337ea28514c9f3f820ea546227fa7e |
| obproxy-ce        | 4.0.0   | 5.el7                  | x86_64 | de53232a951184fad75b15884458d85e31d2f6c3 |
| oceanbase-ce      | 4.0.0.0 | 100000272022110114.el7 | x86_64 | 42611dc51ca9bb28f36e60e4406ceea4a74914c7 |
| oceanbase-ce-libs | 4.0.0.0 | 100000272022110114.el7 | x86_64 | 188919f8128394bf9b62e3989220ded05f1d14da |
| prometheus        | 2.37.1  | 10000102022110211.el7  | x86_64 | 58913c7606f05feb01bc1c6410346e5fc31cf263 |
+-------------------+---------+------------------------+--------+------------------------------------------+

3.来手工编辑一个简单的 1-0-0 配置文件(可以从 OBD 安装目录下找模板来修改):为了快速部署,我们把 datafile_size 和 log_disk_size 调成固定值,并且关闭生产模式(集群名为 obytt100)!

root@ytt-pc-super:/home/ytt/config# cat obytt100.yaml 
oceanbase-ce:
servers:
- 127.0.0.1
global:
memory_limit: 9G
system_memory: 3G
datafile_size: 30G
log_disk_size: 30G
devname: lo
cpu_count: 32
production_mode: false
cluster_id: 100
cluster: obytt100
appname: obytt100
  127.0.0.1:
mysql_port: 2881
rpc_port: 2882
home_path: /home/admin/oceanbase-ce
data_dir: /data/1
redo_dir: /data/log1
zone: zone1
obproxy-ce:
 servers:
- 127.0.0.1
global:
home_path: /home/admin/obproxy-ce
skip_proxy_sys_private_check: true
enable_strict_kernel_release: false
proxy_mem_limited: 2G
prometheus_listen_port: 2884
listen_port: 2883
 127.0.0.1:
enable_cluster_checkout: false
depends:
- oceanbase-ce

4.用 OBD 来部署1-0-0的 OceanBase :出现 obytt100 deployed 代表部署成功!

root@ytt-pc-super:/home/ytt/config# obd cluster deploy obytt100 -c obytt100.yaml 
[WARN] Use centos 7 remote mirror repository for ubuntu 22.04
[WARN] Use centos 7 remote mirror repository for ubuntu 22.04
...
obytt100 deployed

5.启动 OceanBase 和 obproxy :出现 obytt100 running 代表启动成功。

root@ytt-pc-super:/home/ytt/config# obd cluster start obytt100
...
Start obproxy ok
obproxy program health check ok
Connect to obproxy ok
Initialize cluster ok
Wait for observer init ok
+---------------------------------------------+
|                   observer                  |
 +-----------+---------+------+-------+--------+
| ip        | version | port | zone  | status |
+-----------+---------+------+-------+--------+
| 127.0.0.1 | 4.0.0.0 | 2881 | zone1 | ACTIVE |
+-----------+---------+------+-------+--------+
obclient -h127.0.0.1 -P2881 -uroot -Doceanbase
   
+---------------------------------------------+
|                   obproxy                   |
+-----------+------+-----------------+--------+
| ip        | port | prometheus_port | status |
+-----------+------+-----------------+--------+
| 127.0.0.1 | 2883 | 2884            | active |
+-----------+------+-----------------+--------+
obclient -h127.0.0.1 -P2883 -uroot -Doceanbase
obytt100 running

6.进入 sys 租户,执行简单的命令,测试下连接:自此部署成功。

root@ytt-pc-super:/home/ytt/config# obclient -h127.1 -P 2883 -uroot@sys#obytt100 -e "show databases"
+--------------------+
| Database           |
+--------------------+
| information_schema |
| LBACSYS            |
| mysql              |
| oceanbase          |
| ORAAUDITOR         |
| SYS                |
| test               |
+--------------------+

总结:

在非 CENTOS / REDHAT 系列 OS 部署 OceanBase 集群,需要使用 OBD(ob-deploy)工具,屏蔽远程仓库,从本地安装。


http://lihuaxi.xjx100.cn/news/327553.html

相关文章

实战演练 | 使用 Navicat 在 MySQL 中存储图像

近年来,Web应用程序中的图像数量一直在稳定增长。还需要在不同尺寸的图像之间进行区分,例如缩略图,网络显示图像等。例如,我最近开发的一个应用程序显示新闻项目,其中每个项目都有缩略图和主要文章图像。另一个应用程序…

蛋白类产品改性 荧光标记;偶连抗体多肽或者聚合物或其他小分子偶连蛋白文章介绍

蛋白类产品改性 荧光标记;偶连抗体多肽或者聚合物或其他小分子偶连蛋白 修饰改性荧光标记的蛋白有: BSA牛血清白蛋白, HAS人血清白蛋白, Streptavidins链霉亲和素,Concanavalin A 刀豆球蛋白 Transferrin 转铁蛋白, Protein A 重组蛋白A, Protein G 重…

sokcet常用配置

非阻塞模式 套接字有两种工作模式: 阻塞模式: 阻塞调用是指调用结果返回之前,当前线程会被挂起。该进程被标记为睡眠状态并被调度出去。函数只有在得到结果之后才会返回。当socket工作在阻塞模式的时候, 如果没有数据的情况下调…

HikariCP实战 | 通过查看源码分析如何解决maxLifeTime配置问题

目录1、追本溯源2、解决hikariCP的maxLifetime配置出现以下warn问题3、具体解决步骤(查看源码)1、追本溯源 很多年前在stackoverflow上写过一篇文章: https://stackoverflow.com/questions/28180562/hikaricp-and-maxlifetime# hikariCP是非…

基于web的老年保健品销售系统/保健品销售系统

摘 要 为了解决用户便捷地在网上购物,本文设计和开发了一个老年保健品销售系统。本系统是基于web架构设计,SSM框架 ,使用Mysql数据库管理,综合采用JSP模式来完成系统的相关功能。主要实现了管理员与用户的注册与登陆&#xff0…

计算机毕业设计Java汽车售后服务管理系(源代码+数据库+系统+lw文档)

计算机毕业设计Java汽车售后服务管理系(源代码数据库系统lw文档) 计算机毕业设计Java汽车售后服务管理系(源代码数据库系统lw文档)本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开发软件:idea eclipse 前端技术&#xf…

Polygon zkEVM中的子约束系统

1. 引言 前序博客有: Polygon zkEVM工具——PIL和CIRCOM Polygon zkEVM中主要设计了3种子约束系统: 1)Permutation check子约束系统:PIL中的关键字为is。 2)Plookup 子约束系统:PIL中的关键字为in。 …

d原子是无锁的吗

原文 文档说: 原子方式加mod到val引用的值,并返回先前val保存的值.此操作是无锁且原子的. 查看实现是: lock; xadd[%0], %1;真是无锁的吗?可用cas来替换吗?伪码: int atomicFetchAdd(int * pAddr, int nIncr ) {while (true) {int ncur atomicLoad(pAddr);if (cas( pAddr,…