其实高效企业资源管理平台——OpenTenBase全面解读的问题并不复杂,但是又很多的朋友都不太了解,因此呢,今天小编就来为大家分享高效企业资源管理平台——OpenTenBase全面解读的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!
OpenTenBase采用分布式集群架构(如下图)。该架构以无共享模式分布。节点是独立的并处理自己的数据。处理后的结果可以向上层汇总或者在节点之间传输。各处理单元通过网络协议进行通信,具有较好的并行处理和扩展能力。这也意味着只需要一台简单的x86服务器就可以部署OpenTenBase数据库集群。
下面简单介绍一下OpenTenBase的三大模块。
Coordinator:协调节点(简称CN)
业务接入门户负责数据分发和查询规划。多个节点位置相等,每个节点提供相同的数据库视图。从功能上来说,CN只存储系统的全局元数据,不存储实际的业务数据。
Datanode:数据节点(简称DN)
每个节点还存储业务数据的碎片。从功能上来说,DN节点负责完成协调节点分发的执行请求。
GTM: 全局事务管理器
负责管理集群事务信息,管理集群的全局对象,如序列等。
本文将详细介绍如何从源码开始,完成OpenTenBase V2.6的编译和安装过程。
1、安装准备和规划
1.1 环境要求
在开始编译之前,请确保您的系统满足以下要求:
•操作系统:TencentOS 2、TencentOS 3、OpenCloudOS、CentOS 7、CentOS 8、Ubuntu
•内存:至少4GB RAM
•磁盘空间:至少10GB,足够的磁盘空间用于源代码下载、编译和安装
1.2 软件环境
软件名称软件版本
Kylin服务器操作系统kylin_v10
OpenTenBaseV2.6
1.3 集群规划
集群规划
下面是两台服务器上1GTM主、1GTM备份、2CN主(CN主相等,所以不需要备份CN)、2DN主、2DN备份的集群。此集群是具备容灾能力的最低配置。
机器1:192.168.2.136
机器2:192.168.2.137
集群规划如下:
节点名称IP 数据目录
GTM master192.168.2.136/data/opentenbase/data/gtm
GTM Slave192.168.2.137/data/opentenbase/data/gtm
CN1192.168.2.136/data/opentenbase/data/coord
CN2192.168.2.137/data/opentenbase/data/coord
DN1 master192.168.2.136/data/opentenbase/data/dn001
DN1 从站192.168.2.137/data/opentenbase/data/dn001
DN2 master192.168.2.137/data/opentenbase/data/dn002
DN2 从站192.168.2.136/data/opentenbase/data/dn002
2.安装依赖
根据您的操作系统,使用以下命令安装必要的依赖项:
对于基于Red Hat 的系统(例如CentOS):
dnf -y install gcc make readline-devel zlib-devel openssl-devel uuid-devel bison flex git
对于基于Debian 的系统(例如Ubuntu):
sudo apt-get 更新
sudo apt-get -y install gcc make libreadline-dev zlib1g-dev libssl-dev libossp-uuid-dev bison flex git
3.创建OpenTenBase用户
所有需要安装OpenTenBase集群的机器上都需要创建opentenbase用户,并设置相应的目录权限。
#创建opentenbase用户
useradd -d /data/opentenbase -s /bin/bash -m opentenbase
#设置密码
密码opentenbase
--mko0-pl,
4.获取安装包
4.1 使用git获取源代码
创建软件目录
[根]
mkdir /dbsoft
使用git 克隆OpenTenBase 源代码存储库:
克隆源代码(root用户)
git 克隆https://github.com/OpenTenBase/OpenTenBase
4.2 下载源码包
登录git并下载最新的v2.6.0版本
https://github.com/OpenTenBase/OpenTenBase/tags
5.编译源码
5.1 配置安装环境变量
所有节点都需要运行
mkdir -p /data/opentenbase/{安装,dbsoft}
chown -R opentenbase:opentenbase /数据/opentenbase
5.2 编译安装
将源码包移动到源码目录
#复制安装包
cp /dbsoft/OpenTenBase-2.6.0.tar.gz /data/opentenbase/dbsoft
减压
tar -zxvf OpenTenBase-2.6.0.tar.gz
进入源码目录并编译:
#进入源码目录
/data/opentenbase/dbsoft/OpenTenBase-2.6.0
#赋予配置脚本执行权限
chmod +x 配置*
#配置编译选项
./configure --prefix=/data/opentenbase/install/opentenbase_bin_v2.6 --enable-user-switch --with-openssl --with-ossp-uuid CFLAGS=-g
#编译并安装软件
使干净
使-sj 4
进行安装
#contrib目录下编译工具
光盘贡献
使-sj 4
进行安装
6. 集群初始化
6.1 禁用SELinux和防火墙(可选)
--关闭selinux
vi /etc/selinux/config
# 禁用SELinux,将SELINUX=enforcing 更改为SELINUX=disabled
--关闭防火墙
systemctl 禁用防火墙
systemctl 停止防火墙
6.2.配置SSH
相互信任为了方便后续操作,建议opentenbase机器之间配置SSH互信:
[开放数据库]
#切换opentenbase用户
超开放数据库
# 192.168.2.136 生成SSH密钥对
ssh-keygen-trsa
# 将公钥复制到其他节点
ssh-copy-id -i ~/.ssh/id_rsa.pub opentenbase@192.168.2.136
ssh-copy-id -i ~/.ssh/id_rsa.pub opentenbase@192.168.2.137
6.3.配置opentenbase环境变量
集群中所有机器都需要配置
[开放数据库]
$ vim ~/.bashrc
导出OPENTENBSE_HOME=/data/opentenbase/install/opentenbase_bin_v2.6
导出路径=$OPENTENBase_HOME/bin:$PATH
导出LD_LIBRARY_PATH=$OPENTENBASE_HOME/lib:${LD_LIBRARY_PATH}
导出LC_ALL=C
6.4.配置根环境变量
集群中的所有机器都需要进行配置。将opentenbase用户的$PATH环境变量添加到/etc/environment中。
[根]
猫/etc/环境
路径=/data/opentenbase/install/opentenbase_bin_v2.6/bin:/data/opentenbase/.local/bin:/data/opentenbase/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
6.5.初始化pgxc_ctl.conf文件
[开放数据库]
mkdir /data/opentenbase/pgxc_ctl
cd /data/opentenbase/pgxc_ctl
vim pgxc_ctl.conf
下面是根据上面介绍的IP、端口、数据库目录、二进制目录等规划编写的pgxc_ctl.conf文件。
pgxc_ctl.conf配置如下:
#!/bin/bash
#DoubleNodeConfig
#主要调整IP地址
IP_1=192.168.2.136
IP_2=192.168.2.137
pgxcInstallDir=/data/opentenbase/install/opentenbase_bin_v2.6
pgxcOwner=opentenbase
默认数据库=postgres
pgxcUser=$pgxcOwner
tmp目录=/tmp
localTmpDir=$tmpDir
配置备份=n
configBackupHost=pgxc-链接器
configBackupDir=$HOME/pgxc
configBackupFile=pgxc_ctl.bak
#----GTM ----------
gtm名称=gtm
gtmMasterServer=$IP_1
gtm主端口=50001
gtmMasterDir=/data/opentenbase/data/gtm
gtmExtraConfig=无
gtmMasterSpecificExtraConfig=无
gtm从=y
gtmSlaveServer=$IP_2
gtm从端口=50001
gtmSlaveDir=/data/opentenbase/data/gtm
gtmSlaveSpecificExtraConfig=无
#----协调员--------
coordMasterDir=/数据/opentenbase /数据/坐标
coordArchLogDir=/data/opentenbase/data/coord_archlog
坐标名称=(cn001 cn002 )
坐标端口=(30004 30004)
池端口=(31110 31110)
坐标PgHbaEntries=(0.0.0.0/0)
coordMasterServers=($IP_1 $IP_2)
coordMasterDirs=($coordMasterDir $coordMasterDir)
坐标MaxWALsernd=2
coordMaxWALsenders=($coordMaxWALsernder $coordMaxWALsender )
坐标从=n
坐标从同步=n
coordArchLogDirs=($coordArchLogDir $coordArchLogDir)
coordExtraConfig=coordExtraConfig
猫$coordExtraConfig
# 添加到所有协调器postgresql.conf
# Original: $coordExtraConfig
include_if_exists="/data/opentenbase/global/global_opentenbase.conf"
wal_level=副本
wal_keep_segments=256
max_wal_senders=4
存档模式=打开
存档超时=1800
archive_command="回显0"
log_truncate_on_rotation=打开
log_filename="postgresql-%M.log"
log_rotation_age=4小时
log_rotation_size=100MB
热备=开
wal_sender_timeout=30 分钟
wal_receiver_timeout=30分钟
共享缓冲区=1024MB
最大池大小=2000
log_statement="ddl"
log_destination="csvlog"
日志记录收集器=打开
log_directory="pg_log"
监听地址="*"
最大连接数=2000
EOF
coordSpecificExtraConfig=(无无)
坐标ExtraPgHba=坐标ExtraPgHba
猫$coordExtraPgHba
本地所有所有信任
托管所有所有0.0.0.0/0 信任
主机复制全部0.0.0.0/0信任
托管所有所有:1/128 信任
主机复制全部:1/128 信任
EOF
coordSpecificExtraPgHba=(无无)
坐标附加从属=n
cad1_Sync=n
#---- 数据节点--------------------------------------
dn1MstrDir=/data/opentenbase/data/dn001
dn2MstrDir=/data/opentenbase/data/dn002
dn1SlvDir=/data/opentenbase/data/dn001
dn2SlvDir=/data/opentenbase/data/dn002
dn1ALDir=/data/opentenbase/data/datanode_archlog
dn2ALDir=/data/opentenbase/data/datanode_archlog
主数据节点=dn001
数据节点名称=(dn001 dn002)
数据节点端口=(40004 40004)
datanodePoolerPorts=(41110 41110)
datanodePgHbaEntries=(0.0.0.0/0)
datanodeMasterServers=($IP_1 $IP_2)
datanodeMasterDirs=($dn1MstrDir $dn2MstrDir)
dnWALSndr=4
datanodeMaxWALSenders=($dnWALSndr $dnWALSndr)
数据节点从=y
datanodeSlaveServers=($IP_2 $IP_1)
datanodeSlavePorts=(50004 54004)
datanodeSlavePoolerPorts=(51110 51110)
数据节点SlaveSync=n
datanodeSlaveDirs=($dn1SlvDir $dn2SlvDir)
datanodeArchLogDirs=($dn1ALDir/dn001 $dn2ALDir/dn002)
datanodeExtraConfig=datanodeExtraConfig
猫$datanodeExtraConfig
# 添加到所有协调器postgresql.conf
# Original: $datanodeExtraConfig
include_if_exists="/data/opentenbase/global/global_opentenbase.conf"
监听地址="*"
wal_level=副本
wal_keep_segments=256
max_wal_senders=4
存档模式=打开
存档超时=1800
archive_command="回显0"
log_directory="pg_log"
日志记录收集器=打开
log_truncate_on_rotation=打开
log_filename="postgresql-%M.log"
log_rotation_age=4小时
log_rotation_size=100MB
热备=开
wal_sender_timeout=30 分钟
wal_receiver_timeout=30分钟
共享缓冲区=1024MB
最大连接数=4000
最大池大小=4000
log_statement="ddl"
log_destination="csvlog"
wal_buffers=1GB
EOF
datanodeSpecificExtraConfig=(无无)
datanodeExtraPgHba=datanodeExtraPgHba
猫$datanodeExtraPgHba
本地所有所有信任
托管所有所有0.0.0.0/0 信任
主机复制全部0.0.0.0/0信任
托管所有所有:1/128 信任
主机复制全部:1/128 信任
EOF
datanodeSpecificExtraPgHba=(无无)
数据节点AdditionalSlaves=n
walArchive=n
6.5.分发二进制包
在一个节点配置完配置文件后,使用pgxc_ctl工具将二进制包部署到所有节点:
6.6.初始化集群
使用pgxc_ctl工具初始化集群:
pgxc_ctl -c /data/opentenbase/pgxc_ctl/pgxc_ctl.conf
#初始化集群
pgxc_ctl 全部初始化
初始化日志。忽略
2024-10-10 03:53:35.680 GMT [64489,coord(0.0)] LOG: 跳过丢失的配置文件"/data/opentenbase/global/global_opentenbase.conf"
2024-10-10 03:53:35.680 GMT [64489,coord(0.0)] LOG: 跳过丢失的配置文件"/data/opentenbase/global/global_opentenbase.conf"
2024-10-10 11:53:35.682 CST [64489,coord(0.0)] LOG: 监听IPv4 地址“0.0.0.0”,端口50004
2024-10-10 11:53:35.682 CST [64489,coord(0.0)] LOG: 监听IPv6 地址“:”,端口50004
2024-10-10 11:53:35.683 CST [64489,coord(0.0)] LOG: 正在Unix 套接字"/tmp/.s.PGSQL.50004" 上侦听
2024-10-10 11:53:44.803 CST [64489,coord(0.0)] LOG: init 提交shmem。
2024-10-10 11:53:50.550 CST [64489,coord(0.0)] LOG: 无法打开文件“global/pg_crypt_key.map”:没有用于bufFile 合并的此类文件或目录。
2024-10-10 11:53:50.550 CST [64489,坐标(0.0)] LOG:开始rel crypt加载映射文件
2024-10-10 11:53:50.550 CST [64489,coord(0.0)] LOG: 无法打开文件“global/pg_rel_crypt.map”:没有用于bufFile 合并的文件或目录。
2024-10-10 11:53:50.550 CST [64489,coord(0.0)] LOG: 结束rel crypt 加载映射文件
2024-10-10 11:53:58.003 CST [64489,coord(0.0)] LOG: 将日志输出重定向到日志记录收集器进程
2024-10-10 11:53:58.003 CST [64489,coord(0.0)] HINT: 未来的日志输出将出现在目录“pg_log”中。
20
24-09-06 19:34:20.971 GMT [220835,coord(0.0)] LOG: skipping missing configuration file "/data/opentenbase/global/global_opentenbase.conf" 2024-09-06 19:34:20.971 GMT [220835,coord(0.0)] LOG: skipping missing configuration file "/data/opentenbase/global/global_opentenbase.conf" 2024-09-07 03:34:20.972 CST [220835,coord(0.0)] LOG: listening on IPv4 address "0.0.0.0", port 54004 2024-09-07 03:34:20.973 CST [220835,coord(0.0)] LOG: listening on IPv6 address "::", port 54004 2024-09-07 03:34:20.973 CST [220835,coord(0.0)] LOG: listening on Unix socket "/tmp/.s.PGSQL.54004" 2024-09-07 03:34:20.974 CST [220835,coord(0.0)] FATAL: could not map anonymous shared memory: Cannot allocate memory 2024-09-07 03:34:20.974 CST [220835,coord(0.0)] HINT: This error usually means that PostgreSQL"s request for a shared memory segment exceeded available memory, swap space, or huge pages. To reduce the request size (currently 5500862692 bytes), reduce PostgreSQL"s shared memory usage, perhaps by reducing shared_buffers or max_connections. 2024-09-07 03:34:20.974 CST [220835,coord(0.0)] LOG: database system is shut down pg_ctl: could not start server【高效企业资源管理平台——OpenTenBase全面解读】相关文章:
用户评论
这个名字听起来很酷!
有6位网友表示赞同!
看起来是一个新兴的技术或平台?
有12位网友表示赞同!
Wonder if this is about blockchain or something.
有19位网友表示赞同!
Open源项目?我喜欢的类型!
有11位网友表示赞同!
应该是个基础设施吧?
有10位网友表示赞同!
TenBase 是什么缩写呢?搞不清楚。
有16位网友表示赞同!
Open 的话一定有很强的社区支持。
有20位网友表示赞同!
希望它简单易用,方便每个人使用。
有9位网友表示赞同!
有没有详细介绍或者官网可以了解一下?
有19位网友表示赞同!
新兴技术总是让人充满期待!
有17位网友表示赞同!
如果能解决实际问题,那就真棒了。
有8位网友表示赞同!
不知道它与其他现有平台有什么区别?
有7位网友表示赞同!
会不会是一个开源的数据库或工具库?
有20位网友表示赞同!
名字很有未来感的科技感!
有17位网友表示赞同!
期待这个项目能带来新的可能性!
有16位网友表示赞同!
听起来很专业,感觉是为开发者打造的平台。
有11位网友表示赞同!
会不会是一个学习新技术的社区?
有14位网友表示赞同!
希望以后能了解更多它的信息和实际应用!
有14位网友表示赞同!
总觉得这个名字很有创意,让人感到好奇/
有13位网友表示赞同!