如何利用 Zeabur 实现 OceanBase 的一键部署
引言
- Zeabur 是一个功能强大且即开即用的自动化部署平台,它不仅能迅速部署多种应用,还支持一键安装 MySQL、PostgreSQL 等数据库服务。
-
Zeabur 拥有众多国内外用户,如 AFFiNE、Bytebase 等企业客户,以及大量全栈和独立开发者。将 OceanBase 集成进 Zeabur 的 第三方服务市场,将能显著降低 OceanBase 的应用门槛,并增强与开发者当前技术栈及开发流程的集成效率。
Zeabur 模板
- 简单来说,Zeabur 模板 通过 YAML 配置来声明和编排服务,类似于 Docker Compose 和 Kubernetes Object 的能力。并且 Zeabur 还提供 CLI 工具来快速部署、创建和管理模板。
- 目前 Zeabur 支持两种类型的服务: Docker 镜像和 Git 代码。因此,只需要按照 Zeabur 的 模板语法,声明 OceanBase 服务的部署逻辑即可。
OceanBase 部署模板
- OceanBase 服务的部署模板如下:
# yaml-language-server: $schema=https://schema.zeabur.app/template.json
apiVersion: zeabur.com/v1
kind: Template
metadata:name: OceanBase
spec:description: An enterprise distributed relational database with high availability, high performance, horizontal scalability, and compatibility with SQL standards.coverImage: https://mdn.alipayobjects.com/huamei_fhnyvh/afts/img/A*qI5lT4lL1PEAAAAAAAAAAAAAemfOAQ/originalicon: https://avatars.githubusercontent.com/u/82347605tags:- Databasereadme: |An enterprise distributed relational database with high availability, high performance, horizontal scalability, and compatibility with SQL standards.## Environment VariablesWhen you deploy the OceanBase service, Zeabur will automatically inject the relevant environment variables into other services.- `OB_HOST`: The hostname of the OceanBase service.- `OB_PORT`: The port of the OceanBase service.- `OB_TENANT`: The tenant of the OceanBase service.- `OB_USERNAME`: The username for the OceanBase service.- `OB_PASSWORD`: The password for the OceanBase service.- `OB_URI` or `OB_CONNECTION_STRING`: The connection string for the OceanBase service.services:- name: oceanbaseicon: https://avatars.githubusercontent.com/u/82347605template: PREBUILTspec:source:image: oceanbase/oceanbase-ce:4.3.5.0-100000202024123117ports:- id: databaseport: 2881type: TCPvolumes:- id: datadir: /data/1- id: logdir: /data/log1instructions:- type: TEXTtitle: Command to connect to your OceanBasecontent: mysql -h${PORT_FORWARDED_HOSTNAME} -P${DATABASE_PORT_FORWARDED_PORT} -u${OB_USERNAME}@${OB_TENANT} -p${OB_PASSWORD}- type: TEXTtitle: OceanBase hostcontent: ${PORT_FORWARDED_HOSTNAME}category: Hostname & Port- type: TEXTtitle: OceanBase portcontent: ${DATABASE_PORT_FORWARDED_PORT}category: Hostname & Port- type: TEXTtitle: OceanBase tenantcontent: ${OB_TENANT}category: Credentials- type: TEXTtitle: OceanBase usernamecontent: ${OB_USERNAME}category: Credentials- type: PASSWORDtitle: OceanBase passwordcontent: ${OB_PASSWORD}category: Credentialsenv:# custom env in zeaburOB_HOST:default: ${CONTAINER_HOSTNAME}expose: truereadonly: trueOB_PORT:default: ${DATABASE_PORT}expose: truereadonly: trueOB_TENANT:default: ${OB_TENANT_NAME}expose: truereadonly: trueOB_USERNAME:default: rootexpose: truereadonly: trueOB_PASSWORD:default: ${OB_TENANT_PASSWORD}expose: truereadonly: true# oceanbase-ce docker built-in envOB_SYS_PASSWORD:default: ${PASSWORD}expose: truereadonly: trueOB_TENANT_PASSWORD:default: ${PASSWORD}expose: truereadonly: trueOB_TENANT_NAME:default: testexpose: truereadonly: true
localization:zh-CN:description: 为现代数据架构打造的分布式数据库。readme: |为现代数据架构打造的分布式数据库。## 环境变量当您部署 OceanBase 服务时,Zeabur 会自动将相关的环境变量注入到其他服务中。- `OB_HOST`:OceanBase 服务的主机名。- `OB_PORT`:OceanBase 服务的端口。- `OB_TENANT`:OceanBase 服务的租户。- `OB_USERNAME`:OceanBase 服务的用户名。- `OB_PASSWORD`:OceanBase 服务的密码。- `OB_URI` 或 `OB_CONNECTION_STRING`:OceanBase 服务的连接字符串。zh-TW:description: 為現代數據架構打造的分散式資料庫。readme: |為現代數據架構打造的分散式資料庫。## 環境變數當您部署 OceanBase 服務時,Zeabur 會自動將相關的環境變數注入到其他服務中。- `OB_HOST`:OceanBase 服務的主機名稱。- `OB_PORT`:OceanBase 服務的連接埠。- `OB_TENANT`:OceanBase 服務的租戶。- `OB_USERNAME`:OceanBase 服務的使用者名稱。- `OB_PASSWORD`:OceanBase 服務的密碼。- `OB_URI` 或 `OB_CONNECTION_STRING`:OceanBase 服務的連線字串。
- 该模板已发布到 Zeabur 的服务市场 OceanBase Deploy Guide。

一键部署 OceanBase
添加独立服务器
- OceanBase 部署规格 如下:

📢️ 注意: 服务器的可用内存 >= 6G,否则 OceanBase 会启动失败,可通过free -h命令查看。
- 在 Zeabur 上 添加独立服务器 (如果没有服务器,也可以在 Zeabur 上直接购买,这里我选择阿里云的 ECS):

📢 部分用户可能对于 ECS 的端口访问有安全要求,如果不想全网开放、只针对 Zeabur 开放访问,需要针对 Zeabur 所在网段进行配置。可以参考 这个案例 在 Discord 上提单咨询,Zeabur 的技术支持人员会提供解决方案。
- 在添加的服务器上「新建项目」。

部署 OceanBase 服务
- 在新建的项目上「添加服务 -> 从模板部署 -> 搜索并选择 OceanBase」:

- 如果是国内的服务器,则可能会遇到镜像拉取失败的问题,可以选择「更换国内镜像源」:

- 然后选择搜索结果的第一个:

- 镜像地址回填之后,点击「更新」会重新发起部署:

- 等待几分钟之后,即可部署成功:

- 部署日志如下:

连接 OceanBase
- 复制数据库连接串:

- 使用 MySQL 命令行连接 OceanBase:

- 更多用法可参考 OceanBase 官方文档 https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002059286。
环境变量
- 目前仅透出以下环境变量 (如有更多诉求,👏🏻 欢迎留言评论):

- 完整的环境变量可参考 https://hub.docker.com/r/oceanbase/oceanbase-ce。
相关文章:
如何利用 Zeabur 实现 OceanBase 的一键部署
引言 Zeabur 是一个功能强大且即开即用的自动化部署平台,它不仅能迅速部署多种应用,还支持一键安装 MySQL、PostgreSQL 等数据库服务。 Zeabur 拥有众多国内外用户,如 AFFiNE、Bytebase 等企业客户,以及大量全栈和独立开发者。将…...
计算机网络进化论:从比特流到量子通信的深层解构
第一章 物理媒介与链路层(1960-1970) 1.1 比特流物理编码 // 曼彻斯特编码实现 vector<bool> manchester_encode(uint8_t byte) {vector<bool> bits;for(int i=7; i>=0; --i) {bool bit = (byte >> i) & 1;bits.push_back(bit); // 前半周期bits…...
超参数优化算法:scikit-opt库、Scikit-Optimize库
1 scikit-opt库:https://www.cnblogs.com/luohenyueji/p/18333387 https://blog.csdn.net/weixin_45750972/article/details/124683402 a 差分进化算法 (Differential Evolution):一种基于群体搜索的优化算法,通过模拟生物进化的过程来寻找最…...
go语言学习教程推荐,零基础到做项目
一、基础入门阶段 官方教程(免费) • A Tour of Go:交互式入门教程,边学边练 • Go by Example:通过300代码片段学习语法 入门书籍 • 📘《Go语言圣经》中文版(免费在线阅读)&#…...
【商城实战(30)】从0到1搭建商城数据分析功能,开启数据驱动增长引擎
【商城实战】专栏重磅来袭!这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建,运用 uniapp、Element Plus、SpringBoot 搭建商城框架,到用户、商品、订单等核心模块开发,再到性能优化、安全加固、多端适配…...
(hash表+vector 数位和相等数对的最大和)leetcode 2342
一定要断点调试看看数据对不对的上!!!不然很容易弄不清楚值和下标 这个题意思是在nums中找出相同数位和的值 如 数位和为7 nums中符合要求的有 43,7 在这些数中选两个相加取最大值,再与其他数位和取得的相加最大值比…...
c++中字符串string常用的函数
在C中, std::string 类有许多常用函数,以下是一些常见的: 1. length() 或 size() :返回字符串的长度(字符个数),二者功能相同。例如: #include <iostream> #include <str…...
NO.39十六届蓝桥杯备战|结构体八道练习|加号小于号运算符重载|自定义排序(C++)
加号运算符重载_牛客题霸_牛客网 #include <iostream> using namespace std;class Time {public:int hours; // 小时int minutes; // 分钟Time() {hours 0;minutes 0;}Time(int h, int m) {this->hours h;this->minutes m;}void show() {cout <<…...
kmp报错→Cannot find skiko-windows-x64.dll.sha256
1、前言 学习kmp(Kotlin MultiPlatform简称)过程中报了错误,这个报错在直接运行desktop的main方法才会出现,用gradle运行却不会报错,新建的kmp项目也不会出现,我学习的写了一些代码的项目才会出现。 运…...
Cocos Creator Shader入门实战(四):预处理宏定义和Chunk
引擎: 3.8.5 您好,我是鹤九日! 回顾 学习Shader,前期是让人烦躁无味的,后期可能就是各种的逻辑让人抓耳挠腮。 一成不变的内容:遵循引擎设定的规则,理解引擎要求的规范。 这里,简单…...
K8S快速部署
前置虚拟机环境正式部署BUG解决 前置虚拟机环境 每个虚拟机配置一次就好 #关闭防火墙 systemctl stop firewalld systemctl disable firewalld #关闭 selinux sed -i s/enforcing/disabled/ /etc/selinux/config # 永久 setenforce 0 # 临时 #关闭 swap swapoff -a # 临时 vi…...
汽车PKE无钥匙进入系统一键启动系统定义与原理
汽车智能钥匙(PKE无钥匙进入系统)一键启动介绍 系统定义与原理 汽车无钥匙进入系统,简称PKE(Passive Keyless Entry),该系统采用了RFID无线射频技术和车辆身份编码识别系统,率先应用小型化、小…...
使用 VLOOKUP 和条件格式在 Excel 中查找并标红匹配的串号
使用 VLOOKUP 和条件格式在 Excel 中查找并标红匹配的串号 你的步骤非常详细且清晰,能够帮助用户在 Excel 中通过 VLOOKUP 和条件格式来查找并标红匹配的串号。以下是对你提供的步骤的简要总结和补充说明: 1. 添加“是否匹配”列 在 a.xlsx 中新增一列…...
WPF程序使用AutoUpdate实现自动更新
AutoUpdate.NET使用 一、AutoUpdater.NET 简介 AutoUpdater.NET 是一个开源库,支持从各种源(如GitHub、FTP、HTTP服务器等)下载并安装更新。它提供了灵活的配置选项,允许开发者根据需求定制更新检查逻辑和用户体验。 二、安装 …...
Dify平台离线镜像部署
Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非技术人员,也能参与到 AI 应用的定义和数据运营过程中。 前提…...
每日Attention学习28——Strip Pooling
模块出处 [CVPR 20] [link] Strip Pooling: Rethinking Spatial Pooling for Scene Parsing 模块名称 Strip Pooling (SP) 模块结构 模块特点 本质是空间注意力的一种使用横/纵两个方向的条形池化获得一维方向上的重要程度,结合后便可以扩展至二维方向 模块代码 …...
Android Room 框架公共模块源码深度剖析(四)
一、引言 在 Android 开发中,数据持久化是一个常见的需求。Android Room 框架作为 Android Jetpack 组件的一部分,为开发者提供了一个抽象层,使得在 SQLite 数据库上进行数据操作变得更加简单和高效。Room 框架包含多个模块,其中…...
玩转python:通俗易懂掌握高级数据结构-collections模块之UserDict
引言 UserDict是Python中collections模块提供的一个强大工具,它是dict的封装类,允许用户自定义字典的行为。通过继承UserDict,开发者可以轻松扩展字典的功能,实现自定义的字典逻辑。本文将详细介绍UserDict的关键用法和特性&…...
ollama docker设置模型常驻显存
参考: https://github.com/ollama/ollama/issues/5272 https://deepseek.csdn.net/67cfd7c93b685529b708fdee.html 通过-e传入环境变量,ollama运行: docker run -d --gpusall -e OLLAMA_KEEP_ALIVE-1 -v ollama:/root/.ollama -p 11434:114…...
双3060、Ubuntu22.04、cuda12.8安装deepseek 32b-Q8
以下是针对双RTX 3060显卡(12GB显存)在Ubuntu 22.04系统部署DeepSeek-R1-32b-qwen-distill-q8模型的完整流程,结合最新技术规范与魔塔社区资源: 一、驱动与CUDA环境配置 1. 禁用开源驱动 bash sudo tee /etc/modprobe.d/blackli…...
无再暴露源站!群联AI云防护IP隐匿方案+防绕过实战
一、IP隐藏的核心原理 群联AI云防护通过三层架构实现源站IP深度隐藏: 流量入口层:用户访问域名解析至高防CNAME节点(如ai-protect.example.com)智能调度层:基于AI模型动态分配清洗节点,实时更新节点IP池回…...
Chrome 调试器第二次连接不上?
一、连接不上 当使用 chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222") 连接 Chrome 调试器时,调试一次后就连不上,可能由以下几种原因导致: 1. Chrome 实例关闭 原因:在调试…...
【深度学习|目标检测】YOLO系列anchor-based原理详解
YOLO之anchor-based 一、关于anchors的设置二、网络如何利用anchor来训练关于register_buffer训练阶段的anchor使用推理阶段的anchor使用 三、训练时的正负样本匹配静态策略:跨分支采样跨anchor采样跨grid采样 动态策略 总结起来其实就是:基于anchor-bas…...
Linux 入门:权限的认识和学习
目录 一.shell命令以及运行原理 二.Linux权限的概念 1.Linux下两种用户 cannot open directory .: Permission denied 问题 2.Linux权限管理 1).是什么 2).为什么(权限角色目标权限属性) 3).文件访问者的分类(角色) 4).文…...
搭建opensbi+kernel+rootfs及基本设备驱动开发流程
目录 一.编译qemu 运行opensbikernelrootfs 1.编译qemu-9.1.1 2.安装riscv64编译器 3. 编译opensbi 4.编译kernel 5.编译rootfs 设备驱动开发流程 1.安装 RISC-V 交叉编译工具链 2.驱动开发准备 3.编写简易中断控制器驱动(PLIC) 4.配置内核…...
QT非UI设计器生成界面的国际化
目的 UI设计器生成界面的国际化,比较容易实现些,因为有现成的函数可以调用,基本过程如下: void MainWindow::on_actLang_CN_triggered() {//中文界面qApp->removeTranslator(trans);delete trans;transnew QTranslator;trans…...
python | 输入日期,判断这一天是这一年的第几天
题目: 使用 python 编程,实现输入日期,判断这一天是这一年的第几天? 具体实现代码如下: import datetime year input(请输入年份:) month input(请输入月份:) day input(请输入天:) date…...
openai 标准化协议 Structured Outputs 具体示例教程
Structured Outputs 具体示例教程 场景:个人财务管理助手 假设我们要构建一个 AI 助手,帮助用户记录和管理个人财务支出。用户可以输入自然语言描述(如“昨天我花了50元买了午餐”),助手将提取关键信息并以结构化 JS…...
单片机开发资源分析的实战——以STM32F103C8T6为例子的单片机资源分析
目录 第一点:为什么叫STM32F103C8T6 从资源手册拿到我们的对STM32F103C8T6的资源描述 第二件事情,关心我们的GPIO引脚输出 第三件事情:去找对应外设的说明部分 前言 本文章隶属于项目: Charliechen114514/BetterATK: This is…...
Maven | 站在初学者的角度配置
目录 Maven 是什么 概述 常见错误 创建错误代码示例 正确代码示例 Maven 的下载 Maven 依赖源 Maven 环境 环境变量 CMD测试 Maven 文件配置 本地仓库 远程仓库 Maven 工程创建 IDEA配置Maven IDEA Maven插件 Maven 是什么 概述 Maven是一个项目管理和构建自…...
