postgresql 归档日志清理 pg数据库归档日志_数据库

控制文件:记录数据库的状态信息,版本,redo的状态等等

表空间

file segment:一张表存满1个G之后就会新生成文件

online wal log: 相当于redo

arch wal log: 归档日志

log file: 其他的状态日志等等

配置文件:

一、控制文件

记录数据库的状态信息

pg_controldata $PGDATA

postgresql 归档日志清理 pg数据库归档日志_postgresql_02

postgresql 归档日志清理 pg数据库归档日志_数据库_03

二、数据文件

pg中,每个索引、每个表都是一个单独的文件,pg中称为page(也称为段),默认是每个大于1G的page会被分割。例如某个表有200g的大小,那么会被分割为200个文件存储

 select relfilenode from pg_class where relname='pg_statistic';

select pg_relation_filepath('pg_statistic');

postgresql 归档日志清理 pg数据库归档日志_postgresql 归档日志清理_04

三、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;    --查看当前时间

postgresql 归档日志清理 pg数据库归档日志_日志文件_05

 

postgresql 归档日志清理 pg数据库归档日志_数据库_06

postgresql 归档日志清理 pg数据库归档日志_配置文件_07

 

postgresql 归档日志清理 pg数据库归档日志_配置文件_08

例子:创建表t1,查看日志文件内容。查看t1所在文件

postgresql 归档日志清理 pg数据库归档日志_postgresql 归档日志清理_09

postgresql 归档日志清理 pg数据库归档日志_数据库_10

postgresql 归档日志清理 pg数据库归档日志_日志文件_11

 

postgresql 归档日志清理 pg数据库归档日志_配置文件_12

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

postgresql 归档日志清理 pg数据库归档日志_日志文件_13

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;