可用于构建高性能、高安全、高可用的数据库集群,支持强一致多写和高可用能力。采用存算分离架构,实现计算、内存、存储三层池化,具备全局分布式缓存、分布式MVCC等关键技术。【此简介由AI生成】
什么是oGRAC
oGRAC是openGauss社区经过多年的技术沉淀和探索,秉承着做最具创新力的技术根社区的精神,以做高性能、高安全、高可用、高智能的满足客户诉求的数据库为初心,在架构、事务、优化器和存储引擎上从零自主创新,打造的业界首个开源的多主关系型数据库。
RAC是“Real Application Clusters”的缩写,是集中式数据库的一种典型架构,一般采用了存算分离的架构,计算任务在各个节点上执行,存储节点通过共享的集中式存储来实现。RAC架构下集群具备强一致的应用透明多写能力,用户可以像使用单机数据库使用集群;同时提供了集群的高可用能力,只要有任一存活节点,集群仍可提供正常的服务。
oGRAC使用存算分离架构,实现计算、内存、存储三层池化。通过全局分布式缓存技术、分布式MVCC、分布式锁、多主集群高可用等关键技术,支持集群多读多写能力。
oGRAC架构
oGRAC主要由五个主要部分组成:
- CMS(Cluster Manager Service): 负责集群管理。
- SQL引擎:oGRAC的SQL引擎通过基于规则的查询重写和基于代价的物理优化生成最优的执行计划。
- 存储引擎:oGRAC存储引擎是基于共享存储的支持多主的存储引擎,各个节点在架构上对等,从任何一个节点都可以对数据库做DDL/DML/DCL等操作。任何一个节点做的修改,其他节点都可以看到满足其事务一致性的数据,所有计算节点共享和读写存储上同一份用户数据。
- DSS(Distribute Storage Service):分布式存储服务,给数据库提供统一的底层存储接口,向下管理不同类型的存储形态,支持集中式和分布式存储。
- 工具:包括备份恢复工具、运维管理工具等。
更详细的oGRAC架构介绍,请参考架构描述。
工程说明
- 编程语言:C
- 编译工程:cmake或make,建议使用cmake
- 目录说明:
| 目录名称 | 说明 |
|---|---|
| build | 编译构建oGRAC数据库的脚本 |
| og_om | 安装部署脚本。 |
| docker | 构建、启动oGRAC容器镜像的相关脚本。 |
| library | 编译oGRAC需要的一些三方库头文件。 |
| pkg | oGRAC源代码目录,子目录代表不同的功能模块。 |
编译指南
-
系统初始化
关闭 SELinux 和防火墙:
setenforce 0 sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config systemctl stop firewalld systemctl disable firewalld -
创建目录和用户
mkdir -p compile_path chmod 755 -R compile_path useradd user_name passwd user_password chown -R user_name:user_name compile_path -
安装必要依赖
yum install -y libaio-devel openssl openssl-devel ndctl-devel \ ncurses ncurses-devel libtirpc-devel expect ant bison iputils \ iproute wget make gcc gcc-c++ gdb gdb-gdbserver python3 python3-devel \ git net-tools cmake automake byacc libtool --skip-broken -
获取源码
chmod 755 -R compile_path cd compile_path git clone https://gitcode.com/opengauss/oGRAC.git -
配置修改
如需关闭保护虚拟内存选项(如果编译安装的是debug版本建议关闭保护虚拟内存选项):
cd oGRAC/build sed -i 's/DUSE_PROTECT_VM=ON/DUSE_PROTECT_VM=OFF/g' Makefile.sh -
编译
cd build sh local_install.sh prepare sh local_install.sh compile -b debug-b, --build_type=<type>:指定编译类型(release/debug,默认release)
-
生成目录
输出包位于:
oGRAC/oGRAC-DATABASE-*-64bit
容器化安装指南
1.下载 docker 镜像
```shell
wget https://repo.openeuler.org/openEuler-22.03-LTS/docker_img/aarch64/openEuler-docker.aarch64.tar.xz
docker load < ./openEuler-docker.aarch64.tar.xz
```
-
启动 docker
docker run --name mirror_name -itd -v /home/uer_name/docker/data:/home --privileged=true --network=host --shm-size=128g IMAGE_ID- -v 是 docker 的挂载,将宿主机的
/home/uer_name/docker/data目录挂载到容器内的/home目录下 - --shm-size 是 docker 的共享内存大小,这里设置为 128g,建议不要小于128g
- IMAGE_ID 是 docker 镜像的 ID,可以通过
docker images查看
- -v 是 docker 的挂载,将宿主机的
-
Docker 镜像内配置
安装依赖:
yum install -y git unzip vim -
查看镜像文件
在 root 用户下输入:
docker images正常情况下会回显如下信息:
REPOSITORY TAG TMAGE ID CREATED SIZE mirror_name lastest xxxx About a minute ago 3.71GB -
创建并进入新的容器
docker run -it --name=mirror_namenode mirror_name /bin/bash --name=mirror_namenode表示规定容器的名字是什么; mirror_name表示以哪个镜像实例化 -
在容器内编译 oGRAC
下载源码
git clone https://gitcode.com/opengauss/oGRAC.git修改 Makefile.sh
sed -i 's+USE_PROTECT_VM=ON+USE_PROTECT_VM=OFF+' Makefile.sh -
编译安装 oGRAC
在 build 目录下执行下面的命令进行编译安装,示例为编译的 debug 版本,不指定 -b 默认是编 译 release 版本;-u 指定安装用户名
sh local_install.sh prepare sh local_install.sh compile -b debug sh local_install.sh install -u user_name
文档
更多安装指南、教程和API请参考用户文档。
下载
下载体验oGRAC请参考下载
社区
治理
查看openGauss是如何实现开放治理。
交流
贡献
欢迎大家来参与贡献。详情请参阅我们的社区贡献。