当前位置: 首页 > news >正文

命令行方式部署OceanBase 集群部署

本文档使用命令行来进行 1-1-1 架构的分布式 OceanBase 集群部署,有 3 台 服务器,每 1 台 服务器就是一个 Zone。
192.168.48.142
192.168.55.209
192.168.55.210
前提条件
● 准备三台服务器,并且这三台机器之间可以互相访问。同时,需要确保本地机器能够通过 SSH 登录到这三台服务器,以便进行操作和配置。
● 准备好 OceanBase 数据库的 RPM 包、OBClient 的 RPM 包 和 OBProxy RPM 包。
部署前配置
创建 admin 用户(所有节点)
使用 root 用户分别登录3台服务器
ssh root@192.168.48.142
ssh root@192.168.55.209
ssh root@192.168.55.210
创建 admin 用户
–创建用户组 admin 以及创建用户 admin
useradd -U admin -d /home/admin -s /bin/bash

–设置用户admin密码
echo ‘admin’|passwd --stdin admin

–赋予用户目录权限
chown -R admin:admin /home/admin

–为账户 admin 设置 sudo 权限
sudo visudo 等价于 vi /etc/sudoers
在打开的界面找到以下内容
Same thing without a password

%wheel ALL=(ALL) NOPASSWD: ALL

条目下增加
admin ALL=(ALL) NOPASSWD: ALL
按 ESC 键,输入 :wq,保存退出。

–云服务器需要,修改 root 用户权限并将 admin 用户添加至 wheel 组
vim /etc/pam.d/su
在打开的界面找到以下内容
#auth sufficient pam_wheel.so trust use_uid
删除前面的注释符号# 保存

然后将 admin 用户添加至 wheel 组
usermod -aG wheel admin
目录规划(所有节点)
–创建 data 目录
mkdir -p /data/{1,log1}

–赋予权限
chown -R admin:admin /data
依次往 3 台主机上传 rpm 安装包
官方下载地址:https://www.oceanbase.com/softwarecenter
根据部署环境选择对应的安装介质
说明:OBproxy 可以和 OBServer 共用一台主机,这里只需要将安装包上传到一台主机即可。
下载并上传到/home/admin目录下
[root@iZbp1330hxx8l77slgu7ghZ ~]# ls -l /home/admin/
total 341204
-rw-r–r-- 1 root root 12010316 Jun 11 2024 obclient-2.2.6-32024052710.el7.x86_64.rpm
-rw-r–r-- 1 root root 75214004 Apr 17 20:41 ob-deploy-3.2.0-2.el7.x86_64.rpm
-rw-r–r-- 1 root root 30409776 Jun 11 2024 obproxy-4.2.3.0-20231226165754.el7.x86_64.rpm
-rw-r–r-- 1 root root 231747600 Jun 18 2024 oceanbase-4.3.1.0-100010022024052916.el7.x86_64.rpm
部署操作
安装软件(所有节点)

  1. 登录到 服务器。
  2. 切换到 admin 目录下。
    cd /home/admin
  3. 安装 OceanBase 数据库 RPM 包。
    rpm -ivh oceanbase-4.3.1.0-100010022024052916.el7.x86_64.rpm
    说明:OceanBase 软件将会被安装在目录 /home/admin/oceanbase 下。如果需要指定其他目录,可以通过设置 --prefix 参数来指定。命令参考如下:rpm -ivh --prefix=<自定义安装目录> 。
  4. 安装 obclient 客户端 RPM 包。
    rpm -ivh obclient-2.2.6-32024052710.el7.x86_64.rpm
  5. 重复步骤 1 ~ 步骤 4,完成所有机器上 OceanBase 数据库 RPM 包和 obclient RPM 包的安装。
  6. 安装 OBproxy RPM 包。只在192.168.48.142上安装
    说明:OBproxy RPM 包安装到其中一台机器即可。
    rpm -ivh obproxy-4.2.3.0-20231226165754.el7.x86_64.rpm
    初始化目录(所有节点)
    说明:
    OceanBase 的数据目录通常建在独立的磁盘上,然后通过软链接方式链接到软件 Home 目录下面。
    此处 dxjoceanbase 是以集群名称创建的目录,可根据需要自行定义。该名称在启动 observer 进程时会用到。
    切换 admin 用户
    su - admin
    创建各目录盘
    su - admin

–创建OceanBase 数据盘目录
mkdir -p /data/1/dxjoceanbase/{etc3,sstable,slog}

–创建 OceanBase 日志盘目录
mkdir -p /data/log1/dxjoceanbase/{clog,etc2}

–创建 OceanBase 数据文件目录
mkdir -p /home/admin/oceanbase/store/dxjoceanbase

–创建 OBproxy 日志文件目录
mkdir -p /home/admin/logs/obproxy/log
建立软连接
建立数据文件目录下 sstable 和 slog 文件到数据盘目录的软连接。
su - admin
for t in {sstable,slog};do ln -s /data/1/dxjoceanbase/t/home/admin/oceanbase/store/dxjoceanbase/t /home/admin/oceanbase/store/dxjoceanbase/t/home/admin/oceanbase/store/dxjoceanbase/t; done
建立数据文件目录下 clog 和 etc2 到数据盘目录的软连接。
su - admin
for t in {clog,etc2};do ln -s /data/log1/dxjoceanbase/t/home/admin/oceanbase/store/dxjoceanbase/t /home/admin/oceanbase/store/dxjoceanbase/t/home/admin/oceanbase/store/dxjoceanbase/t; done
建立到 obproxy 的软链接(该操作在安装了 OBProxy 的主机上执行)
obproxy 安装目录在 /opt/taobao/install 下。obproxy 进程 home 目录是 /opt/taobao/install/obproxy,这是一个软链接,实际指向相应的 obproxy 版本软件目录。
–建立软链接
su - admin
cd /opt/taobao/install
sudo ln -s obproxy-4.2.3.0 obproxy

–修改 obproxy 的所有者和所属组为 admin
su - root
chown -R admin:admin /opt/taobao/install/obproxy
初始化 OceanBase 集群
注意
● 启动 observer 进程,必须使用 admin 用户。
● 在部署时应根据机器真实 IP 填写(ECS 机器的私有 IP 地址)。
启动 observer 进程
语法
su - admin
–语法
cd /home/admin/oceanbase && /home/admin/oceanbase/bin/observer {-I $ip | -i $devname} -P $rpc_port -p $sql_port -z zonename−d/home/admin/oceanbase/store/zone_name -d /home/admin/oceanbase/store/zonenamed/home/admin/oceanbase/store/cluster_name -r ‘$ip:2882:2881’ -c $cluster_id -n clustername−o"systemmemory=30G,datafilesize=500G,configadditionaldir=/data/1/cluster_name -o "system_memory=30G,datafile_size=500G,config_additional_dir=/data/1/clusternameo"systemmemory=30G,datafilesize=500G,configadditionaldir=/data/1/cluster_name/etc3;/data/log1/$cluster_name/etc2"
参数解释
参数 说明
-I
-i ● -I:指定待启动的节点 IP。在多机部署场景下,不能指定 127.0.0.1 作为目标 IP。建议使用指定 IP(例如:-I 10.10.10.1)来启动节点。
● -i:指定网卡名,可通过 ifconfig 命令查看。
说明:支持通过同时指定 IP 和网卡名(例如:-I 10.10.10.1 -i eth0)来启动节点,但不建议这么用。
-p 指定服务端口号,一般指定为 2881
-P 指定 RPC 端口号,一般指定为 2882
-n 指定集群名称。可自定义,不同集群名称不要重复即可。
-z 指定启动的 observer 进程所属的 Zone。
-d 指定集群主目录,初始化目录时创建的目录。除集群名字 $cluster_name外,其他不要变动。
-c 指定集群 ID。为一组数字,可以自定义,不同集群不要重复即可。
-l 指定日志级别。
-r 指定 RS 列表,格式是 $ip:2882:2881,分号分割,表示 Root Service 信息。
-o 指定集群启动参数(配置项)列表,为可选项。可以为多个配置项指定值,多个配置项的值之间使用英文逗号进行分隔。请根据实际需要,选择适当的启动参数并为每个参数指定合适的值,以优化集群的性能和资源利用率。以下是一些常用的集群启动配置项:
● cpu_count:用于设置系统 CPU 总数。
● system_memory:用于设置系统预留给租户 ID 为 500 的租户的内存容量,即指定 OceanBase 数据库内部保留内存。在机器内存较少的情况下可以考虑将该值调小,需要注意的是,在性能测试时可能会出现内存不足的问题。
● :用于设置可用的总内存大小。
● datafile_size:用于设置数据文件占用磁盘可用空间的大小。即指定 OceanBase 数据库数据文件 sstable 的大小(一次性初始化),根据 /data/1/ 可用空间评估,建议不少于 100G。
● datafile_disk_percentage:磁盘数据文件占用磁盘总空间的百分比。
● datafile_next:用于设置磁盘数据文件自动扩容的步长。
● datafile_maxsize:用于设置磁盘数据文件自动扩容的最大空间。
● config_additional_dir:用于设置本地存储配置文件的多个目录,为了冗余存储多份配置文件。
● log_disk_size:用于设置 Redo 日志磁盘的大小。
● log_disk_percentage:用于设置 Redo 日志占用其所在磁盘总空间的百分比。
● syslog_level:用于设置系统日志级别。
● syslog_io_bandwidth_limit:用于设置系统日志所能占用的磁盘 IO 带宽上限,超过带宽上限容量的系统日志将被丢弃。
● max_syslog_file_count:用于设置在回收日志文件之前可以容纳的日志文件数量。
● enable_syslog_recycle:用于设置是否开启回收系统日志的功能。
依次启动三台机器的 observer 进程
启动第一台机器的 observer 进程
–zone1:在 admin 用户下,启动第一台机器的 observer 进程
su - admin
cd /home/admin/oceanbase && /home/admin/oceanbase/bin/observer -I 192.168.48.142 -P 2882 -p 2881 -z zone1 -d /home/admin/oceanbase/store/dxjoceanbase -r ‘192.168.48.142:2882:2881;192.168.55.209:2882:2881;192.168.55.210:2882:2881’ -c 10001 -n dxjoceanbase -o “memory_limit=6G,system_memory=1G,datafile_size=10G,log_disk_size=5G,__min_full_resource_pool_memory=1073741824,resource_hard_limit=150,config_additional_dir=/data/1/dxjoceanbase/etc3;/data/log1/dxjoceanbase/etc2”

–验证 observer 进程启动成功
ps -ef|grep observer 输出如下:
admin 2230 1 8 15:10 ? 00:00:01 /home/admin/oceanbase/bin/observer -I 192.168.48.142 -P 2882 -p 2881 -z zone1 -d /home/admin/oceanbase/store/dxjoceanbase -r 192.168.48.142:2882:2881;192.168.55.209:2882:2881;192.168.55.210:2882:2881 -c 10001 -n dxjoceanbase -o memory_limit=6G,system_memory=1G,datafile_size=10G,log_disk_size=5G,__min_full_resource_pool_memory=1073741824,resource_hard_limit=150,config_additional_dir=/data/1/dxjoceanbase/etc3;/data/log1/dxjoceanbase/etc2
启动第二台机器的 observer 进程
–zone2:在 admin 用户下,启动第二台机器的 observer 进程
su - admin
cd /home/admin/oceanbase && /home/admin/oceanbase/bin/observer -I 192.168.55.209 -P 2882 -p 2881 -z zone2 -d /home/admin/oceanbase/store/dxjoceanbase -r ‘192.168.55.209:2882:2881;192.168.55.209:2882:2881;192.168.55.210:2882:2881’ -c 10001 -n dxjoceanbase -o “memory_limit=6G,system_memory=1G,datafile_size=10G,log_disk_size=5G,__min_full_resource_pool_memory=1073741824,resource_hard_limit=150,config_additional_dir=/data/1/dxjoceanbase/etc3;/data/log1/dxjoceanbase/etc2”

–验证 observer 进程启动成功
ps -ef|grep observer 输出如下:
admin 2230 1 6 15:10 ? 00:00:15 /home/admin/oceanbase/bin/observer -I 192.168.48.142 -P 2882 -p 2881 -z zone1 -d /home/admin/oceanbase/store/dxjoceanbase -r 192.168.48.142:2882:2881;192.168.55.209:2882:2881;192.168.55.210:2882:2881 -c 10001 -n dxjoceanbase -o memory_limit=6G,system_memory=1G,datafile_size=10G,log_disk_size=5G,__min_full_resource_pool_memory=1073741824,resource_hard_limit=150,config_additional_dir=/data/1/dxjoceanbase/etc3;/data/log1/dxjoceanbase/etc2
启动第三台机器的 observer 进程
–zone3:在 admin 用户下,启动第三台机器的 observer 进程
cd /home/admin/oceanbase && /home/admin/oceanbase/bin/observer -I 192.168.55.210 -P 2882 -p 2881 -z zone3 -d /home/admin/oceanbase/store/dxjoceanbase -r ‘192.168.48.142:2882:2881;192.168.55.209:2882:2881;192.168.55.210:2882:2881’ -c 10001 -n dxjoceanbase -o “memory_limit=6G,system_memory=1G,datafile_size=10G,log_disk_size=5G,__min_full_resource_pool_memory=1073741824,resource_hard_limit=150,config_additional_dir=/data/1/dxjoceanbase/etc3;/data/log1/dxjoceanbase/etc2”

–验证 observer 进程启动成功
ps -ef|grep observer 输出如下:
admin 2282 1 14 15:16 ? 00:00:01 /home/admin/oceanbase/bin/observer -I 192.168.55.210 -P 2882 -p 2881 -z zone3 -d /home/admin/oceanbase/store/dxjoceanbase -r 192.168.48.142:2882:2881;192.168.55.209:2882:2881;192.168.55.210:2882:2881 -c 10001 -n dxjoceanbase -o memory_limit=6G,system_memory=1G,datafile_size=10G,log_disk_size=5G,__min_full_resource_pool_memory=1073741824,resource_hard_limit=150,config_additional_dir=/data/1/dxjoceanbase/etc3;/data/log1/dxjoceanbase/etc2
注意:如果启动失败,可以看下日志中的报错信息,根据报错信息进行错误处理。
[admin@xxx ~]cat /home/admin/oceanbase/log/observer.log |grep “ERROR”
集群 BootStrap 操作
注意:同一个集群,只需要进行一次集群初始化,即仅执行一次 bootstrap 命令即可。
使用 obclient 命令登录集群
登录任意一台服务器,使用 obclient 命令登录集群
obclient -h127.0.0.1 -uroot -P2881 -p
修改集群的查询时间
set session ob_query_timeout=1000000000;
执行 bootstrap 命令
注意:启动 observer 进程时设置的不同 Zone 与机器 IP 要一一对应。执行时间约1m多点
–语法
ALTER SYSTEM BOOTSTRAP ZONE ‘zone1’ SERVER ‘xxx.xxx.xxx.xx1:2882’,ZONE ‘zone2’ SERVER ‘xxx.xxx.xxx.xx2:2882’,ZONE ‘zone3’ SERVER ‘xxx.xxx.xxx.xx3:2882’;

–示例
ALTER SYSTEM BOOTSTRAP ZONE ‘zone1’ SERVER ‘192.168.48.142:2882’,ZONE ‘zone2’ SERVER ‘192.168.55.209:2882’,ZONE ‘zone3’ SERVER ‘192.168.55.210:2882’;
如果这一步报错了,一般原因集中在如下几点:
● observer 进程启动参数不对。
● observer 相关目录权限不对。
● 日志目录空间不足一定比例(跟数据目录合用了大目录,空间被数据目录占用了)
● 节点时间不同步。
● 节点内存资源不足等等。
请排查这些问题后,清理目录后重新部署,详情请参见 清理 OceanBase 旧集群。
简单验证集群初始化成功
通过查看集群中 database,来简单验证集群初始化成功。
show databases;
输出如下:
obclient [(none)]> show databases;
±-------------------+
| Database |
±-------------------+
| information_schema |
| LBACSYS |
| mysql |
| oceanbase |
| ORAAUDITOR |
| SYS |
| test |
±-------------------+
7 rows in set (0.007 sec)
初始化 OBProxy
创建 OBProxy 账户
OBProxy 需要与后端 OBServer 节点保持通信,需要提前在 OceanBase 集群的 sys 租户下为 OBProxy 节点创建连接用户(proxyro)和密码。该用户密码用于启动 OBProxy 进程时配置相关参数来建立通信。
说明:proxyro 用户是 OBProxy 访问 OceanBase 集群的用户。一个 OceanBase 集群对应一个 proxyro 账号。
创建 proxyro 用户
CREATE USER proxyro IDENTIFIED BY ‘123456’;
给 proxyro 用户授权
GRANT SELECT ON . TO proxyro;
执行 exit 命令退出集群。
启动 OBProxy 节点
● 在安装了 OBProxy 的主机上执行。
● 进入 admin 用户下的 OBProxy 软件的 home 目录启动 OBProxy 进程。
OBProxy 启动时通过参数 rootservice_list 指定 OceanBase 集群。
语法
cd /opt/taobao/install/obproxy && bin/obproxy -r “xxx.xxx.xxx.1:2881;xxx.xxx.xxx.2:2881;xxx.xxx.xxx.3:2881” -p 2883 -o “observer_sys_password=$sha1_value,enable_strict_kernel_release=false,enable_cluster_checkout=false,enable_metadb_used=false” -c cluster_name
说明
● $sha1_value 应根据实际设置密码替换。例如:proxyro 用户设置的密码是 123456,则需要设置 observer_sys_password 的值是 7c4a8d09ca3762af61e59520943dc26494f8941b。查询密码 sha1 后的值命令如下:
[admin@xxx ~] echo -n 123456|sha1sum
参数解释
参数 说明
-r 指定 OBServer 节点 IP 和端口。
-p 指定服务端口号,一般指定为 2883。
-c 指定集群名称。
-o 指定硬件或者内核参数配置。
示例
–查询密码 sha1 后的值
echo -n 123456|sha1sum

–启动 OBProxy 节点
cd /opt/taobao/install/obproxy && bin/obproxy -r “192.168.48.142:2881;192.168.55.209:2881;192.168.55.210:2881” -p 2883 -o “observer_sys_password=7c4a8d09ca3762af61e59520943dc26494f8941b,enable_strict_kernel_release=false,enable_cluster_checkout=false,enable_metadb_used=false” -c dxjoceanbase
若执行此命令报错bin/obproxy: error while loading shared libraries: libidn.so.11: cannot open shared object file: No such file or directory,请执行该命令 sudo yum install libidn。
检查进程是否存在
ps -ef|grep obproxy
输出结果如下:
admin 2986 1 0 15:23 ? 00:00:00 bin/obproxy -r 192.168.48.142:2881;192.168.55.209:2881;192.168.55.210:2881 -p 2883 -o observer_sys_password=7c4a8d09ca3762af61e59520943dc26494f8941b,enable_strict_kernel_release=false,enable_cluster_checkout=false,enable_metadb_used=false -c dxjoceanbase
部署后验证
部署成功后,可以通过 OBProxy 连接集群。格式为: 用户名@租户名#集群名 或 集群名:租户名:用户名。
使用 root 用户登录 dxjoceanbase 集群的 sys 租户。
obclient -h127.0.0.1 -P2883 -uroot@sys#dxjoceanbase -Doceanbase -A
连接成功后,输入如下:
[admin@iZbp1i4d7p6sjwjysy9j8cZ obproxy]$ obclient -h127.0.0.1 -P2883 -uroot@sys#dxjoceanbase -Doceanbase -A
Welcome to the OceanBase. Commands end with ; or \g.
Your OceanBase connection id is 1
Server version: OceanBase 4.3.1.0 (r100010022024052916-9a755dd27aaaf5e34e8ad6ad95942a0d89e7c80f) (Built May 29 2024 17:21:45)

Copyright © 2000, 2018, OceanBase and/or its affiliates. All rights reserved.

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

obclient [oceanbase]>


文章转载自:

http://f1hdMdai.cxsdL.cn
http://aO4himKr.cxsdL.cn
http://rmm62FLM.cxsdL.cn
http://lwXDRvdw.cxsdL.cn
http://t3yjq8IE.cxsdL.cn
http://bM7YM5IM.cxsdL.cn
http://mtcV0C3O.cxsdL.cn
http://ccJu9XAc.cxsdL.cn
http://5TZRXvl8.cxsdL.cn
http://wpMzdzZ2.cxsdL.cn
http://TAmXJZBr.cxsdL.cn
http://5DjSCI9G.cxsdL.cn
http://WrkpKhMX.cxsdL.cn
http://PFUwlMsL.cxsdL.cn
http://BMvNgFaX.cxsdL.cn
http://kFH9BWEJ.cxsdL.cn
http://3dRtgsBJ.cxsdL.cn
http://V1Cqgldp.cxsdL.cn
http://lpoqZbG1.cxsdL.cn
http://XVTMh4cR.cxsdL.cn
http://mnw2gV33.cxsdL.cn
http://9btFbHur.cxsdL.cn
http://Pacx3uRB.cxsdL.cn
http://YJ4CKmce.cxsdL.cn
http://xcS16ahP.cxsdL.cn
http://WFZqQV9m.cxsdL.cn
http://X1i0lIo7.cxsdL.cn
http://qWxjqWSb.cxsdL.cn
http://USnyzirN.cxsdL.cn
http://JZHsTxpA.cxsdL.cn
http://www.dtcms.com/a/387942.html

相关文章:

  • 小迪安全v2023学习笔记(八十四讲)——协议安全桌面应用hydra爆破未授权检测
  • MAC-简化版枚举工具类
  • Science Robotics 美国康奈尔大学开发的新型触觉显示器
  • Java 零基础学习指南
  • 音频剪辑总出错?音视频分割工具免费功能实测 音视频分割工具新手怎么用?4步搞定音视频分割 音视频分割工具常见问题解决:新手避坑参考
  • 线性回归与 Softmax 回归总结
  • 文字一键生成视频软件哪家比较靠谱?
  • Android,Jetpack Compose,坦克大战游戏案例Demo(随机生成地图)
  • Unity 笔记:构建AAB包大小超过谷歌商店上限
  • 在idea中git修改用户名和邮箱/切换账号
  • 设计模式(C++)详解——组合模式(Composite Pattern)(1)
  • 103、23种设计模式之外观模式(12/23)
  • 依赖注入基础
  • 代码随想录二刷之“图论”~GO
  • 基础数学转金融数学考研:一场需要清醒规划的转型
  • Alpha World携手非小号Talking Web3,海上ALPHA WEB3派对启航
  • Vue3钩子,路由拦截实现
  • 数据结构七大排序算法模拟实现性能分析
  • vue+react笔记
  • springboot获取wav文件音频长度
  • 【Redis】-- 缓存
  • 鸿蒙高效数据处理框架全攻略:缓存、并行与流式实战
  • 全网首发! Nvidia Jetson Thor 128GB DK 刷机与测评(五)常用功能测评 - RealtimeSTT 音频转文本 同声传译
  • OpenHarmony 之生态规则管控服务(Ecological Rule Manager Service)源码深度解读
  • 无人机图传是什么意思 应用和趋势是什么?
  • arm coresight
  • Vue3 + vue-draggable-plus 实现可拖拽的数据源选择面板
  • Vue 项目主题切换功能实现:两种方案详解与选型分析
  • 有些软件要求基础环境包含oneAPI组件时带有小版本怎么解释
  • Vue3 基础