GPDB中的文件空间与表空间
GreenPlum是一个快速、灵活、纯软件的分析数据处理引擎,具有一些工具和特性可以充分利用任意个数硬件或者虚拟环境用来部署集群。这里讨论的一个特性是使用文件空间将数据加载和查询活动与底层的IO卷匹配。一旦在集群中创建了一个物理文件空间,它就会映射到一个逻辑表空间,然后创建表和索引时使用它。GP5的使用中可以参考下本文,GP6通过gpinitsystem工具创建文件空间并初始化集群,方便多了。
传统的GP集群中,Segment服务器配置了2个RAID组,每个组中多个磁盘驱动器。挂载为/data1和/dadta2。Primary和mirror的segment目录位于其中。表和索引等所有对象都存储再段目录中。此外,查询期间创建的临时文件也写入这2个文件系统中。
随着技术的不断进步,服务器有了相当大的改进和更新,允许更加灵活和强大的GP配置。以Dell PowerEdge R940为例,它可以管理TB的RAM,有4个CPU插槽来配置大量的Intel CPU内核,可以配置传统硬盘驱动器和较新的固态硬盘的组合,此外配置多大12个NVME SSD。
通过添加 Dell PowerVault MD3460 存储单元,驱动器扩展和整体多层磁盘配置可以更进一步,最多可容纳 60 个不同类型和大小的驱动器。在这种情况下,可以针对不同使用目的使用不同文件系统组来配置GP。
例如,如果您的 ETL 过程非常频繁地更改数据捕获,需要高速率的 IOPS,则可以使用文件空间和表空间将那些相关的表数据对象隔离到一个快速的、基于 SSD 的 ETL 磁盘暂存区。RAID-5 或 RAID-10 配置中的标准 1.8 TB、10K RPM 驱动器可以安装为更传统的数据目录,以容纳大量的primary和mirror段信息。
容量更大但性能较低的驱动器可用于为历史数据创建一个数据存储区域,这些数据不常被查询,但仍需要在线并可供用户使用以收集信息。最后,可以将临时文件重定向到备用存储区域,以实现快速数据访问流水线和处理。
那么云中如何配置 Greenplum 呢?好吧,事实证明,亚马逊等公共云提供商提供了许多可以在虚拟机上配置的分层存储选项。例如,使用文件空间和表空间,可以在吞吐量优化的 EBS 卷中为传统数据集创建表和索引组,同时为临时文件和潜在的 ETL 工作使用预配置 IOPS SSD。为了在 Greenplum 内部表中长期保留数据,可以考虑使用 Amazon 的 Cold Storage HDD 选项。
在 Greenplum 中,物理卷被分配为一个文件空间。这是磁盘上存储对象、数据和索引页的物理位置。要定义一个文件空间,primary、mirror和master必须有一个可用的物理位置。
要创建文件空间,请使用 gpfilespace 工具。在创建时,管理员提供文件空间的名称和primary、mirror和master的物理路径以用于对象存储。一旦在集群中创建,管理员就可以创建一个映射到先前创建的文件空间的逻辑表空间。从那里开始,可以在创建表和索引等对象时使用表空间名称。
表空间和文件空间示例
为了演示此功能的使用,使用在 Ubuntu Server 16.04 LTS 上运行的开源 Greenplum 5.4.0 在 Amazon EC2 中部署了一个三节点集群。这些实例配置了 Thoroughput Optimized 和 Cold 硬盘驱动器 EBS 卷。
彻底优化的 EBS 卷用于标准 /data1 和 /data2 文件系统。冷硬盘 EBS 卷用于 /historical 文件系统,其中创建了用户定义的文件空间。然后可以使用任何支持表空间子句的对象来定位 /historical 磁盘卷中的数据。
一旦在 Greenplum 集群中的所有节点上分配了一个磁盘卷,从主节点以用户 gpadmin 的身份,使用 -o 运行 gpfilespace 实用程序。生成默认配置文件的选项。为文件空间提供名称,为主段和镜像段提供基本路径以定位相关段目录。此外,还提供了主段的路径,以便主进程可以跟踪集群中哪些对象位于指定的文件空间/表空间中。通过向实用程序提供所有必需的参数,它将生成一个配置文件 (gpfilespace_config_yyyymmdd_xxxx) 以用于文件空间创建过程。
使用–gpconfig 选项重新运行 gpfilespace,以及在前面的步骤中生成的配置文件。Greenplum 将尝试在集群中提供的磁盘卷上创建一个新的文件空间。
一旦创建了文件空间,就需要使用 CREATE TABLESPACE 命令将物理位置映射到逻辑名称。这将创建一个可全局寻址的名称,然后可将其用于在其定义中支持 TABLESPACE 子句的任何对象。pg_tables 和 pg_indexes 系统目录表为每个项目(默认的或命名的表空间)提供表空间位置。
使用表空间进行备份和恢复
对于表空间和文件空间,gpcrondump 并行备份在 Greenplum 中的运行方式没有变化。仍然为集群中的每个主数据库段创建生成的 gp_dump 文件,并在主数据库上提供支持段/模式文件。
在主节点上,备份目录中有包含逻辑模式对象定义的模式创建文件和后数据文件。正是在这些模式文件中定义了命名表空间。在恢复 Greenplum 备份之前,确保文件空间的底层磁盘卷存在,使用 gpfilespace 实用程序重新创建文件空间(如果需要),所有卷都可以跨集群访问。
在具有文件空间的集群上运行 GPExpand
在 Greenplum 设置中使用文件空间和表空间的最后一个领域是当集群扩展到更多数据节点时。在新添加的服务器上,确保创建所有必需的磁盘卷并使用在现有数据节点上配置的相同基本目录和权限进行访问。运行初始 gpexpand 进程以生成相关配置文件。
除了正常的扩展配置文件外,在同一目录下还会创建一个扩展名为.fs 的文件。这包含要用于集群上添加的主段和镜像段的文件空间定义。当 gpexpand 进程第二次运行以在新硬件上执行实际的段扩展时,Greenplum 将自动创建必要的文件空间来存储表空间数据,因为表在新的数据库段上扩展。
原文
https://greenplum.org/greenplum-database-tablespaces/