控制文件:记录数据库的状态信息,版本,redo的状态等等
表空间:
file segment:一张表存满1个G之后就会新生成文件
online wal log: 相当于redo
arch wal log: 归档日志
log file: 其他的状态日志等等
配置文件:
一、控制文件
记录数据库的状态信息
pg_controldata $PGDATA
二、数据文件
pg中,每个索引、每个表都是一个单独的文件,pg中称为page(也称为段),默认是每个大于1G的page会被分割。例如某个表有200g的大小,那么会被分割为200个文件存储
select relfilenode from pg_class where relname='pg_statistic';
select pg_relation_filepath('pg_statistic');
三、wal日志
1.查看wal日志相关命令
select pg_walfile_name(pg_current_wal_lsn()); --查看当前wal日志文件
select pg_current_wal_lsn(); --查看当前wal日志
select * from pg_ls_waldir() order by modification asc; --查看所有wal日志
select pg_switch_wal(); --日志切换
pg_waldump $PGDATA/pg_wal/000000010000000000000002 --查看日志文件内容 ()
select current_timestamp; --查看当前时间
例子:创建表t1,查看日志文件内容。查看t1所在文件
2.arch wal log 归档wal日志
(1)参数设置
wal_level = replica
archive_mode = on
archive_command = 'test ! -f /var/postgre/data1/archive1/%f && cp %p /var/postgre/data1/archive1/%f'
修改完参数之后重启数据库生效(pg_ctl restart -D $PGDATA -mf),重启数据库之后在通过select pg_switch_wal();语句切换日志,则切换的归档日志存放在/var/postgre/data1/archive1/目录下
四、运行日志文件
1.存放位置:$PGDATA/log/下
2.运行日志的参数配置
log_destination = 'stderr' # Valid values are combinations of
# stderr, csvlog, syslog, and eventlog,
# depending on platform. csvlog
# requires logging_collector to be on.logging_collector = on # Enable capturing of stderr and csvlog
# into log files. Required to be on for
# csvlogs.
# (change requires restart)log_directory = 'log' # directory where log files are written,
# can be absolute or relative to PGDATA日志输出目录
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' # log file name pattern,
# can include strftime() escapes 日志文件格式#log_file_mode = 0600 # creation mode for log files, 日志文件权限
# begin with 0 to use octal notation
#log_rotation_age = 1d # Automatic rotation of logfiles will
# happen after that time. 0 disables.多长时间重用日志
log_rotation_size = 10MB # Automatic rotation of logfiles will
# happen after that much log output.
# 0 disables. 日志达到多大重用#log_truncate_on_rotation = off # If on, an existing log file with the
# same name as the new log file will be
# truncated rather than appended to.
# But such truncation only occurs on
# time-driven rotation, not on restarts
# or size-driven rotation. Default is
# off, meaning append to existing files
# in all cases. 设置重用日志#log_min_messages = warning # values in order of decreasing detail: 日志级别
# debug5
# debug4
# debug3
# debug2
# debug1
# info
# notice
# warning
# error
# log
# fatal
# panic #log_min_duration_statement = -1 # -1 is disabled, 0 logs all statements
# and their durations, > 0 logs only
# statements running 慢sql记录#log_checkpoints = off #是否记录checkpoint操作
#log_connections = off #是否记录会话连接操作
#log_disconnections = off #是否记录会话断开操作
#log_duration = off #是否记录sql 之心时间
#log_lock_waits = off # log lock waits >= deadlock_timeout是否记录时间长的锁
#log_statement = 'none' # none, ddl, mod, all 是否记录ddl之类的操作
五、配置文件
1.postgresql.conf
2.pg防火墙介绍(pg实例层面的权限控制)
pg_hba.conf文件
配置文件分为5部分:
配置示例
#TYPE DATABASE USER ADDRESS METHOD
host all
local
说明:
这些说明pg_hba.conf配置文件也有相关的介绍
TYPE为local表示本地方式(即socket连接方式),host或hostssl为远程方式(tcp/ip连接方式)
DATABASE是需要访问的数据库是哪个? all表示所有的数据库
USER表示用哪个用户去连接
ADDRESS表示连接的地址或者网段
METHOD表示连接加密的方式
这个配置文件是从上往下读取的。
例如设置了如下两条,则10.10.0.1这个ip还是无法访问,因为配置文件是从上往下读取的。到上一条的时候10万网段的IP已经reject拒绝掉了的。这个需要注意下
host all all 10.10.0.0/24 reject
host all all 10.10.0.1/32 md5
注意:刚装完的pg,默认只监听了local,如果要远程连接,需要监听对外提供服务的地址。
vi postgressql.conf
listen_addresses = '0.0.0.0' # what IP address(es) to listen on;
总结:远程连接的两个条件
条件一、pg_hba.conf文件配置
条件二、postgressql.conf文件配置
举例如下:
vi pg_hba.conf
host all all 10.10.0.0/24 md5
vi postgressql.conf
listen_addresses = '0.0.0.0' # what IP address(es) to listen on;