From b12b858fe56ef80271ba6bd67a7c0a143926c513 Mon Sep 17 00:00:00 2001 From: Rongfeng Fu Date: Tue, 2 Apr 2024 13:07:36 +0530 Subject: [PATCH] feat: support oceanbase-ce (#1180) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: support oceanbase-ce * chore: update version to 4.2.1 --------- Co-authored-by: 玉楼 --- apps/oceanbase/4.2.1/data.yml | 56 ++++++++++++++++++++++ apps/oceanbase/4.2.1/docker-compose.yml | 27 +++++++++++ apps/oceanbase/4.2.1/scripts/init.sh | 14 ++++++ apps/oceanbase/4.2.1/scripts/uninstall.sh | 7 +++ apps/oceanbase/README.md | 42 ++++++++++++++++ apps/oceanbase/data.yml | 18 +++++++ apps/oceanbase/logo.png | Bin 0 -> 3552 bytes 7 files changed, 164 insertions(+) create mode 100644 apps/oceanbase/4.2.1/data.yml create mode 100644 apps/oceanbase/4.2.1/docker-compose.yml create mode 100644 apps/oceanbase/4.2.1/scripts/init.sh create mode 100644 apps/oceanbase/4.2.1/scripts/uninstall.sh create mode 100644 apps/oceanbase/README.md create mode 100644 apps/oceanbase/data.yml create mode 100644 apps/oceanbase/logo.png diff --git a/apps/oceanbase/4.2.1/data.yml b/apps/oceanbase/4.2.1/data.yml new file mode 100644 index 00000000..6ca5d01e --- /dev/null +++ b/apps/oceanbase/4.2.1/data.yml @@ -0,0 +1,56 @@ +additionalProperties: + formFields: + - default: '' + edit: true + envKey: OB_ROOT_PASSWORD + labelEn: password of sys@root + labelZh: SYS租户密码 + required: false + type: password + - default: 2881 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number + - default: '' + edit: true + envKey: OB_INSTALL_PATH + labelEn: install_path + labelZh: 安装目录 (默认为1panel安装目录,需要最少10G空间) + required: false + type: text + - default: 'test' + edit: true + envKey: OB_TENANT_NAME + labelEn: tenant_name + labelZh: 租户名 + required: true + rule: paramCommon + type: text + - default: 6 + edit: true + envKey: OB_MEMORY_LIMIT + labelEn: memory_limit + labelZh: 内存 (单位:G) + required: true + rule: paramPort + type: number + - default: 5 + edit: true + envKey: OB_DATAFILE_SIZE + labelEn: datafile_size + labelZh: 数据文件大小 (单位:G) + required: true + rule: paramPort + type: number + - default: 5 + edit: true + envKey: OB_LOG_DISK_SIZE + labelEn: log_disk_size + labelZh: 日志文件大小 (单位:G) + required: true + rule: paramPort + type: number \ No newline at end of file diff --git a/apps/oceanbase/4.2.1/docker-compose.yml b/apps/oceanbase/4.2.1/docker-compose.yml new file mode 100644 index 00000000..38818615 --- /dev/null +++ b/apps/oceanbase/4.2.1/docker-compose.yml @@ -0,0 +1,27 @@ +version: '3' + +services: + oceanbase: + image: oceanbase/oceanbase-ce:4.2.1 + container_name: ${CONTAINER_NAME} + restart: always + environment: + OB_MEMORY_LIMIT: ${OB_MEMORY_LIMIT}G + OB_DATAFILE_SIZE: ${OB_DATAFILE_SIZE}G + OB_LOG_DISK_SIZE: ${OB_LOG_DISK_SIZE}G + OB_ROOT_PASSWORD: ${OB_ROOT_PASSWORD} + OB_TENANT_NAME: ${OB_TENANT_NAME} + MODE: mini + OB_CLUSTER_NAME: ob_1panel + networks: + - 1panel-network + volumes: + - ${HOME_PATH:-./data/ob}:/root/ob + - ./data/.obd:/root/.obd + ports: + - ${PANEL_APP_PORT_HTTP}:2881 + labels: + createdBy: "Apps" +networks: + 1panel-network: + external: true diff --git a/apps/oceanbase/4.2.1/scripts/init.sh b/apps/oceanbase/4.2.1/scripts/init.sh new file mode 100644 index 00000000..7d7e61d0 --- /dev/null +++ b/apps/oceanbase/4.2.1/scripts/init.sh @@ -0,0 +1,14 @@ +source ./.env + +LOG='./init.log' +mkdir -p $PWD/data/.obd 2>&1 >> $LOG || exit 11 +if [ "x$OB_INSTALL_PATH" != "x" ]; then + HOME_PATH="$OB_INSTALL_PATH/ob/$CONTAINER_NAME" + echo "link $HOME_PATH to $PWD/data/ob" >> $LOG + mkdir -p $HOME_PATH 2>&1 >> $LOG || exit 10 + ln -sf $HOME_PATH ./data/ob 2>&1 >> $LOG || exit 12 + echo "HOME_PATH=$HOME_PATH" >> ./.env +else + mkdir -p $PWD/data/ob 2>&1 >> $LOG || exit 10 + echo "install path not set" >> $LOG +fi diff --git a/apps/oceanbase/4.2.1/scripts/uninstall.sh b/apps/oceanbase/4.2.1/scripts/uninstall.sh new file mode 100644 index 00000000..e56fa561 --- /dev/null +++ b/apps/oceanbase/4.2.1/scripts/uninstall.sh @@ -0,0 +1,7 @@ +source ./.env + +LOG='./uninstall.log' + +HOME_PATH=`realpath $PWD/data/ob/` +echo "remove $HOME_PATH" >> $LOG +rm -fr $PWD/data/ob/ 2>&1 >> $LOG || exit 10 \ No newline at end of file diff --git a/apps/oceanbase/README.md b/apps/oceanbase/README.md new file mode 100644 index 00000000..9544e644 --- /dev/null +++ b/apps/oceanbase/README.md @@ -0,0 +1,42 @@ +# OceanBase + +为现代数据架构打造的开源分布式数据库。兼容 MySQL 的单机分布式一体化国产开源数据库,具有原生分布式架构,支持金融级高可用、透明水平扩展、分布式事务、多租户和语法兼容等企业级特性。OceanBase 内核通过大规模商用场景的考验,已服务众多行业客户;面向未来携手社区生态伙伴,共建开源开放的数据库内核和生态。 + +## 使用说明 + +1. 默认配置为最小配置,请勿再调小 +2. SYS租户密码是SYS租户root账号的密码,并非业务租户的密码,业务租户请登录业务租户后自行修改 +3. 请使用业务租户,不要直接使用SYS租户 +4. 您可以使用 mysql 客户端链接业务租户,比如 mysql -h127.0.0.1 -P2881 -uroot@test + 1. 其中 2881 为默认端口,请自行修改为对应的配置端口 + 2. 其中 test 为默认业务租户名,请自行修改为对应的配置租户名 +5. 请确保安装目录为剩余空间大于 数据文件大小 + 日志文件大小 +6. OceanBase 的存储空间是预分配的,因此数据库启动时便会根据配置占用对应的空间,不必因为磁盘使用空间突然增加而担忧 +7. 卸载时将自动清理数据文件,卸载前请确保数据已备份 + +## 核心特性 + +### 高可用 + +独创 “三地五中心” 容灾架构方案,建立金融行业无损容灾新标准。支持同城/异地容灾,可实现多地多活,满足金融行业 6 级容灾标准(RPO=0,RTO< 8s),数据零丢失。 + +### 高兼容 + +高度兼容 Oracle 和 MySQL,覆盖绝大多数常见功能,支持过程语言、触发器等高级特性,提供自动迁移工具,支持迁移评估和反向同步以保障数据迁移安全,可支撑金融、政府、运营商等关键行业核心场景替代。 + +### 水平扩展 + +实现透明水平扩展,支持业务快速的扩容缩容,同时通过准内存处理架构实现高性能。支持集群节点超过数千个,单集群最大数据量超过 3PB,最大单表行数达万亿级。 + +### 低成本 + +基于 LSM-Tree 的高压缩引擎,存储成本降低 70% - 90%;原生支持多租户架构,同集群可为多个独立业务提供服务,租户间数据隔离,降低部署和运维成本。 + +### 实时 HTAP + +基于“同一份数据,同一个引擎”,同时支持在线实时交易及实时分析两种场景,“一份数据”的多个副本可以存储成多种形态,用于不同工作负载,从根本上保持数据一致性。 + +### 安全可靠 + +自 2010 年开始完全自主研发,代码级可控,自研单机分布式一体化架构,连续多年通过大规模金融核心场景的可靠性验证;完备的角色权限管理体系,数据存储和通信全链路透明加密,支持国密算法,通过等保三级专项合规检测。 + diff --git a/apps/oceanbase/data.yml b/apps/oceanbase/data.yml new file mode 100644 index 00000000..bd2eb316 --- /dev/null +++ b/apps/oceanbase/data.yml @@ -0,0 +1,18 @@ +name: OceanBase +tags: + - 数据库 +title: OceanBase +description: 兼容 MySQL 的单机分布式一体化国产开源数据库 +additionalProperties: + key: oceanbase + name: OceanBase + tags: + - Database + shortDescZh: 兼容 MySQL 的单机分布式一体化国产开源数据库 + shortDescEn: Dstributed Cluster + type: runtime + crossVersionUpdate: false + limit: 0 + website: https://open.oceanbase.com/ + github: https://github.com/oceanbase/oceanbase + document: https://www.oceanbase.com/docs diff --git a/apps/oceanbase/logo.png b/apps/oceanbase/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f4436f966e5e78a949d533cde4f201ab80950672 GIT binary patch literal 3552 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 ahWsD6r?F3a<`-fB0000