GPDB · 特性分析· Filespace和Tablespace

Filespace和Tablespace

Tablespace允许每个节点使用多种文件目录或者文件系统,当前所有数据都是存储在默认base目录下。我们可以根据需要制定最优的物理存储方式。使用表空间有下面几个优点:

  • 根据数据使用频率来选择不同的存储类型
  • 控制一些数据库对象的IO性能

比如历史数据表我们存放在SATA盘,频繁使用的表存放在SSD盘。

filespace指的是所有的存储文件系统位置的集合。
1个filespace可以被1个或多个tablespace使用,可以通过

select * from pg_filespace_entry,pg_tablespace,pg_filespace where pg_filespace.oid=pg_filespace_entry.fsefsoid and pg_filespace.oid=pg_tablespace.spcfsoid

SQL命令查看filespace和tablespace对应关系。

创建Filespace

GP有个默认的Filespace是pg_system

postgres=# select * from pg_filespace;
  fsname   | fsowner
-----------+---------
 pg_system |      10
(1 rows)

如果需要创建新的Filespace,那么需要通过gpfilespace工具创建,步骤如下:

  • 创建config文件

文件每行内容格式为:<hostname>:<dbid>:/<filesystem_dir>/<seg_datadir_name>,每一个节点都需要配置,包括Master、Slave以及Segment
gpfilespace_config文件(文件名任意)内容如下:

filespace:test
localhost:1:/data1/test/demoDataDir-1
localhost:2:/data1/test/demoDataDir0
localhost:3:/data1/test/demoDataDir1
localhost:4:/data1/test/demoDataDir2
  • 执行gpfilespace命令
gpfilespace -c gpfilespace_config

一旦集群中创建了新的Filespace,那么再创建备库、创建Mirror等都需要指定Filespace

使用gpfilespace创建filespace过程中会重启整个集群,而关闭集群的命令是gpstop -M fast,这样如果存在备库连接,那么会一直等待,所以我们需要手动杀掉备库连接,这样才能快速完成整个过程。

创建备库时创建Filespace

参数格式为:filespace1_name:fs1_location,filespace2_name:fs2_location

gpinitstandby -s localhost -P 15433 -F test:/data1/test/demoDataDir0-stand,pg_system:/data1/tmp_datadir_for_gpdb_bld/qddir_stand -a

创建Mirror时创建Filespace

文件格式为:

   filespaceOrder=[<filespace1_fsname>[:<filespace2_fsname>:...]
   mirror<content>=<content>:<address>:<port>:<mir_replication_port>:<pri_replication_port>:<fselocation>[:<fselocation>:...]

内如如下:

filespaceOrder=test
mirror0=0:localhost:21000:22000:23000:/data1/test/mirror/demoDataDir0:/data1/test/mirror_file/demoDataDir0
mirror1=1:localhost:21001:22001:23001:/data1/test/mirror/demoDataDir1:/data1/test/mirror_file/demoDataDir1
mirror2=2:localhost:21002:22002:23002:/data1/test/mirror/demoDataDir2:/data1/test/mirror_file/demoDataDir2

创建Tablespace

语法:CREATE TABLESPACE tablespace_name [OWNER username] FILESPACE filespace_name
这点和PG不同,PG可以在创建tablespace的时候直接指定文件系统位置,PG语法如下:

CREATE TABLESPACE tablespace_name
    [ OWNER user_name ]
    LOCATION 'directory'
    [ WITH ( tablespace_option = value [, ... ] ) ]

GP有两个默认的tablepace,pg_default和pg_global

postgres=# select spcname,spcfsoid from pg_tablespace ;
  spcname   | spcfsoid
------------+----------
 pg_default |     3052
 pg_global  |     3052
(2 rows)

临时文件空间

Greenplum在执行SQL的过程中可能产生大量的workfile和temporary file,为了单独隔离这些文件(避免数据磁盘满或者放到SSD盘提高性能等),可以将这些临时文件空间可以单独放到一个文件系统中

  • 查看当前的临时文件filespace
gpfilespace --showtempfilespace
  • 将临时文件目录移到指定的filespace
gpfilespace --movetempfilespace test

执行成功之后将会在每个节点的数据目录(包括Master、Slave、Segment)下生产一个gp_temporary_files_filespace文件,内容如下:

17511
5 /data1/test/demoDataDir0-stand
1 /data1/test/demoDataDir-1

总结

Filespace和Tablespace不仅能够方便我们管理数据存储位置,而且合理搭配SSD和SATA盘能够显著提升IO性能。当然,我们需要熟悉gpfilespace命令,filespace创建之后是不能够删除的,同时在创建备库、创建Mirror需要指定filespace。

时间: 2024-11-05 17:25:20

GPDB · 特性分析· Filespace和Tablespace的相关文章

GPDB · 特性分析 · Segment 修复指南

问题背景 GPDB是中央控制节点式的架构,在一个 GreenPlum 集群中,有一个 Master 节点和多个 Segment 节点.Master 是中央控制节点,Segment 是数据存放节点.所有的Segment节点平等,均由Master管理.架构如下图: GreenPlum架构图 当GP Master出现问题的时候,可以通过外部的HA监控模块发现并激活备库,Standby Master 正常后删除原来的 Master 进行重建备库. 而 Segment 的修复与此不同!由上图可知,Segm

GPDB · 特性分析· GreenPlum FTS 机制

前言 FTS(Fault Tolerance Serve)是GreenPlum中的故障检测服务,是保证GP高可用的核心功能.GreenPlum的Segment的健康检测及HA是由GP Master实现的,GP Master上面有个专门的进程–FTS进程,它可以快速检测到Primary或者Mirror是否挂掉,并及时作出Primary/Mirror 故障切换.如果FTS挂掉了,Master将会重新fork出来一个FTS进程. FTS实现原理 GP Master上面的FTS进程每隔60s(时间可以配

GPDB · 特性分析 · Segment事务一致性与异常处理

事务一致性 这篇月报Primary和Mirror同步机制讲了Primary和Mirror之间各种数据和文件的同步过程.这些数据和文件的同步,看似彼此独立.那么如何保证某个时间点Mirror的所有数据是一致的,即任何时间点发生HA切换,Mirror都能达到一致性状态并对外提供服务?正如我们前面提到的,这主要靠同步的顺序来保证: AO表的同步是个强同步的过程,数据在更新发生时即同步到Mirror,Primary和Mirror时刻保持着数据一致性.另一方面,事务提交时会更新AO表文件的尾指针信息,并同

GPDB · 特性分析· GreenPlum Primary/Mirror 同步机制

PostgreSQL 主备同步机制是通过流复制实现,其原理见之前的月报PG主备流复制机制. Greenplum 是基于PostgreSQL开发的,它的主备也是通过流复制实现,但是Segment节点中的Primary和Mirror之间的数据同步是基于文件级别的同步实现的.为什么Primary和Mirror不能再使用流复制实现呢?主要有两个原因: Append Only表不写WAL日志,所以Append Only表的数据就不能通过XLOG发送到Mirror再Apply: pg_control等文件也

GPDB · 特性分析· Greenplum 备份架构

Greenplum是分布式数据库,这为备份带来了一些困难.其本身提供了一个工具是gpcrondump,对其二进制备份工具gp_dump做了一些封装,而gp_dump则是对pg_dump做了封装,在每个节点上执行pg_dump完成数据的备份.在其每个节点的行为上,与PG类似,但其分布式的架构,则有值得了解的地方. 备份方法 GP备份的工具gpcrondump是一个Python脚本,是对gp_dump的一个封装.而gp_dump则负责整个备份过程的控制与结果处理,包括获取元数据信息.启动Segmen

PgSQL · 特性分析 · 数据库崩溃恢复(上)

背景 为了合并I/O提高性能,PostgreSQL数据库引入了共享缓冲区,当数据库非正常关闭,比如服务器断电时,共享缓冲区即内存中的数据就会丢失,这个时候数据库操作系统重启时就需要从非正常状态中恢复过来,继续提供服务.本文将具体分析在这种情况下,PostgreSQL数据库如何从崩溃状态中恢复. 上期月报PgSQL · 特性分析 · checkpoint机制浅析中介绍了PostgreSQL中的checkpoint机制.其中提到,当PostgreSQL数据库崩溃恢复时,会以最近的checkpoint

PgSQL · 特性分析 · 数据库崩溃恢复(下)

背景 在上期月报PgSQL · 特性分析 · 数据库崩溃恢复(上),我们分析了PostgreSQL在数据库非正常退出后(包括通过recovery.conf用户主动恢复)的处理,概括起来分为以下几步: 1.如果满足以下条件之一,则进行非正常退出恢复 pg_control文件中的数据库状态不正常(非DB_SHUTDOWNED) pg_control文件中记录的最新检查点读取不到XLOG日志文件 2.用户指定recovery.conf文件主动恢复3.根据pg_control.backup_label确

设计思想:需求特性分析新浪微博产品设计

闲聊几句新浪微博 刚刚看了麦田的<闲聊几句新浪微博>,我想从另外一个思维角度来看这个产品.其实我一向认为对于产品设计来说,最终是否能够成功,很大程度上取决于对需求特性的把握,而对需求特性的把握往往需要定性加定量的分析,而定量分析对于外部观察者来说,由于往往很难得到实际运营数据,所以无法得到有效的参考.另外一方面,对于互动型社区产品,产品功能设置和运营本身会对数据产生很大的影响,因此这部分影响也需要通过一些方法来定量分析,排除出去,最终才能够看清楚产品本身的逻辑和用户需求特性之间的真正关联性.麦

matlab 编程 ...-磁光调制的模拟与特性分析

问题描述 磁光调制的模拟与特性分析 基于matlab做磁光调制波形的仿真,利用matlab做仿真做