-
Notifications
You must be signed in to change notification settings - Fork 6
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
251 additions
and
16 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,34 +1,269 @@ | ||
--- | ||
title: "Workshop投稿:OpenTenBase开源分布式数据库初探与实践" | ||
title: "社区贡献 | OpenTenBase_V2.6基于麒麟源码编译安装" | ||
date: 2024-10-23T16:31:00+08:00 | ||
#image_webp: images/news/news-post-2.webp | ||
image: images/news/news-post-20.jpg | ||
author: OpenTenBase | ||
description: "" | ||
--- | ||
🛠️ Workshop:10月21日OpenTenBase济南场 | ||
📝 作者:zhaoyiheng | ||
|
||
![微信图片_20241022131429.jpg](https://oss-emcsprod-public.modb.pro/image/editor/20241023-1849047697845739520_627144.jpg) | ||
======🐙🐚====== | ||
![](https://oss-emcsprod-public.modb.pro/image/auto/modb_20241030_c113a67c-9694-11ef-a88b-fa163eb4f6be.png) | ||
|
||
1️⃣ 在本次课程当中,对于开源OpenTenBase的部署过程、运作过程、基本逻辑和算法优化有了基础的了解和认识;对一些原本陌生的概念,例如分布式数据库、分片、分片键、分区、冷热分区等术语,有了一定的了解;对于“冷热数据搬迁”课题进行了一些思考。 | ||
**前言:什么是OpenTenBase** | ||
|
||
![架构图](https://i0.hdslb.com/bfs/new_dyn/a53d9c96c90d81205771cd219ea26d841543475738.jpg@1192w_596h.avif) | ||
OpenTenBase 是一个提供写可靠性,多主节点数据同步的关系数据库集群平台。你可以将 OpenTenBase 配置一台或者多台主机上, OpenTenBase 数据存储在多台物理主机上面。数据表的存储有两种方式, 分别是 distributed 或者 replicated ,当向OpenTenBase发送查询 SQL时, OpenTenBase 会自动向数据节点发出查询语句并获取最终结果。 | ||
|
||
2️⃣ 在实践环节,了解了使用pgAdmin软件访问数据库的基本方法,进行用户的注册、模式(Schema)与表(Table)的创建。 | ||
OpenTenBase 采用分布式集群架构(如下图), 该架构分布式为无共享(share nothing)模式,节点之间相应独立,各自处理自己的数据,处理后的结果可能向上层汇总或在节点间流转,各处理单元之间通过网络协议进行通信,并行处理和扩展能力更好,这也意味着只需要简单的x86服务器就可以部署 OpenTenBase 数据库集群。 | ||
|
||
![使用pgAdmin软件访问数据库](https://i0.hdslb.com/bfs/new_dyn/ab4bb3fdf92c4fa718613010703cf29d1543475738.png@1144w.avif) | ||
![](https://oss-emcsprod-public.modb.pro/image/auto/modb_20241030_c1268ce2-9694-11ef-a88b-fa163eb4f6be.png) | ||
|
||
3️⃣ 应用课程中学到的知识完成分布式表创建、复制表创建、分区表创建、冷热表创建,插入、查询数据等一系列基于OpenTenBase数据库语法的基本操作。 | ||
下面简单解读一下OpenTenBase的三大模块 | ||
|
||
![表创建](https://i0.hdslb.com/bfs/new_dyn/[email protected]) | ||
• Coordinator:协调节点(简称CN) | ||
|
||
4️⃣ 通过查询查询计划,可以更加深入地了解到冷热分区的工作过程,验证冷热分区的正确性和有效性。 | ||
业务访问入口,负责数据的分发和查询规划,多个节点位置对等,每个节点都提供相同的数据库视图;在功能上CN上只存储系统的全局元数据,并不存储实际的业务数据。 | ||
|
||
![](https://i0.hdslb.com/bfs/new_dyn/[email protected]) | ||
• Datanode:数据节点(简称DN) | ||
|
||
每个节点还存储业务数据的分片在功能上,DN节点负责完成执行协调节点分发的执行请求。 | ||
|
||
• GTM:全局事务管理器(Global Transaction Manager) | ||
|
||
负责管理集群事务信息,同时管理集群的全局对象,比如序列等。 | ||
|
||
本文将详细介绍如何从源码开始,完成 OpenTenBase V2.6 的编译和安装过程。 | ||
|
||
**一、安装准备及规划** | ||
|
||
**1.1 环境要求** | ||
|
||
在开始编译之前,请确保你的系统满足以下要求: | ||
|
||
• 操作系统:TencentOS 2, TencentOS 3, OpenCloudOS, CentOS 7, CentOS 8, Ubuntu | ||
|
||
• 内存:至少 4GB RAM | ||
|
||
• 磁盘空间:至少10GB,足够的磁盘空间用于源码下载、编译和安装 | ||
|
||
**1.2 软件环境** | ||
|
||
![](https://oss-emcsprod-public.modb.pro/image/auto/modb_20241030_c1383c1c-9694-11ef-a88b-fa163eb4f6be.png) | ||
|
||
**1.3 集群规划** | ||
|
||
• 集群规划 | ||
|
||
下面以两台服务器上搭建1GTM主,1GTM备,2CN主(CN主之间对等,因此无需备CN),2DN主,2DN备的集群,该集群为具备容灾能力的最小配置 | ||
|
||
![](https://oss-emcsprod-public.modb.pro/image/auto/modb_20241030_c149e106-9694-11ef-a88b-fa163eb4f6be.png) | ||
|
||
集群规划如下: | ||
|
||
![](https://oss-emcsprod-public.modb.pro/image/auto/modb_20241030_c15875fe-9694-11ef-a88b-fa163eb4f6be.png) | ||
|
||
**二、安装依赖** | ||
|
||
根据你的操作系统,使用以下命令安装必要的依赖包: | ||
|
||
对于基于 Red Hat 的系统(如 CentOS): | ||
|
||
![](https://oss-emcsprod-public.modb.pro/image/auto/modb_20241030_c160cb82-9694-11ef-a88b-fa163eb4f6be.png) | ||
|
||
对于基于 Debian 的系统(如 Ubuntu): | ||
|
||
![](https://oss-emcsprod-public.modb.pro/image/auto/modb_20241030_c16e8434-9694-11ef-a88b-fa163eb4f6be.png) | ||
|
||
**三、创建 OpenTenBase 用户** | ||
|
||
所有需要安装 OpenTenBase 集群的机器上都需要创建 opentenbase 用户,并设置相应的目录权限。 | ||
|
||
![](https://oss-emcsprod-public.modb.pro/image/auto/modb_20241030_c1785086-9694-11ef-a88b-fa163eb4f6be.png) | ||
|
||
**四、获取安装包** | ||
|
||
**4.1 git获取源码** | ||
|
||
• 创建软件目录 | ||
|
||
![](https://oss-emcsprod-public.modb.pro/image/auto/modb_20241030_c18be9c0-9694-11ef-a88b-fa163eb4f6be.png) | ||
|
||
• 使用 git 克隆 OpenTenBase 的源码仓库: | ||
|
||
克隆源码(root用户) | ||
|
||
git clone https://github.com/OpenTenBase/OpenTenBase | ||
|
||
**4.2 下载源码包** | ||
|
||
登录git,下载最新的v2.6.0版本 | ||
|
||
![](https://oss-emcsprod-public.modb.pro/image/auto/modb_20241030_c1982456-9694-11ef-a88b-fa163eb4f6be.png) | ||
|
||
**五、编译源码** | ||
|
||
**5.1 配置安装环境变量** | ||
|
||
所有节点都要操作 | ||
|
||
![](https://oss-emcsprod-public.modb.pro/image/auto/modb_20241030_c1a32a40-9694-11ef-a88b-fa163eb4f6be.png) | ||
|
||
**5.2 编译安装** | ||
|
||
• 将源码包移动到源码目录 | ||
|
||
![](https://oss-emcsprod-public.modb.pro/image/auto/modb_20241030_c1b13360-9694-11ef-a88b-fa163eb4f6be.png) | ||
|
||
• 进入源码目录并进行编译: | ||
|
||
![](https://oss-emcsprod-public.modb.pro/image/auto/modb_20241030_c1bb6524-9694-11ef-a88b-fa163eb4f6be.png) | ||
|
||
**六、集群初始化** | ||
|
||
**6.1 禁用 SELinux 和 防火墙 (可选)** | ||
|
||
![](https://oss-emcsprod-public.modb.pro/image/auto/modb_20241030_c1d56762-9694-11ef-a88b-fa163eb4f6be.png) | ||
|
||
**6.2 配置 SSH** | ||
|
||
互信为了方便后续操作,建议配置opentenbase机器间的 SSH 互信: | ||
|
||
![](https://oss-emcsprod-public.modb.pro/image/auto/modb_20241030_c1e31d58-9694-11ef-a88b-fa163eb4f6be.png) | ||
|
||
**6.3 配置opentenbase环境变量** | ||
|
||
集群所有机器都需要配置 | ||
|
||
![](https://oss-emcsprod-public.modb.pro/image/auto/modb_20241030_c1ef391c-9694-11ef-a88b-fa163eb4f6be.png) | ||
|
||
**6.4 配置root环境变量** | ||
|
||
集群所有机器都需要配置,把opentenbase用户的$PATH环境变量添加到 etc/environment | ||
|
||
![](https://oss-emcsprod-public.modb.pro/image/auto/modb_20241030_c20293fe-9694-11ef-a88b-fa163eb4f6be.png) | ||
|
||
**6.5 初始化pgxc\_ctl.conf文件** | ||
|
||
![](https://oss-emcsprod-public.modb.pro/image/auto/modb_20241030_c20d75d0-9694-11ef-a88b-fa163eb4f6be.png) | ||
|
||
如下,是结合上文描述的IP,端口,数据库目录,二进制目录等规划来写的pgxc\_ctl.conf文件。 | ||
|
||
pgxc\_ctl.conf配置如下: | ||
|
||
![](https://oss-emcsprod-public.modb.pro/image/auto/modb_20241030_c21e4838-9694-11ef-a88b-fa163eb4f6be.png) | ||
|
||
![](https://oss-emcsprod-public.modb.pro/image/auto/modb_20241030_c22a4034-9694-11ef-a88b-fa163eb4f6be.png) | ||
|
||
![](https://oss-emcsprod-public.modb.pro/image/auto/modb_20241030_c245cafc-9694-11ef-a88b-fa163eb4f6be.png) | ||
|
||
![](https://oss-emcsprod-public.modb.pro/image/auto/modb_20241030_c258875a-9694-11ef-a88b-fa163eb4f6be.png) | ||
|
||
![](https://oss-emcsprod-public.modb.pro/image/auto/modb_20241030_c2680ae0-9694-11ef-a88b-fa163eb4f6be.png) | ||
|
||
![](https://oss-emcsprod-public.modb.pro/image/auto/modb_20241030_c27ffb46-9694-11ef-a88b-fa163eb4f6be.png) | ||
|
||
**6.6 分发二进制包** | ||
|
||
在一个节点上配置好配置文件后,使用 pgxc\_ctl 工具将二进制包部署到所有节点: | ||
|
||
![](https://oss-emcsprod-public.modb.pro/image/auto/modb_20241030_c29652a6-9694-11ef-a88b-fa163eb4f6be.png) | ||
|
||
分发日志 | ||
|
||
![](https://oss-emcsprod-public.modb.pro/image/auto/modb_20241030_c2a16308-9694-11ef-a88b-fa163eb4f6be.png) | ||
|
||
注:以下指令均在pgxc\_ctl终端命令行中 | ||
|
||
**6.7 初始化集群** | ||
|
||
使用 pgxc\_ctl 工具初始化集群: | ||
|
||
![](https://oss-emcsprod-public.modb.pro/image/auto/modb_20241030_c2b33196-9694-11ef-a88b-fa163eb4f6be.png) | ||
|
||
初始化日志 | ||
|
||
![](https://oss-emcsprod-public.modb.pro/image/auto/modb_20241030_c2cae0a2-9694-11ef-a88b-fa163eb4f6be.png) | ||
|
||
![](https://oss-emcsprod-public.modb.pro/image/auto/modb_20241030_c2eb1bb0-9694-11ef-a88b-fa163eb4f6be.png) | ||
|
||
![](https://oss-emcsprod-public.modb.pro/image/auto/modb_20241030_c30c2328-9694-11ef-a88b-fa163eb4f6be.png) | ||
|
||
![](https://oss-emcsprod-public.modb.pro/image/auto/modb_20241030_c317e6ea-9694-11ef-a88b-fa163eb4f6be.png) | ||
|
||
**6.8 查看集群状态** | ||
|
||
![](https://oss-emcsprod-public.modb.pro/image/auto/modb_20241030_c32ce31a-9694-11ef-a88b-fa163eb4f6be.png) | ||
|
||
日志如下 | ||
|
||
![](https://oss-emcsprod-public.modb.pro/image/auto/modb_20241030_c337340a-9694-11ef-a88b-fa163eb4f6be.png) | ||
|
||
**6.9 安装错误处理** | ||
|
||
1)日志查看 | ||
|
||
一般init集群出错,终端会打印出错误日志,通过查看错误原因,更改配置即可,或者可以通过/data/opentenbase/pgxc\_ctl/pgxc\_log路径下的错误日志查看错误,排查配置文件的错误 | ||
![](https://oss-emcsprod-public.modb.pro/image/auto/modb_20241030_c3433d9a-9694-11ef-a88b-fa163eb4f6be.png) | ||
|
||
2)清理集群重新安装 | ||
|
||
通过运行 pgxc\_ctl 工具,执行clean all命令删除已经初始化的文件,修改pgxc\_ctl.conf文件,重新执行init all命令重新发起初始化。 | ||
|
||
![](https://oss-emcsprod-public.modb.pro/image/auto/modb_20241030_c34ff15c-9694-11ef-a88b-fa163eb4f6be.png) | ||
|
||
3) 常见问题 | ||
|
||
• 执行inti all时,提示pg\_ctl命令找不到 | ||
|
||
这样的问题,通常是环境变量的问题,通过root用户配置/etc/environment 解决 | ||
|
||
![](https://oss-emcsprod-public.modb.pro/image/auto/modb_20241030_c35d8c72-9694-11ef-a88b-fa163eb4f6be.png) | ||
|
||
• 执行inti all时,提示无法创建目录 | ||
|
||
![](https://oss-emcsprod-public.modb.pro/image/auto/modb_20241030_c36865b6-9694-11ef-a88b-fa163eb4f6be.png) | ||
|
||
这样的问题,通常是分发节点上,没有创建对应的目录 | ||
|
||
解决方案:检查所有节点的目录配置,如果没有创建,创建即可。 | ||
|
||
![](https://oss-emcsprod-public.modb.pro/image/auto/modb_20241030_c3771a70-9694-11ef-a88b-fa163eb4f6be.png) | ||
|
||
**七、集群访问** | ||
|
||
访问OpenTenBase集群和访问单机的PostgreSQL基本上无差别,我们可以通过任意一个CN访问数据库集群:例如通过连接CN节点select pgxc\_node表即可查看集群的拓扑结构(当前的配置下备机不会展示在pgxc\_node中),在Linux命令行下通过psql访问的具体示例如下: | ||
|
||
**7.1 登录cn主节点** | ||
|
||
![](https://oss-emcsprod-public.modb.pro/image/auto/modb_20241030_c381e694-9694-11ef-a88b-fa163eb4f6be.png) | ||
|
||
**7.2 使用数据库前需要创建default group以及sharding表** | ||
|
||
OpenTenBase使用datanode group来增加节点的管理灵活度,要求有一个default group才能使用,因此需要预先创建;一般情况下,会将节点的所有datanode节点加入到default group里 另外一方面,OpenTenBase的数据分布为了增加灵活度,加了中间逻辑层来维护数据记录到物理节点的映射,我们叫sharding,所以需要预先创建sharding,命令如下: | ||
|
||
![](https://oss-emcsprod-public.modb.pro/image/auto/modb_20241030_c390cfd8-9694-11ef-a88b-fa163eb4f6be.png) | ||
|
||
**7.3 创建数据库,用户,创建表,增删查改等操作** | ||
|
||
![](https://oss-emcsprod-public.modb.pro/image/auto/modb_20241030_c3a8126a-9694-11ef-a88b-fa163eb4f6be.png) | ||
|
||
**八、集群启停** | ||
|
||
**8.1 停止集群** | ||
|
||
![](https://oss-emcsprod-public.modb.pro/image/auto/modb_20241030_c3b4d9d2-9694-11ef-a88b-fa163eb4f6be.png) | ||
|
||
停止日志 | ||
|
||
![](https://oss-emcsprod-public.modb.pro/image/auto/modb_20241030_c3c65e3c-9694-11ef-a88b-fa163eb4f6be.png) | ||
|
||
**8.2 启动集群** | ||
|
||
![](https://oss-emcsprod-public.modb.pro/image/auto/modb_20241030_c3d8054c-9694-11ef-a88b-fa163eb4f6be.png) | ||
|
||
**九、结语** | ||
|
||
通过以上步骤,你已经成功地从源码编译并安装了 OpenTenBase V2.6。现在你可以开始使用 OpenTenBase 来管理你的分布式数据库集群。 | ||
|
||
总体而言,本次课程收获颇丰,希望以后能够深入接触更多有关开源数据库的知识和技能。 | ||
|
||
<img src=../images/news-post-9-11.png class="img-fluid" /><br/> | ||
|
||
|
@@ -42,7 +277,7 @@ description: "" | |
|
||
* AtomGit | ||
|
||
https://atomgit.com/opentenbase/OpenTenBase | ||
https://atomgit.com/opentenbase | ||
* GitHub | ||
|
||
https://github.com/OpenTenBase/OpenTenBase | ||
https://github.com/OpenTenBase |