OceanBase 初探学习历程之——安装部署
一、介绍
OceanBase 数据库是一个原生的分布式关系数据库,它是完全由阿里巴巴和蚂蚁集团自主研发 的项目。OceanBase 数据库构建在通用服务器集群上,基于 Paxos 协议和分布式架构,提供 金融级高可用和线性伸缩能力,不依赖特定硬件架构,具备高可用、线性扩展、高性能、低成 本等核心技术优势。
OceanBase 数据库具有如下特点:
- 高可用 单服务器故障能够自愈,支持跨城多机房容灾,数据零丢失,可满足金融行业 6 级容灾标 准(RPO=0,RTO
- 在线性扩展 透明扩展,自动负载均衡,应用透明的水平扩展,集群规模可超过 1500 节点,数据量可达 PB 级,单表记录万亿行。
- MySQL/Oracle 高度兼容 社区版兼容 MySQL 协议、语法和使用习惯,MySQL 客户端工具可以直接访问 OceanBase 数据库。 企业版兼容 MySQL、Oracle 协议,需要使用 OceanBase 自己的驱动才可以访问 OceanB ase 数据库的 Oracle 租户。
说明:MySQL 从 5.6 开始兼容,Oracle 从 Oracle 11g 开始兼容
- 高性能 准内存级数据变更操作、独创的编码压缩技术,结合线性水平扩展,TPC-C 测试达到 7.07 亿 tpmC。
- 低成本 使用 PC 服务器和低端 SSD,高存储压缩率降低存储成本,高性能降低计算成本,多租户 充分利用系统资源。
- 多租户 原生支持多租户架构,同一套数据库集群可以为多个独立业务提供服务,租户间数据隔离, 降低部署和运维成本。
二、安装部署
2.1 安装前准备
OceanBase 数据库是一个分布式集群产品,在生产环境中至少要求三台机器,学习环境可以部 署单机版本。OceanBase 数据库的部署跟传统数据库的部署相比,存在很多共同的地方,对操 作系统硬件、软件设置、文件系统等会有一些最佳实践建议,这些是 OceanBase 数据库发挥 高性能稳定运行的基础。社区版提供了一些工具保证 OceanBase 数据库可以实现一定程度的自动化。
软件包下载地址如下:
- 官网下载:https://open.oceanbase.com/softwareCenter/community
- GitHub 下载:https://github.com/oceanbase/oceanbase/releases/
- 阿里云 Yum 源:https://mirrors.aliyun.com/oceanbase/OceanBase.repo
2.2 安装部署资源要求
OceanBase 数据库运行时会对主机资源有一些要求,主要是 CPU、内存和磁盘空间。安装 OceanBase 数据库的目的不同,对资源的要求也不同。
注意:这里性能测试环境和生产环境的资源要求只是建议。在社区版后续版本,会进一步降低对内 存的要求。
OceanBase 数据库对操作系统也有一些要求,目前仅支持以下系统:
- Redhat / CentOS 7.x/8.x
- SUSE / OpenSUSE 15.x
- Anlios 7.x/8.x
- Debian 9.x
- Ubuntu 20.x
- 当然实践其他操作系统机遇以上内核高版本也支持。
2.3 安装过程
2.3.1、时间同步
sudo yum install ntp ntpdate -y
sudo crontab -e
*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com
2.3.2 设置limit
sudo vim /etc/security/limits.conf
root soft nofile 655350
root hard nofile 655350
* soft nofile 655350
* hard nofile 655350
* soft stack 20480
* hard stack 20480
* soft nproc 655360
* hard nproc 655360
* soft core unlimited
* hard core unlimited
2.3.3 设置sysctl系统参数
sudo vim /etc/sysctl.conf
## 网络优化
net.core.somaxconn = 2048
net.core.netdev_max_backlog = 10000
net.core.rmem_default = 16777216
net.core.wmem_default = 16777216
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216net.ipv4.ip_local_port_range = 3500 65535
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.tcp_syncookies = 0
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_slow_start_after_idle=0vm.swappiness = 0
vm.min_free_kbytes = 2097152# 此处为 OceanBase 数据库的 data 目录
kernel.core_pattern = /ob_data/core-%e-%p-%t
2.3.4 关闭防火墙和selinux
systemctl stop firewalld
systemctl disable firewalld
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
2.3.5 创建普通用户并设置密码
sudo useradd admin
sudo passwd admin
admin
2.3.6 硬盘规划
#ods环境配置,本地环境200G
/ob_data 1.2T #数据盘
/ob_redo 200G #存放 redo 日志
/home/admin/oceanbase 500G #存放 OceanBase 数据库的二进制文件和运行日志
2.4 部署模式
2.4.1 规划
其中一台作为ODP
采用三副本部署模式,使用三台机器部署OceantBase集群
2.4.2 使用yum安装OBD
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/oceanbase/OceanBase.repo
sudo yum install -y ob-deploy
2.4.3 安装oblibs
sudo yum install -y oceanbase-ce-libs
2.4.4 安装obclient
sudo yum install -y libobclient
sudo yum install -y obclient
2.4.5 创建目录并赋权
sudo mkdir -p /home/admin/oceanbase /ob_redo /ob_data /ob/obproxy
sudo chown -R admin.admin /home/admin/oceanbase /ob/obproxy /ob_data /ob_redo
2.4.6 修改初始化集群文件:#在主节点上执行
obd cluster autodeploy obtest -c distributed-with-obproxy-example.yaml
下载配置文件并修改:
https://github.com/oceanbase/obdeploy/blob/master/example/autodeploy/distributed-with-obproxy-example.yaml
user:username: adminpassword: admin
oceanbase-ce:servers:- name: server1ip: 172.16.79.57- name: server2ip: 172.16.79.58- name: server3ip: 172.16.79.59global:home_path: /home/admin/oceanbase data_dir: /ob_dataredo_dir: /ob_redoappname: obtestroot_password: cl8q!a#jrkYgMBHuproxyro_password: proxy@123server1:zone: zone1server2:zone: zone2server3:zone: zone3
obproxy:depends:- oceanbase-ceservers:- 172.16.79.136global:home_path: /ob/obproxycluster_name: obtestobproxy_sys_password: proxy@sys123observer_sys_password: proxy@123
2.4.7 初始化集群并查看
obd cluster autodeploy obtest -c distributed-with-obproxy-example.yaml
obd cluster list
2.4.8 配置优化
obclient -h 172.16.79.136 -u root@sys -P 2883 -p'密码'
2.4.9 查询及参数优化
#查询系统保留内存,用于程序运行
SHOW PARAMETERS LIKE 'system_memory'\G;
#查询ob内存分配限制百分比
SHOW PARAMETERS LIKE 'memstore_limit_percentage'\G;
#查询ob预设可用最大内存
SHOW PARAMETERS LIKE 'memory_limit'\G;
#查看资源分配情况,切换到oceanbase
SELECT * FROM gv$unit\G;
#并行查询相关参数:
SHOW VARIABLES LIKE '%paral%';
#查看压缩情况:
SHOW PARAMETERS LIKE 'default_compress'\G;
#sys租户下查看资源单元配置,切换到oceanbase
SELECT * FROM __all_unit_config\G;
优化
#设置系统保留内存ALTER system set system_memory='4G';#修改observer可以使用最大内存ALTER system set memory_limit='28G';#sys租户下修改资源单元配置:cpu/内存/硬盘等根据自己实际资源调整ALTER RESOURCE UNIT sys_unit_config MAX_CPU 1, MAX_MEMORY '2G', MAX_IOPS 10000,max_disk_size '20G', MAX_SESSION_NUM 9223372036854775807, MIN_CPU=1, MIN_MEMORY='2G', MIN_IOPS=5000;#并行查询参数优化:SET GLOBAL parallel_max_servers = 32;SET GLOBAL ob_max_parallel_degree = 128;SET GLOBAL parallel_servers_target=540;#修改内存分配限制百分比ALTER SYSTEM SET memstore_limit_percentage = '80';#慢查询执行时间阈值ALTER SYSTEM SET trace_log_slow_query_watermark = '1s';#cpu并发调度调整ALTER SYSTEM SET cpu_quota_concurrency = '4';ALTER SYSTEM SET resource_soft_limit = '100';#转储合并相关优化ALTER SYSTEM SET minor_freeze_times = 50;ALTER SYSTEM SET freeze_trigger_percentage = '60';ALTER SYSTEM SET data_copy_concurrency = 100;ALTER SYSTEM SET server_data_copy_out_concurrency = 10;ALTER SYSTEM SET server_data_copy_in_concurrency = 10;ALTER SYSTEM SET minor_warm_up_duration_time = '0s';ALTER SYSTEM SET memory_chunk_cache_size = 0;ALTER SYSTEM SET max_kept_major_version_number = '1';#事务相关优化ALTER SYSTEM SET clog_sync_time_warn_threshold = '1s';ALTER SYSTEM SET enable_one_phase_commit='False';#分区迁移速度控制ALTER SYSTEM SET data_copy_concurrency=40;ALTER SYSTEM SET server_data_copy_out_concurrency=20;ALTER SYSTEM SET server_data_copy_in_concurrency=20;#缓存刷新ALTER SYSTEM SET autoinc_cache_refresh_interval = '43200s';#系统相关,observer异常临时下线时间ALTER SYSTEM SET server_permanent_offline_time = '7200s';#关闭回收站以及truncate回滚参数SET GLOBAL recyclebin = 0;SET GLOBAL ob_enable_truncate_flashback = 0;#设置ob查询超时时间:默认10sset global ob_query_timeout = 20000000;#请求锁等待时间:为-1与ob查询超时时间相同SHOW VARIABLES LIKE 'ob_trx_lock_timeout';#事物超时时间:默认100s,保持默认SHOW VARIABLES LIKE 'ob_trx_timeout';#事物空闲超时时间:默认120s,保持默认SHOW VARIABLES LIKE 'ob_trx_idle_timeout';#设置查询时间阈值ALTER SYSTEM SET large_query_threshold = '10s';#设置弱一致性读版本号的刷新周期,表示不再刷新弱一致性读版本号,不提供单调读功能ALTER SYSTEM SET weak_read_version_refresh_interval = '0';#设置系统日志所能占用的磁盘 IO 带宽上限,超过丢掉ALTER SYSTEM SET syslog_io_bandwidth_limit = "10m";#设置系统日志级别ALTER SYSTEM SET syslog_level = "PERF";#用于设置每日合并工作的线程数ALTER SYSTEM SET merge_thread_count = "64";#用于设置数据坏块自检周期,为0表示不检测ALTER SYSTEM SET builtin_db_data_verify_cycle = "0";#设置合并时候数据列统计信息的采样率ALTER SYSTEM SET merge_stat_sampling_ratio = "1";#设置合并时宏块的校验级别,0表示不校验ALTER SYSTEM SET micro_block_merge_verify_level = "0";#设置触发全局冻结的租户使用内存阈值ALTER SYSTEM SET freeze_trigger_percentage = "50";#设置小合并时的并发线程数,期望提高转储的速度ALTER SYSTEM SET minor_merge_concurrency = 32;#增大 mini_merge 的线程数,期望提高 mini_merge 的速度(默认值为 3)。调大为 8 以后,发现会导致压测中 CPU 使用率有时飙升至 90%,对性能有影响。ALTER SYSTEM SET _mini_merge_concurrency = 8; #OceanBase 占系统总内存的比例,提高 OceanBase 可用的内存量ALTER SYSTEM SET memory_limit_percentage = 90; #obproxy优化#判断是否开启 PL 路由SHOW PROXYCONFIG LIKE 'enable_partition_table_route';ALTER PROXYCONFIG SET enable_partition_table_route = False;#判断是否开启 partition table 路由SHOW PROXYCONFIG LIKE 'enable_pl_route';ALTER PROXYCONFIG SET enable_pl_route = False;#OBProxy 所能接受的客户端最大连接数SHOW PROXYCONFIG LIKE 'client_max_connections';ALTER PROXYCONFIG SET client_max_connections = 20000;
2.4.10 创建使用租户
创建资源单元:unit1
CREATE RESOURCE UNIT unit1 MAX_CPU 8, MAX_MEMORY '12G', MAX_IOPS 10000,max_disk_size '80G', MAX_SESSION_NUM 9223372036854775807, MIN_CPU=6, MIN_MEMORY='12G', MIN_IOPS=5000; #查看资源单元 SELECT * FROM oceanbase.__all_unit_config;
创建资源池:
CREATE RESOURCE POOL pool1 UNIT='unit1',UNIT_NUM=1,ZONE_LIST=('zone1','zone2','zone3');
#查询资源池
select * from __all_resource_pool\G;
创建租户:
CREATE TENANT IF NOT EXISTS test charset='utf8mb4', replica_num=3, zone_list=('zone1','zone2','zone3'), primary_zone='zone1;zone2,zone3', resource_pool_list=('pool1');
#查询租户:
SELECT * FROM oceanbase.gv$tenant;
授权:
ALTER TENANT test SET VARIABLES ob_tcp_invited_nodes='%';
在test租户下,使用root登录,初始化的oceanbase的root密码为空:
obclient -h 172.16.79.136 -u root@test -P 2883 -p
#修改密码:
ALTER USER root IDENTIFIED BY '密码';
在test租户下创建用户并授权:
create user if not exists test@'%' identified by 'test';
grant all on *.* to test@'%';
使用test用户登录:
obclient -h 192.168.10.10 -P2883 -utest@test -ptest
到此位置基本完成基础安装部署,后续需要安装部署ocp监控 进行集群查看及监控,后续继续分享。
(若重要,处处都是办法;若不重要,比比皆是理由。)
相关文章:

OceanBase 初探学习历程之——安装部署
一、介绍 OceanBase 数据库是一个原生的分布式关系数据库,它是完全由阿里巴巴和蚂蚁集团自主研发 的项目。OceanBase 数据库构建在通用服务器集群上,基于 Paxos 协议和分布式架构,提供 金融级高可用和线性伸缩能力,不依赖特定硬件…...

Windows 下免费开源的多格式文件差异对比工具
软件介绍 有这样一款诞生于 2000 年、专为 Windows 系统打造的开源免费工具,截至 2025 年 1 月已更新至 2.16.46 版本,它就是文件与文件夹比较的得力助手。 其支持文本文件、Word、Excel、PPT 网页、图像等多种格式对比,利用高亮显示行内差…...

Vue3+element UI:使用el-dialog时,对话框不出现解决方案
解决方案:在<el-dialog>标签中,添加:append-to-body“true”*,对话框即可弹出。*...

postman调用ollama的api
按照如下设置,不需要设置key 保持长会话的方法 # 首次请求 curl http://localhost:11434/api/generate -d {"model": "deepseek-r1:32b","prompt": "请永久记住:110,1-12,之后所有数学计算必…...
PyTorch的dataloader制作自定义数据集
PyTorch的dataloader是用于读取训练数据的工具,它可以自动将数据分割成小batch,并在训练过程中进行数据预处理。以下是制作PyTorch的dataloader的简单步骤: 导入必要的库 import torch from torch.utils.data import DataLoader, Dataset定…...

如何调用 DeepSeek API:详细教程与示例
目录 一、准备工作 二、DeepSeek API 调用步骤 1. 选择 API 端点 2. 构建 API 请求 3. 发送请求并处理响应 三、Python 示例:调用 DeepSeek API 1. 安装依赖 2. 编写代码 3. 运行代码 四、常见问题及解决方法 1. API 调用返回 401 错误 2. API 调用返回…...

Hadoop-HA集群部署
集群的服务器规划: 配置免密登陆:(这里示范的是第一台服务器,其余的操作一样),免密登陆是为了执行脚本统一操作,启动,如(hdfs集群:1上启动2.5.6.7)…...

三、linux字符驱动详解
在上一节完成NFS开发环境的搭建后,本节将探讨Linux字符设备驱动的开发。字符设备驱动作为Linux内核的重要组成部分,主要负责管理与字符设备(如串口、键盘等)的交互,并为用户空间程序提供统一的读写操作接口。 驱动代码…...

【Research Proposal】基于提示词方法的智能体工具调用研究——研究问题
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: AIGC | ChatGPT 文章目录 💯前言💯研究问题1. 如何优化提示词方法以提高智能体的工具调用能力?2. 如何解决提示词方法在多模态任务中的挑战?3. 如何通过提示词优化智能体…...

【从0做项目】Java文档搜索引擎(9)烧脑终章!
阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 文章导读 零:项目结果展示 一:导入 二:问题引入 1:情…...

python: SQLAlchemy (ORM) Simple example using mysql in Ubuntu 24.04
mysql sql script: create table School 表 (SchoolId char(5) NOT NULL comment主鍵primary key,學校編號,SchoolName nvarchar(500) NOT NULL DEFAULT comment 學校名稱,SchoolTelNo varchar(8) NULL DEFAULT comment電話號碼,PRIMARY KEY (SchoolId) #主…...

如何为自己的 PDF 文件添加密码?在线加密 PDF 文件其实更简单
随着信息泄露和数据安全问题的日益突出,保护敏感信息变得尤为重要。加密 PDF 文件是一种有效的手段,可以确保只有授权用户才能访问或修改文档内容。本文将详细介绍如何使用 CleverPDF 在线工具为你的 PDF 文件添加密码保护,确保其安全性。 为…...

echarts 折线图动态基准线设置超出基准线标红
基准线属性:markLine 线条标红关键属性:visualMap 小于: lt (less than) 大于:gt (greater than) 小于等于:lte (Less than or equal to) 大于等于:gte (Greater than or equal to) 1、基础应用——2条基准…...

Part 3 第十二章 单元测试 Unit Testing
概述 第十二章围绕单元测试展开,阐述了单元测试的实践与重要性,通过对比其他测试类型,突出其特点,还介绍了单元测试的最佳实践、避免的反模式以及与测试替身相关的内容,为编写高质量单元测试提供指导。 章节概要 1…...
C++与Python:两种编程语言的区别
C和Python都是当今编程领域广泛使用的语言,它们各有特色,适用于不同的开发场景。本文将从语言特性、性能、学习难度、应用领域等多个方面探讨C与Python之间的区别。 一、语言特性 类型系统: C:是一种静态类型语言…...
Springboot 高频面试题
以下是Spring Boot的高频面试题及答案和底层原理解释: 基础概念 什么是Spring Boot,其主要特点是什么? 答案: Spring Boot本质上是一个建立在Spring框架之上的快速应用开发框架。其主要特点包括: 启动器:一…...

常用电脑,护眼软件推荐 f.lux 3400K | 撰写论文 paper
常用电脑?平均每天用 5 个小时?你就要考虑用一个护眼软件了,对皮肤也好。因为电脑屏幕有辐射,比如蓝光。 f.lux 作为一款专业护眼软件,值得使用。之前用了三年的 Iris Pro,现在 f.lux 做的更好了。 使用…...

MacOS下使用Ollama本地构建DeepSeek并使用本地Dify构建AI应用
目录 1 大白话说一下文章内容2 作者的电脑配置3 DeepSeek的本地部署3.1 Ollamal的下载和安装3.2 选择合适的deepseek模型3.3 安转deepseek 4 DifyDeepSeek构建Al应用4.1 Dify的安装4.1.1 前置条件4.1.2 拉取代码4.1.3 启动Dify 4.2 Dify控制页面4.3 使用Dify实现个“文章标题生…...
如何有效利用MYSQL的连接数
连接数配置2500~3000 依然发现连接不够用? -- 查看当前最大连接数 SHOW VARIABLES LIKE MAX_CONNECTIONS; -- 查看当前总链接数 SHOW STATUS LIKE Threads_connected; -- 查看当前进程明细 SHOW PROCESSLIST; 合理设置以下参数: 1. MySQL 的参数设置 …...

调用click.getchar()时Windows PyCharm无法模拟键盘输入
文章目录 问题描述解决方案参考文献 问题描述 调用 click.getchar() 时,Windows PyCharm 无法模拟键盘输入 解决方案 Run → Edit Configurations… → Modify options → Emulate terminal in output console 参考文献 Terminal emulator | PyCharm Documentati…...

python打卡day49
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...

2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
日常一水C
多态 言简意赅:就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过,当子类和父类的函数名相同时,会隐藏父类的同名函数转而调用子类的同名函数,如果要调用父类的同名函数,那么就需要对父类进行引用&#…...

windows系统MySQL安装文档
概览:本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容,为学习者提供全面的操作指导。关键要点包括: 解压 :下载完成后解压压缩包,得到MySQL 8.…...
背包问题双雄:01 背包与完全背包详解(Java 实现)
一、背包问题概述 背包问题是动态规划领域的经典问题,其核心在于如何在有限容量的背包中选择物品,使得总价值最大化。根据物品选择规则的不同,主要分为两类: 01 背包:每件物品最多选 1 次(选或不选&#…...