OceanBase 4.3版本向量数据库部署
OceanBase 4.3版本向量数据库部署
- 安装包准备
- 最低资源配置
- 重要的准备事项
- 服务器配置
- 操作系统
- 内核参数
- BIOS设置
- 磁盘挂载
- 网卡设置
- 部署OAT工具
- 初始化OBServer服务器
- 使用oatcli部署OB集群
- 安装OceanBase软件
- 初始化OceanBase集群
- 启用向量检索功能
OceanBase最新的V4.3版本开始支持向量数据库特性。
数据库版本:OceanBase V4.3.5
OceanBase向量版支持图形化部署和命令行部署:
- 图形化部署:需要使用OAT工具部署OCP平台,再通过OCP平台部署数据库。
- 命令行部署:使用oatcli工具部署数据库。
如果使用图形化界面部署,确保能够访问部署工具所在服务器的7000和8080端口。
安装包准备
OceanBase企业版部署需要的软件安装包如下(适用于单机版和多节点集群):
组件 | 安装包名称 | 说明 |
---|---|---|
oat-all-in-one安装包 | X86_64平台:oat-all-in-one-x86-431.tar | 用于安装OAT |
OCP镜像 | X86_64平台:ocp_4.3.5_20250327_x86_64.tar.gz | 用于部署OCP云平台 |
OceanBase RPM包 | X86_64平台:oceanbase-4.3.5.1-101030012025040200.el7.x86_64.rpm | 用于部署OceanBase集群 |
ODP RPM包(非必须) | X86_64平台:obproxy-4.3.1.4-242025032019.el7.x86_64.rpm | 用于部署OBProxy代理服务 |
最低资源配置
OceanBase部署服务器应满足的最低配置如下(适用于单机版和多节点集群):
组件 | 服务器数量 | 最低配置 | 推荐磁盘类型 |
---|---|---|---|
OAT | 1台(可复用OCP服务器) | 2U4G | N/A |
OCP和MetaDB(图形化部署) | 1台 | 16U32G | 1.5TB、万兆网卡、SSD存储 |
OceanBase集群 | 单机部署1台(非单机部署3台) | 4U16G。OBServer服务器内存设置建议不超过1T;OBServer 服务器CPU数量建议不超过512核。 | 磁盘中日志盘需要内存的3倍以上;SSD存储 |
ODP(非必须) | 3台(可复用OBServer节点) | 4U8G | 200G |
⭐️ 如果是通过命令行部署(oatcli
或obd
工具),可以不安装OCP和MetaDB组件。
重要的准备事项
⚠️ 部署前的重要准备事项!!!
- 如果不是单机部署,务必确保OAT部署服务器、OCP服务器和OBServer服务器在同一网段。官方文档仅要求这些服务器之间的22、7000和8080端口互通,然而实际上OCP服务器和OBServer上的ocp agent等组件通信时还使用了68888、68889等其他端口。如果没有提前开放所有端口,很可能在集群初始化和纳管的过程中遇到各种难以分析的报错。
- 务必检查并确保OCP服务器和所有OBServer服务器之间的时钟源保持同步。OceanBase集群对各服务器之间的时间偏差要求非常严苛,如果时钟源不同步,部署OceanBase集群时的关键步骤就会进行不下去。
- 注意不要在OBServer服务器上手动创建admin用户。admin用户会在OAT初始化OBServer服务器的过程中自动创建,提前手动创建会报错,导致OBServer添加失败。
服务器配置
操作系统
OceanBase数据库支持的主流操作系统及版本信息如下:
操作系统 | 版本 | 架构 |
---|---|---|
KylinOS | V10 | x86_64(包括海光),ARM_64(鲲鹏、飞腾) |
CentOS / Red Hat Enterprise Linux | 7.x、8.x | x86_64(包括海光),ARM_64(鲲鹏、飞腾) |
Debian | 8.3 及以上 | x86_64(包括海光) |
openEuler | 20.03 LTS SP1/SP2 和 22.10 LTS | x86_64(包括海光),ARM_64(鲲鹏、飞腾) |
更多支持的操作系统及其版本请参考官方文档。
⭐️ 需要进行一些特殊的操作系统配置如下:
- 在Intel x86架构的环境中:建议修改配置文件
/etc/sysctl.conf
,添加配置vm.swappiness = 0
。 - 在AMD或者ARM架构的环境中,建议开启Numa。
- 在ARM和海光架构的环境中,建议修改配置文件
/etc/sysctl.conf
,添加以下配置:
kernel.numa_balancing = 0
vm.zone_reclaim_mode = 0
vm.swappiness = 0
内核参数
OceanBase服务器推荐的内核参数配置如下:
内核参数 | 推荐值 | 说明 |
---|---|---|
vm.max_map_count | 655360 | 用于设置一个进程可拥有的最大内存映射区域数量 |
vm.min_free_kbytes | 2097152 | 用于设置系统保留的最小空闲内存量,以防止内存碎片化。如果服务器物理内存小于等于8GB时,建议保持默认值,无需修改 |
vm.overcommit_memory | 0 | 用于控制内存过量提交机制,指定当内存不足时是否允许过量提交内存 |
ulimit.open files | hard/soft nofile 655300 | 用于设置用户可同时打开的最大文件描述符数 |
ulimit.max_user_processes | hard/soft nproc 655300 | 用于设置用户可以创建的最大进程数 |
ulimit.core file size | hard/soft core unlimited | 用于设置核心转储文件(core dump)的最大大小 |
ulimit.stack | hard/soft stack unlimited | 用于设置系统的栈大小的参数 |
current_clocksource | tsc | 用于显示当前系统使用的时钟源 |
⭐️ 检查服务器时钟源配置:
[root@dbhost ~]# cat /sys/devices/system/clocksource/clocksource0/available_clocksource
tsc hpet acpi_pm [root@dbhost ~]# cat /sys/devices/system/clocksource/clocksource0/current_clocksource
tsc
⭐️ /etc/sysctl.conf
配置参考:
####################################################
# for oceanbase
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 = 10000 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 = 1
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_tw_reuse = 1
net.ipv4.tcp_slow_start_after_idle=0
net.ipv4.ip_local_reserved_ports = 62881-63881vm.swappiness = 0
kernel.core_pattern = /data/1/core-%e-%p-%t #与OB数据目录保持一致
kernel.numa_balancing = 0
kernel.sched_migration_cost_ns = 0
vm.zone_reclaim_mode = 0vm.min_free_kbytes=1317714 #服务器内存小于8G时保持默认值
vm.min_free_kbytes=2097152 #服务器内存大于8G时配置
vm.overcommit_memory = 0fs.aio-max-nr=1048576
vm.max_map_count=655360
vm.nr_hugepages = 0
fs.file-max=6573688
net.ipv4.tcp_tw_recycle = 0
⭐️ /etc/security/limits.conf
配置参考:
* hard stack unlimited
* hard core unlimited
* hard nofile 655300
* hard nproc 655300* soft stack unlimited
* soft core unlimited
* soft nofile 655300
* soft nproc 655300
BIOS设置
BIOS需要关闭以下配置:
- Cstate
- Pstate
- EIST
- Power saving
- SMMU(ARM架构)
BIOS需要开启以下配置:
- Automatic Power on After Power Loss: Always on
- Intel Virtualization Technology
- Hyper-threading
- Hardware prefetcher
- VT-d
- SR-IOV
- Turbo Mode
- Energy performance:开启最大performance
磁盘挂载
OCP节点的磁盘挂载要求如下:
挂载点 | 容量 | 格式 | 说明 |
---|---|---|---|
/home | 100 GB~300 GB | 建议 ext4 或 xfs | 各组件运行日志盘 |
/data/log1 | 内存大小的 3~4 倍 | 建议 ext4 或 xfs | OCP元数据库日志盘 |
/data/1 | 取决于所需存储的数据大小 | 建议 ext4 或 xfs | OCP元数据库数据盘 |
/docker | 200 GB~500 GB | 建议 ext4 或 xfs | Docker根目录,可以放到oat_data 目录下 |
⭐️ 如果是通过命令行部署(oatcli或obd工具),可以不安装OCP和MetaDB组件。
OBServer节点的磁盘挂载要求如下:
挂载点 | 容量 | 格式 | 说明 |
---|---|---|---|
/home | 100 GB~300 GB | 建议 ext4 或 xfs | observer安装和运行日志盘 |
/data/log1 | 内存大小的 3~4 倍 | 建议 ext4 或 xfs | observer事务日志盘 |
/data/1 | 取决于所需存储的数据大小 | 建议 ext4 或 xfs | observer数据盘 |
📖 划分磁盘LVM分区的演示:
[root@dbhost ~]# fdisk /dev/sdcWelcome to fdisk (util-linux 2.35.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x0d86530b.Command (m for help): p #检查现有分区信息
Disk /dev/sdc: 200 GiB, 214748364800 bytes, 419430400 sectors
Disk model: Virtual disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x0d86530bCommand (m for help): n #新建一个磁盘分区
Partition typep primary (0 primary, 0 extended, 4 free)e extended (container for logical partitions)
Select (default p): p #选择主分区
Partition number (1-4, default 1): #默认回车
First sector (2048-419430399, default 2048): #默认回车
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-419430399, default 419430399): #默认回车Created a new partition 1 of type 'Linux' and of size 200 GiB.
Partition #1 contains a ext4 signature.Do you want to remove the signature? [Y]es/[N]o: YThe signature will be removed by a write command.Command (m for help): t #修改分区类型
Selected partition 1
Hex code (type L to list all codes): 8e #8e表示修改为LVM分区
Changed type of partition 'Linux' to 'Linux LVM'.Command (m for help): w #保存修改
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.[root@dbhost ~]# fdisk -l /dev/sdc #检查分区信息
Disk /dev/sdc: 200 GiB, 214748364800 bytes, 419430400 sectors
Disk model: Virtual disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x0d86530bDevice Boot Start End Sectors Size Id Type
/dev/sdc1 2048 419430399 419428352 200G 8e Linux LVM
📖 创建LVM并挂载到文件系统的演示:
#以单机部署为例,即OAT、OCP和observer都在同一台服务器上
lsblkpvcreate /dev/sdb1
pvcreate /dev/sdc1vgcreate vgdata /dev/sdb1
vgcreate vgapp /dev/sdc1lvcreate -L 200G -n lv_obdata vgdata #用于存放OB数据
vgs
lvcreate -l 100%FREE -n lv_obredo vgdata #用于存放OB日志lvcreate -L 100G -n lv_obhome vgapp #用于安装OB软件
vgs
lvcreate -l 100%FREE -n lv_oboat vgapp #用于安装OAT工具lvsmkfs.xfs /dev/vgdata/lv_obdata
mkfs.xfs /dev/vgdata/lv_obredo
mkfs.xfs /dev/vgapp/lv_obhome
mkfs.xfs /dev/vgapp/lv_oboatmkdir -vp /data/1
mkdir -vp /data/log1
mkdir -vp /home/admin
mkdir -vp /oat_datacp /etc/fstab /etc/fstab.bak
cat >> /etc/fstab <<EOF
/dev/vgdata/lv_obdata /data/1 xfs defaults 0 0
/dev/vgdata/lv_obredo /data/log1 xfs defaults 0 0
/dev/vgapp/lv_obhome /home/admin xfs defaults 0 0
/dev/vgapp/lv_oboat /oat_data xfs defaults 0 0
EOFmount -a
df -hT
网卡设置
建议配置2块万兆网卡:
- bond模式取名
bond0
,绑定的模式可以选择mode1
或mode4
,但建议选择mode4。对于mode4模式,交换机需要配置802.3ad
协议。 - 网卡名建议使用
eth0
、eth1
。
部署OAT工具
部署OAT前请检查以下条件是否已满足:
- OAT的默认端口7000未被占用。
- 拥有服务器的root用户权限。
- 已经安装并启动Docker。推荐Docker版本为社区版17.03及以上。如果使用
oat-all-in-one
安装包部署OAT,将自动安装Docker环境,无需再单独安装。
- 解压
oat-all-in-one
安装包。
tar -xf oat-all-in-one-x86-431.tar
- 以root身份运行安装脚本
install.sh
。
sh oat-all-in-one-x86/install.sh
安装过程中需要根据提示依次确认以下信息:
- 请指定Docker的根目录,默认值
/docker
,可自定义。 - 请指定OAT数据目录的路径,默认值
/oat_data
,可自定义,例如/oceanbase/oat_data
。 - 请指定OAT HTTP监听端口,默认值
7000
,可自定义。 - 请指定OAT数据库端口,默认值
3306
,可自定义。 - 请输入OAT管理员账户密码(设置初始登录密码),可自定义。默认账号和初始密码为
admin/aaAA11__
。 - 根据返回的URL访问OAT,验证OAT服务的可用性。
安装完成后,在浏览器中输入OAT的访问地址(第一次登录需要修改admin用户口令),验证是否部署成功。
安装过程中的日志输出如下(如果没有docker会自动安装):
[root@dbhost ob_media]# ll
oat-all-in-one-x86
oat-all-in-one-x86-431.tar
oceanbase-4.3.5.1-101030012025040200.el7.x86_64.rpm
ocp_4.3.5_20250327_x86_64.tar.gz[root@dbhost ob_media]# sh oat-all-in-one-x86/install.sh
Before installation, please set the config below:
Input the OAT data dir: /oat_data
Input the OAT HTTP listen port: 7000
Input the OAT database port: 3306
Input the OAT admin user password(login password): aaAA11__
Start prepare docker
Docker is already exists, start check...
Already installed docker check healthy, skip install docker
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.
Start prepare OAT
Loaded image: reg.docker.alibaba-inc.com/oceanbase/oat:4.3.1_20250303_x86check OAT url http://127.0.0.1:7000/hc
OAT API not ready, please wait, sleep 5s retry...
OAT API not ready, please wait, sleep 5s retry...
OAT API not ready, please wait, sleep 5s retry...
OAT API not ready, please wait, sleep 5s retry...
OAT API not ready, please wait, sleep 5s retry...
OAT API not ready, please wait, sleep 5s retry...
OAT API ready
Copy images and binary_packages to OAT data dir
Trigger OAT scan api to find images and binary_packages
Trigger scan task success, please visit OAT web site and wait for scan task finished
OAT is ready for visit
url is: http://xx.xx.xx.xx:7000 #==> OceanBase管理者工具Web页面,第一次登录需要修改admin用户口令
user/password is: admin/aaAA11__
初始化OBServer服务器
初始化OBServer服务器可以通过前面提到的的OceanBase管理者工具(OAT)Web白屏页面完成,也可以按照下面的黑屏方式进行。
使用oatcli初始化OBServer服务器前请检查以下条件是否已满足:
- 已安装OAT工具。
- 拥有OAT服务器的root用户权限。
⚠️ 黑屏操作下初始化OBServer服务器在OAT容器中进行。
- 在OAT服务器上,以root身份进入到OAT容器。
sudo docker exec -it oat bash
- 查看oatcli命令的使用方法。
oatcli --help
- 设置OAT API地址、用户名和密码来调用OAT API。
#oatcli config set -sxx.xx.xx.xx:7000 -u admin -p xxxxxx
oatcli config set -s22.33.36.123:7000 -u admin -p Abc@@123__
-s
:api server地址,例如127.0.0.1:7000
。-u
:用户名。-p
:密码。
- 创建机房信息。
# oatcli create idc <NAME> <REGION>
oatcli create idc bj1 beijing
NAME
:机房名称。REGION
:机房所属的地域。
- 为服务器连接创建SSH凭证。
# oatcli create credential [OPTIONS] NAME AUTH_TYPE:{password|pubkey|external}
oatcli create credential -uroot -pAbc@@123__ root_123 password
NAME
:凭证标识名称。示例中凭证名为root_123
。AUTH_TYPE
:授权类型。password
对应密码认证,pubkey
对应公钥认证,external
表示已配置免密。-u
:要添加的observer服务器的登录用户名。默认为root。如果root不可用,请使用有sudo权限的操作系统用户。注意不要使用admin用户。admin用户会在部署过程中自动创建,提前创建会报错,导致OBServer添加失败。-p
:要添加的observer服务器的登录用户密码。-k
:SSH私钥文件。
⭐️创建普通用户并授予sudo权限:
useradd -m -d /home/obdeploy obdeploy
passwd obdeploy visudo
#添加并保存配置
obdeploy ALL=(ALL:ALL) NOPASSWD:ALL
- 添加并初始化OBServer服务器。
⚠️ 确保待添加的observer没有uid=500
的用户和用户组:
cat /etc/passwd | grep 500
cat /etc/group | grep 500
cat /etc/uid_list | grep 500
⚠️ 确保日志盘容量/data/log1
是服务器物理内存的3倍以上(严格模式下必须大于内存的4倍)。
添加并初始化observer服务器:
# oatcli create server [OPTIONS] IPs... INIT_TAG:{observer|obproduct|both}
oatcli create server -ibj1:beijing -croot_123 22.33.36.123 observer
-i
:机房名:地域
,必须已存在。-c
:凭证名,必须已存在。--add-only
:仅添加服务器,不执行操作系统配置操作。默认为--no-add-only
,即执行操作系统配置操作。--ssh-port
:SSH端口,默认为22。非必需。--docker-root-dir
:默认为/docker
。非必需。--admin-uid-gid
:默认为500:500
。非必需。--admin-password
:admin密码。非必需。IPs
:OBServer服务器IP。INIT_TAG
:服务器用途。observer
为数据库节点,obproduct
表示安装OceanBase产品服务,both
表示安装OBServer和OceanBase产品服务。
- 查看服务器是否添加完成。
# oatcli describe server [OPTIONS] OBServer_IP
oatcli describe server xx.xx.xx.xx
- 在OAT中获取资源信息。
# oatcli get [OPTIONS] COMMAND [ARGS]...
oatcli get server
component
:获取组件信息。credential
:获取凭证信息。idc
:获取机房信息。image
:获取镜像信息。product
:获取产品信息。Server
:获取服务器信息。
下面是初始化服务器的所有流程:
┏━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ id ┃ innerState ┃ executeTime ┃ startTime ┃
┡━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ check_ssh │ success │ 2025-05-10T09:37:11.107862Z │ 2025-05-10T09:37:13.241571Z │
│ config_lvm │ success │ 2025-05-10T09:37:11.107862Z │ 2025-05-10T09:37:14.357059Z │
│ create_admin_user │ success │ 2025-05-10T09:37:11.107862Z │ 2025-05-10T09:37:15.522019Z │
│ config_deps │ success │ 2025-05-10T09:37:11.107862Z │ 2025-05-10T09:37:17.096431Z │
│ config_os │ success │ 2025-05-10T09:37:11.107862Z │ 2025-05-10T09:37:17.101114Z │
│ config_chrony │ success │ 2025-05-10T09:37:11.107862Z │ 2025-05-10T09:37:17.107977Z │
│ config_docker │ success │ 2025-05-10T09:37:11.107862Z │ 2025-05-10T09:37:17.088391Z │
│ precheck │ success │ 2025-05-10T09:37:11.107862Z │ 2025-05-10T09:37:50.829933Z │
│ sync_server_to_ocp │ success │ 2025-05-10T09:37:11.107862Z │ 2025-05-10T09:41:48.337989Z │
│ update_server │ success │ 2025-05-10T09:37:11.107862Z │ 2025-05-10T09:41:49.473391Z │
└────────────────────┴────────────┴─────────────────────────────┴─────────────────────────────┘
其中,precheck会检查日志盘的大小是否满足要求,如果不通过,可以在OceanBase管理者工具(OAT)Web页面的系统与安全下的任务中心手动设置为检查通过。
使用oatcli部署OB集群
在部署OceanBase集群前请检查已经使用oatcli初始化OBServer服务器。
安装OceanBase软件
- 安装OceanBase数据库RPM包。
rpm -ivh oceanbase-4.3.5.1-101030012025040200.el7.x86_64.rpm
OceanBase数据库软件会默认安装在目录/home/admin/oceanbase
下。
- 安装OceanBase客户端(非必需)。
rpm -ivh obclient-2.2.1-20221122151945.el7.alios7.x86_64.rpm
如果只连接OceanBase数据库的MySQL租户,也可以通过MySQL客户端(mysql)连接OceanBase数据库。
初始化OceanBase集群
⚠️ 黑屏操作下初始化OceanBase集群请使用admin用户操作。
- 清理OceanBase目录(第一次部署不用)。
su - admin
kill -9 `pidof observer`
rm -rf /data/1/$cluster_name
rm -rf /data/log1/$cluster_name
rm -rf /home/admin/oceanbase/store/$cluster_name /home/admin/oceanbase/log/* /home/admin/oceanbase/etc/*config*
ps -ef|grep observer
其中$cluster_name
为集群名。
- 初始化OceanBase目录。
OceanBase的数据目录通常建议在独立的磁盘上,然后通过软链接方式链接到软件Home目录下面。其中$cluster_name
为集群名。
su - admin #使用admin用户安装
export cluster_name=obvectormkdir -p /data/1/$cluster_name/{etc3,sstable,slog}
mkdir -p /data/log1/$cluster_name/{clog,etc2}
mkdir -p /home/admin/oceanbase/store/$cluster_name
for t in {etc3,sstable,slog};do ln -s /data/1/$cluster_name/$t /home/admin/oceanbase/store/$cluster_name/$t; done
for t in {clog,etc2};do ln -s /data/log1/$cluster_name/$t /home/admin/oceanbase/store/$cluster_name/$t; done
- 启动节点observer进程。
在每个节点的admin用户下,启动observer进程。
cd /home/admin/oceanbase && /home/admin/oceanbase/bin/observer {-I $ip | -i $devname} -P $rpc_port -p $sql_port \
-z $zone_name -d /home/admin/oceanbase/store/$cluster_name -r '$ip:2882:2881' -c $cluster_id -n $cluster_name \
-o "system_memory=30G,datafile_size=500G,config_additional_dir=/data/1/$cluster_name/etc3;/data/log1/$cluster_name/etc2"
三副本下,每个节点启动参数并不完全相同。启动observer时只需指定RootService所在的3台(或者多台)机器,不需要在创建集群时指定所有机器;集群创建完成后可以添加新的机器。
启动参数含义:
-I
:指定待启动的节点IP。-p
:指定服务端口号,一般指定为2881。-P
:指定RPC端口号,一般指定为2882。-n
:指定集群名称。不同集群不要重复即可。-z
:指定启动的observer进程所属的Zone。-d
:指定集群主目录,初始化目录时创建的目录。除集群名字$cluster_name
外,其他的不要修改。-c
:指定集群ID。不同集群不要重复即可。-l
:指定日志级别。-r
:指定RS列表,格式是$ip:2882:2881
,分号分割,表示Root Service信息。-o
:指定集群启动参数(配置项)列表,为可选项。其中config_additional_dir
用于设置本地存储配置文件的多个目录,为了冗余存储多份配置文件。system_memory
:预留给OB内部500租户的内存,不能分配给用户租户使用,因此不应该分配太大。memory_limit
:设置OBServer可用的总内存的大小,包括系统租户和所有用户租户使用的内存。
🐯 三节点集群的启动示例如下:
- zone1节点启动observer进程:
su - admin
cd /home/admin/oceanbase && /home/admin/oceanbase/bin/observer -I 10.10.10.1 -P 2882 -p 2881 \
-z zone1 -d /home/admin/oceanbase/store/obdemo -r '10.10.10.1:2882:2881;10.10.10.2:2882:2881;10.10.10.3:2882:2881' -c 10001 -n obdemo \
-o "system_memory=30G,datafile_size=500G,config_additional_dir=/data/1/obdemo/etc3;/data/log1/obdemo/etc2"
- zone2节点启动observer进程:
su - admin
cd /home/admin/oceanbase && /home/admin/oceanbase/bin/observer -I 10.10.10.2 -P 2882 -p 2881 \
-z zone2 -d /home/admin/oceanbase/store/obdemo -r '10.10.10.1:2882:2881;10.10.10.2:2882:2881;10.10.10.3:2882:2881' -c 10001 -n obdemo \
-o "system_memory=30G,datafile_size=500G,config_additional_dir=/data/1/obdemo/etc3;/data/log1/obdemo/etc2"
- zone3节点启动observer进程:
su - admin
cd /home/admin/oceanbase && /home/admin/oceanbase/bin/observer -I 10.10.10.3 -P 2882 -p 2881 \
-z zone3 -d /home/admin/oceanbase/store/obdemo -r '10.10.10.1:2882:2881;10.10.10.2:2882:2881;10.10.10.3:2882:2881' -c 10001 -n obdemo \
-o "system_memory=30G,datafile_size=500G,config_additional_dir=/data/1/obdemo/etc3;/data/log1/obdemo/etc2"
🐱 如果是单机部署,只需启动一台OBServer节点:
su - admin
cd /home/admin/oceanbase && /home/admin/oceanbase/bin/observer -I 22.33.36.123 -P 2882 -p 2881 \
-z zone1 -d /home/admin/oceanbase/store/obvector -r '22.33.36.123:2882:2881' -c 10001 -n obvector \
-o "system_memory=4G,datafile_size=100G,config_additional_dir=/data/1/obvector/etc3;/data/log1/obvector/etc2"
可以通过下面命令查看observer进程是否启动成功:
netstat -ntlp | grep 288
命令,如果监听到了2881与2882端口,则说明进程启动成功。ps -ef | grep observer
命令可以返回observer进程信息。
OBServer启动过程中的日志信息记录在/home/admin/oceanbase/log/observer.log
文件中。
- 集群bootstrap操作。
通过OBClient命令连接任意一台节点,密码为空。
mysql -h127.0.0.1 -uroot -P2881 -pMySQL> SET SESSION ob_query_timeout=1000000000;
Query OK, 0 rows affectedMySQL> ALTER SYSTEM BOOTSTRAP ZONE 'zone1' SERVER '10.10.10.1:2882',ZONE 'zone2' SERVER '10.10.10.2:2882',ZONE 'zone3' SERVER '10.10.10.3:2882';
Query OK, 0 rows affected
如果是单机部署,只需启动一台OBServer节点:
ALTER SYSTEM BOOTSTRAP ZONE 'zone1' SERVER '22.33.36.123:2882';
如果这一步失败报错了,其原因很可能就是observer进程启动参数有不对、observer相关目录权限不对、日志目录空间不足一定比例(跟数据目录合用了大目录,空间被数据目录占用了)、节点时间不同步、节点内存资源不足等。请先排查这些问题点后,然后清理OceanBase目录从头开始部署。
- 验证集群初始化成功。
在完成集群的bootstrap初始化操作后,通过执行SHOW DATABASES;
命令进行验证,若查询结果显示数据库列表中存在oceanbase
数据库,即可确认集群初始化成功。
- 修改sys租户管理员密码。
sys租户的root用户密码默认为空,初始化成功后请修改密码。
ALTER USER root IDENTIFIED BY 'Abc@@123__';
启用向量检索功能
- 创建用户租户。
用户租户的创建请参考:https://gottdeskrieges.blog.csdn.net/article/details/147336658
- 登录到用户租户的系统管理员,执行下面的SQL来启用向量检索功能:
show parameters like 'ob_vector_memory_limit_percentage';ALTER SYSTEM SET ob_vector_memory_limit_percentage = 30;
配置参数ob_vector_memory_limit_percentage
的默认值为0,表示不为向量索引分配内存,创建索引会报错。
References
【1】OceanBase企业版集群部署,https://gottdeskrieges.blog.csdn.net/article/details/147158605
【2】OceanBase租户创建与删除,https://gottdeskrieges.blog.csdn.net/article/details/147336658
相关文章:
OceanBase 4.3版本向量数据库部署
OceanBase 4.3版本向量数据库部署 安装包准备最低资源配置重要的准备事项服务器配置操作系统内核参数BIOS设置磁盘挂载网卡设置 部署OAT工具初始化OBServer服务器使用oatcli部署OB集群安装OceanBase软件初始化OceanBase集群 启用向量检索功能 OceanBase最新的V4.3版本开始支持向…...
LeetCode 941. 有效的山脉数组 java题解
https://leetcode.cn/problems/valid-mountain-array/description/ 双指针 class Solution {public boolean validMountainArray(int[] arr) {int lenarr.length;if(len<3) return false;int left0,rightlen-1;while(left1<len&&arr[left]<arr[left1]){left…...
基于Java和高德开放平台的WebAPI集成实践-以搜索POI2.0为例
目录 前言 一、高德搜索API简介 1、高德开放平台 2、搜索功能介绍 3、部分API介绍 二、Uniapi集成高德API 1、API集成流程 2、访问接口的定义 3、业务调用集成 三、常见问题与优化 四、总结 前言 在当今数字化时代,地理信息系统(GISÿ…...
Docker拉取ubuntu22.04镜像使用ROS2 humble及仿真工具可视化进行导航
创建Ubuntu22.04 容器 docker pull ubuntu:22.04 #下载22.04镜像 docker images #查看已下载镜像 #根据镜像创建容器 sudo docker run -it -v /home/lab118/BD_ICL/tools_BD/cailib_data:/calib_data -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY:0 --nethost -e GDK_SCAL…...
PXE安装Ubuntu系统
文章目录 1. 服务器挂载Ubuntu镜像2. 修改dhcp配置文件3. 修改tftp配置文件4.复制网络驱动文件和其他配置文件5. http目录下配置文件6. 踩坑记录6.1 Failed to load ldlinux.c326.2 no space left on device6.3 为啥用pxe安装系统时,客户端需要较大的内存࿱…...
外网访问内网海康威视监控视频的方案:WebRTC + Coturn 搭建
外网访问内网海康威视监控视频的方案:WebRTC Coturn 需求背景 在仓库中有海康威视的监控摄像头,内网中是可以直接访问到监控摄像的画面,由于项目的需求,需要在外网中也能看到监控画面。 实现这个功能的意义在于远程操控设备的…...
缓存局部性保留
在操作系统中,线程切换相比进程切换更轻量级的关键原因之一是 缓存(Cache)的有效性,尤其是对 CPU 缓存(如 L1/L2/L3)和 TLB(Translation Lookaside Buffer)的影响。以下从缓存角度详…...
MyBatis源码解读5(3.1、缓存简介)
3.1、简介 我们需要记住一句话,程序与数据库之间的交互是性能瓶颈的关键,所以我们在做优化的时候,数据库的优化要做,但是优先级是最低的,比它优先级高的是方面是程序与数据库之间的交互,先从宏观上解决…...
【MySQL】行结构详解:InnoDb支持格式、如何存储、头信息区域、Null列表、变长字段以及与其他格式的对比
📢博客主页:https://blog.csdn.net/2301_779549673 📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! &…...
Docker 部署Nexus仓库 搭建Maven私服仓库 公司内部仓库
介绍 Nexus 是广泛使用的仓库管理工具,常用于管理 Java 构件(如 JAR、WAR、EAR 文件)。它可以作为一个本地的 Maven 仓库,用来存储和管理项目的依赖包和构建产物。支持多种仓库类型,能够帮助开发团队更高效地管理构件…...
PostgreSQL 的 pg_column_size 函数
PostgreSQL 的 pg_column_size 函数 pg_column_size 是 PostgreSQL 提供的一个系统函数,用于返回特定列或值在数据库内部存储时所占用的字节数。这个函数对于数据库优化、存储空间分析和性能调优非常有用。 函数语法 pg_column_size(anyelement)参数说明 anyele…...
【前端】【HTML】【总复习】一万六千字详解HTML 知识体系
🌐 HTML 知识体系 一、HTML 基础入门 1. HTML 简介与作用 HTML(HyperText Markup Language,超文本标记语言)是构建网页的基础语言。它的核心作用是: 定义网页内容的结构(标题、段落、图片、表格等)提供语义化标签,帮助搜索引擎与辅助设备理解页面内容配合 CSS 实现…...
支持向量机与逻辑回归的区别及 SVM 在图像分类中的应用
支持向量机与逻辑回归的区别及 SVM 在图像分类中的应用 在机器学习的多元算法领域中,支持向量机(SVM)和逻辑回归(LR)作为两种经典的监督学习算法,被广泛应用于各类分类任务。尽管它们有着相似的目标&#…...
MySQL基础面试题集锦
MySQL基础面试题集锦 一、SQL基础语法 1. 数据库和表操作 -- 创建数据库 CREATE DATABASE test_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;-- 创建表 CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(50) NOT NULL UNIQUE,email VARCH…...
【网络分析工具】网络工具wireshark、TCPdump、iperf使用详解
这里写目录标题 1. wireshark1.1. 过滤包1.2. 常见分析 2. tcpdump3. iperf 1. wireshark **ip.dst eq 10.0.0.21** 是用于网络流量分析工具(例如 Wireshark 或 tcpdump)的过滤器表达式。 它的作用是筛选出所有目标IP地址为 10.0.0.21 的数据包 IP.add…...
【漫话机器学习系列】253.超平面(Hyperplane)
超平面(Hyperplane)详解:从二维到高维空间 在机器学习、深度学习、支持向量机(SVM)等领域中,经常会遇到一个重要的数学概念——超平面(Hyperplane)。但超平面究竟是什么?…...
#微调重排序模型:Reranking从入门到实践
🧠 向所有学习者致敬! “学习不是装满一桶水,而是点燃一把火。” —— 叶芝 我的博客主页: https://lizheng.blog.csdn.net 🌐 欢迎点击加入AI人工智能社区! 🚀 让我们一起努力,共创…...
vector 常见用法及模拟
文章目录 1. vector的介绍与使用1.1 vector的构造1.2 vector iterator 的使用1.3 有关大小和容量的操作1.4 vector 增删查改1.5 vector 迭代器失效问题(重点)1.6 vector 中二维数组的使用 2. vector 的模拟实现2.1 拷贝构造和赋值重载的现代写法2.2 memc…...
可变参数模板
引入:为什么会有可变参数模板? 在C98/03中,也就是我们之前学的类模版和函数模版中只能含固定数量的模版参数,而C11中新增的可变参数模板能够不固定数量的模版参数! 一:可变参数模板的格式 // Args是一个模板…...
缓存(5):常见 缓存数据淘汰算法/缓存清空策略
主要的三种缓存数据淘汰算法 FIFO(first in first out):先进先出策略,最先进入缓存的数据在缓存空间不够的情况下(超出最大元素限制)会被优先被清除掉,以腾出新的空间接受新的数据。策略算法主要比较缓存元素的创建时…...
深入了解linux系统—— 自定义shell
shell的原理 我们知道,我们程序启动时创建的进程,它的父进程都是bash也就是shell命令行解释器; 那bash都做了哪些工作呢? 根据已有的知识,我们可以简单理解为: 输出命令行提示符获取并解析我们输入的指令…...
【通讯录教程】如何将号码快速导入手机通讯录,支持苹果和安卓手机,一次性导入大量号码进入手机通讯录,基于WPF的解决方案
以下是一个基于WPF的解决方案,用于将大量号码快速导入苹果和安卓手机通讯录: 项目应用场景 企业员工通讯录批量导入:HR需要将数百名员工的联系方式快速导入公司手机客户关系管理:销售人员需要将大量客户信息导入…...
Git初始化相关配置
Git配置 在Git安装完成后,windows操作系统上会多出一个Git Bash的软件,如果是linux或者是macOS,那么直接打开终端,在终端中敲击命令即可 # 检查git版本 git -v # 或 git --version在使用git时,需要配置一下用户名和邮…...
n8n中订阅MQTT数据
第一步:创建mqtt登录证证 第二步:创建mqtt trigger组件,并配置凭证和订阅主题 第三步:创建Code节点,编写格式转换代码 第四步:创建转发MQTT节点,并配置MQTT凭证 第五步:启用工作流 整…...
Docker、ECS 与 K8s 网段冲突:解决跨服务通信中的路由问题
🧩 问题背景 在阿里云的项目中,在项目初期搭建过程中遇到了一个让人头疼的网络冲突问题:同一个 VPC 中的 Docker 容器和 Kubernetes 集群由于使用相同的网段,导致k8s pod连接ECS容器之间的网络连接失败。 背景环境: …...
《智能网联汽车 自动驾驶系统设计运行条件》 GB/T 45312-2025——解读
目录 1. 标准概述 2. 核心概念 3. 标准核心内容 3.1 一般要求 3.2 ODC基础元素层级 3.3 ODC元素具体要求 3.4 附录A(ODC示例) 4. 技术挑战与实施建议 5. 标准意义 原文链接:国家标准|GB/T 45312-2025 (发布:2…...
AARRR用户增长模型(海盗指标)详解
目录 一、模型起源与概述二、五大阶段详解1. 获取(Acquisition)1.1 定义1.2 关键指标 2. 激活(Activation)2.1 定义2.2 关键指标 3. 留存(Retention)3.1 定义3.2 关键指标3.3 提升留存手段案例3.4 互联网留…...
CSS专题之自定义属性
前言 石匠敲击石头的第 12 次 CSS 自定义属性是现代 CSS 的一个强大特性,可以说是前端开发需知、必会的知识点,本篇文章就来好好梳理一下,如果哪里写的有问题欢迎指出。 什么是 CSS 自定义属性 CSS 自定义属性英文全称是 CSS Custom Proper…...
JVM——Java字节码基础
引入 Java字节码(Java Bytecode)是Java技术体系的核心枢纽,所有Java源码经过编译器处理后,最终都会转化为.class文件中的字节码指令。这些指令不依赖于具体的硬件架构和操作系统,而是由Java虚拟机(JVM&…...
【React中useRef钩子详解】
一、useRef的核心特性 useRef是React提供的Hook,用于在函数组件中创建可变的持久化引用,具有以下核心特性: 持久化存储 返回的ref对象在组件整个生命周期内保持不变,即使组件重新渲染,current属性的值也不会丢失。无触发渲染 修改ref.current的值不会导致组件重新渲染,适…...
《AI大模型应知应会100篇》第58篇:Semantic Kernel:微软的大模型应用框架
第58篇:Semantic Kernel:微软的大模型应用框架 ——用C#和Python构建下一代AI应用的统一编程范式 📌 摘要 随着大模型(LLM)技术的快速发展,如何将这些强大的语言模型与传统代码系统进行无缝集成ÿ…...
ssh -T git@github.com 测试失败解决方案:修改hosts文件
问题描述 通过SSH方式测试,使用该方法测试连接可能会遇到连接超时、端口占用的情况,原因是因为DNS配置及其解析的问题 ssh -T gitgithub.com我们可以详细看看建立 ssh 连接的过程中发生了什么,可以使用 ssh -v命令,-v表示 verbo…...
c++面向对象:接口设计
一、什么是接口(Interface)? 在面向对象编程中,接口可以理解为一种“规范”或“约定”。 更具体一点: 它定义了“某个对象”应该具备哪些功能(方法、行为)但不关心这些功能的具体实现细节 用…...
[Java][Leetcode middle] 80. 删除有序数组中的重复项 II
删除重复元素,最多只保留两个 1. 计数法 第一个元素直接加入当与前一个元素相同时,计数器1,不同时计数器恢复1; 只有计数器小于2时,记录元素; public int removeDuplicates2(int[] nums) {int cnt 1;in…...
【Bluedroid】蓝牙HID DEVICE断开连接流程源码分析
蓝牙HID(Human Interface Device)的断开连接流程涉及从应用层到协议栈的多层交互。本文通过剖析Android Bluetooth协议栈代码,梳理从上层调用disconnect()到最终物理链路断开的完整流程,涵盖状态检查、消息传递、L2CAP通道关闭、资…...
嵌入式硬件篇---陀螺仪|PID
文章目录 前言1. 硬件准备主控芯片陀螺仪模块电机驱动电源其他 2. 硬件连接3. 软件实现步骤(1) MPU6050初始化与数据读取(2) 姿态解算(互补滤波或DMP)(3) PID控制器设计(4) 麦克纳姆轮协同控制 4. 主程序逻辑5. 关键优化与调试技巧(1) 传感器校准(2) PID…...
redis数据结构-07(SADD、SREM、SMEMBERS)
Redis Sets 简介:SADD、SREM、SMEMBERS Redis 集合是一种基础数据结构,可用于存储一组唯一且无序的元素。了解如何管理集合对于各种应用至关重要,从跟踪唯一访客到管理用户权限。本课将全面介绍 Redis 集合,重点介绍核心命令 SAD…...
嵌入式硬件篇---TOF|PID
文章目录 前言1. 硬件准备主控芯片ToF模块1.VL53L0X2.TFmini 执行机构:电机舵机其他 2. 硬件连接(1) VL53L0X(IC接口)(2) TFmini(串口通信) 3. ToF模块初始化与数据读取(1) VL53L0X(基于HAL库)(…...
# Anaconda3 常用命令
Anaconda3 常用命令及沙箱环境管理指南 Anaconda3 是一个强大的 Python 发行版,广泛用于数据科学、机器学习和科学计算。其核心优势在于通过 沙箱环境(Conda Environment) 实现项目隔离,避免依赖冲突。本文将介绍 Anaconda3 的常…...
嵌入式硬件篇---无线通信模块
文章目录 前言一、四种无线串口模块深度对比二、模块优缺点分析1. 蓝牙模块(HC-05)优点缺点 2. WiFi模块(ESP8266)优点缺点 3. 2.4G射频(NRF24L01)优点缺点 4. LoRa模块(SX1278)优点…...
MySQL 索引(二)
文章目录 索引理解MySQL对page做管理page的概念单个page多个page 页目录单页情况(提高page内部的查找的效率)多页情况(提高page间的查找效率)复盘一下为什么选择B树,不选择其他数据结构呢聚簇索引 VS 非聚簇索引 索引操…...
代码随想录算法训练营第六十天| 图论7—卡码网53. 寻宝
图论第七天,prim和kruskal算法,说实话都没看的很懂,有点抽象难理解,只能照着题解理解一下了。 53. 寻宝(prim) 53. 寻宝(第七期模拟笔试) 复制一下网站上的prim算法的结论 prim算…...
「OC」源码学习—— 消息发送、动态方法解析和消息转发
「OC」源码学习—— 消息发送、动态方法解析和消息转发 前言 前面我们在学习alloc源码的时候,就在callAlloc源码之中简单的探究过,类初始化缓存的问题,我们知道在一个类第一次被实例化的时候,会调用objc_msgSend去二次调用alloc…...
MySQL数据库下篇
#作者:允砸儿 #日期:乙巳青蛇年 四月十四 今天笔者将会把MySQL数据库的知识完结,再者笔者会浅写一下sql注入的内容。在后面笔者会逐渐的将网安世界徐徐展开。 php与mysql联动 编程接口 笔者在前面的文章写了php的内容,现在我…...
Linux之进程概念
目录 一、冯诺依曼体系结构 二、操作系统(Operator System) 2.1、概念 2.2、设计OS的目的 2.3、系统调用和库函数概念 三、进程 3.1、基本概念 3.1.1、描述进程-PCB 3.1.2、task_struct 3.1.3、查看进程 3.1.4、通过系统调用获取进程标识符 3.1.5、两种杀掉进程的方…...
numpy模块综合使用
一、numpy模块的综合使用方法 # 使用矩阵的好处,矩阵对于python中列表,字典等数据类型一个一个拿来计算是会方便计算很多的,底层使用的是c语言 # 在数据分析和数据处理的时候也经常常用 import numpy as np array np.array([[1,2,3],[2,3,4…...
嵌入式硬件篇---SPI
文章目录 前言1. SPI协议基础1.1 物理层特性四线制(标准SPI)SCKMOSIMISONSS/CS 三线制(半双工模式)通信模式 1.2 通信时序(时钟极性CPOL和相位CPHA)常用模式Mode 0Mode 3 1.3 典型通信流程 2. STM32F103RCT…...
【大模型】AI智能体Coze 知识库从使用到实战详解
目录 一、前言 二、知识库介绍 2.1 coze 知识库功能介绍 2.2 coze 知识库应用场景 2.3 coze 知识库类型 2.4 coze 知识库权限说明 2.5 coze 知识库与记忆对比 2.6 知识库的使用流程 三、知识库创建与使用 3.1 创建知识库入口 3.2 创建文本知识库 3.2.1 上传文件 3.…...
深度学习:系统性学习策略(二)
深度学习的系统性学习策略 基于《认知觉醒》与《认知驱动》的核心方法论,结合深度学习的研究实践,从认知与技能双重维度总结以下系统性学习策略: 一、认知觉醒:构建深度学习的思维操作系统 三重脑区协同法则 遵循**本能脑(舒适区)-情绪脑(拉伸区)-理智脑(困难区)**的…...
TikTok 推广干货:AI 加持推广效能
TikTok 推广是提升账号影响力、吸引更多关注的关键一环。其中,巧妙利用热门话题标签是增加视频曝光的有效捷径。运营者需要密切关注当下流行趋势,搜索与账号定位紧密相关的热门标签。例如,对于美妆账号而言,带上 “# 美妆教程 #热…...