수집의 가치 [복각] PostgreSQL의 시스템 아키텍처의 매우 상세한 요약

울트라 자세한 PostgreSQL의 시스템 아키텍처의 개요, 수집의 가치

HTTPS : // www.toutiao.com/i6715390855772897800/

 

그레그는 말했다 원래의 운영 및 유지 보수 2019년 7월 26일 0시 3분 0초

개요

로그 파일, 매개 변수 파일, 제어 파일, 데이터 파일, 로그를 다시 실행 (WAL), 여섯 PostgreSQL의 아키텍처를 소개하는 백그라운드 프로세스에서 오늘 기사.


구조

다음의 PostgreSQL의 주요 구조는 다음과 같다 :

울트라 자세한 PostgreSQL의 시스템 아키텍처의 개요, 수집의 가치

 

 


로그 파일

1, 로그 파일의 종류

1) $ PGDATA / 로그 실행 로그 (pg10되기 전에 $ PGDATA / pg_log)

2) $ PGDATA / pg_wal) pg10이 / pg_xlog $ PGDATA입니다 (전에 리두 로그

3) $ PGDATA / pg_xact 트랜잭션 로그를 커밋 (pg10되기 전에 $ PGDATA / pg_clog)

시작 pg_ctl 등 4) 서버 로그, 당신은 -l ./alert.log, 부팅시에 지정할 수 있습니다

2. 실행 로그

더 로그 디렉토리가 자동으로 개봉 후 생성되지 않을 경우 로그의 운영과 관련된 주요 매개 변수는 기본적으로 사용할 수 없습니다 다음과 같습니다.

울트라 자세한 PostgreSQL의 시스템 아키텍처의 개요, 수집의 가치

 

울트라 자세한 PostgreSQL의 시스템 아키텍처의 개요, 수집의 가치

 

 

3, 트랜잭션 로그 pg_xact

트랜잭션 로그 기록 메타 데이터 트랜잭션을 커밋 pg_xact. 기본적으로 사용 가능. 콘텐츠를 직접 읽을 수 없습니다.

4, 서버 로그

서버 로그를 지정하려면 시작 시간 pg_ctl -l 매개 변수를 지정하지 않으면 오류가 cmd를 수신에 출력 할 수있다. 서버는 데이터베이스에 기록 중요한 정보를 기록합니다.

lsof를가 쓰기 로그 파일을 필터링 할 수 있습니다

$ lsof를 -c 포스트 그레스 | 그립 REG | 그렙 -v는 / usr | 그렙 -v / dev에 | 그렙 -v / SYS

 


둘째, 매개 변수 파일

1 postgresql.conf의

pg的主要参数文件,有很详细的说明和注释,和Oracle的pfile,MySQL的my.cnf类似。默认在$PGDATA下。很多参数修改后都需要重启。9.6之后支持了alter system来修改,修改后的会存在$PGDATA/postgresql.auto.conf下,可以reload或者 restart来使之生效。

主要的参数如下:

울트라 자세한 PostgreSQL의 시스템 아키텍처의 개요, 수집의 가치

 

울트라 자세한 PostgreSQL의 시스템 아키텍처의 개요, 수집의 가치

 

 

2、pg_hba.conf

这个是黑白名单的设置。文件里有详细的参数说明,默认参数如下:

type 列有local,host,hostssl,hostnossl四种。local是本地认证

database 可以是all,或者指定的数据库

user列可以是all,或者具体的用户

address 可以是ip或者网段

method比较重要,有"trust", "reject", "md5", "password", "scram-sha-256", "gss", "sspi", "ident", "peer", "pam", "ldap", "radius" or "cert"这么多可选。trust是免密登录;reject是黑名单拒绝;md5是加密的密码;password是没有加密的密码;ident是Linux下PostgreSQL默认的local认证方式,凡是能正确登录服务器的操作系统用户(注:不是数据库用户)就能使用本用户映射的数据库用户不需密码登录数据库

3、 pg_ident.conf

pg_ident.con是用户映射配置文件。结合pg_hba.connf中,method为ident可以用特定的操作系统用户和指定的数据库用户登录数据库。如下:

pg_ident.conf如下:

울트라 자세한 PostgreSQL의 시스템 아키텍처의 개요, 수집의 가치

 

pg_hba.conf如下:

울트라 자세한 PostgreSQL의 시스템 아키텍처의 개요, 수집의 가치

 


三、控制文件

1、 控制文件位置

$PGDATA/global/pg_control

控制文件在数据库目录的global目录下。控制文件记录了数据库的重要信息。

2、 查看控制文件

pg_controldata可以查看控制文件的内容

$ pg_controldata $PGDATA
pg_control version number: 1100
Catalog version number: 201809051
Database system identifier: 6684270596680436587 #dbid
Database cluster state: in production # primary
pg_control last modified: Thu 16 May 2019 02:26:37 PM CST
Latest checkpoint location: 0/48812A0
Latest checkpoint's REDO location: 0/4881268 #redo 位置
Latest checkpoint's REDO WAL file: 000000010000000000000001 #wal文件号
Latest checkpoint's TimeLineID: 1
Latest checkpoint's PrevTimeLineID: 1
Latest checkpoint's full_page_writes: on
Latest checkpoint's NextXID: 0:572 #下一个事务id
Latest checkpoint's NextOID: 16388 #下一个OID
.....

controlfile记录了数据库运行的一些信息,比如数据库id,是否open,wal的位置,checkpoint的位置,等等。controlfile是很重要的文件,数据库部署和调整。


四、数据文件

1、page

pg中,每个索引和表都是一个单独的文件,pg中叫做page。默认是每个大于1G的page会被分割pg_class.relfilenode.1这样的文件。

Page默认大小为8KB,最大32KB,一个数据块中可存放多行的数据。块中的结构如下图:

울트라 자세한 PostgreSQL의 시스템 아키텍처의 개요, 수집의 가치

 

块头记录了如下信息:

  • 块的checksum值
  • 空闲空间的起始位置和结束位置
  • 特殊数据的起始位置
  • 其他一些信息
  • 行指针是一个32bit的数字,具体结构如下:
  • 行内容的偏移量,占15bit;
  • 指针的标记,占2bit;
  • 行内容的长度,占15bit。

行指针中表示行内容的偏移量是15bit,能表示的最大偏移量是2^15=32768,因此块的最大大小是32768,即32KB。

2、page物理位置

page的物理位置在$PGDATA/BASE/DATABASE_OID/PG_CLASS.RELFILENODE

需要注意的是,pg_class.relfilenode类似dba_objects.data_object_id,truncate表之后relfilenode会变。对应的物理文件名字也会变。


五、WAL日志

1、wal位置

wal在$PGDATA/pg_wal下。10之前为pg_xlog

2、wal命名格式

文件名称为16进制的24个字符组成,每8个字符一组,每组的意义如下

울트라 자세한 PostgreSQL의 시스템 아키텍처의 개요, 수집의 가치

 

3、手动切换WAL日志的命令

在PG10之前:

highgo=# select pg_switch_xlog();
pg_switch_xlog
----------------
0/B000C48
(1 row)

在PG10之后:

highgo = #) (pg_switch_wal을 선택; 
pg_switch_wal
----------------
0 / B000C48
(1 행)

여섯째, 백그라운드 프로세스

다음 PG 배경 처리 :

울트라 자세한 PostgreSQL의 시스템 아키텍처의 개요, 수집의 가치

 

추천

출처www.cnblogs.com/jinanxiaolaohu/p/11620212.html