赞
踩
目录
1.3、预写式日志 (Write-Ahead Logging)
1、一般放置在安装时指定的数据目录中,如果想修改,可通过 postgresql.conf 配置文件指定
data_directory = '/mnt/data/postgresdb/data' # use data in another directory
#hba_file = 'ConfigDir/pg_hba.conf' # host-based authentication file
#ident_file = 'ConfigDir/pg_ident.conf' # ident configuration file
1、postgresql 系统可通过手动配置的文件分为3部分
主服务器配置文件:postgresql.conf
基于主机认证配置文件:pg_hba.conf
用于用户名称映射的配置文件:pg_ident.conf
以下是对默认配置文件内容进行解释,内容参考官方文档说明,后续也会给出用于生产的配置文件实例。
listen_addresses = '*' #监听客户端连接
port = 5432 # 端口配置
max_connections = 1000 # 允许数据库的最大并发连接数,默认100
#superuser_reserved_connections = 3 # 预留给超级用户的连接池数,默认3
#unix_socket_directories = '/tmp' # 用于监听来自客户端连接的 Unix 域套接字目录
#unix_socket_group = '' # Unix域套接字所属组
#unix_socket_permissions = 0777 # Unix 域套接字的访问权限
#tcp_keepalives_idle = 0 # 在操作系统向客户端发送一个TCP keepalive消息后无网络活动的时间总量。 如果指定值时没有单位,则以秒为单位。值0(默认值)表示选择操作系统默认值
#tcp_keepalives_interval = 0 # 未被客户端确认收到的TCP keepalive消息应重新传输的时间长度。 如果指定值时没有单位,则以秒为单位。值0(默认值)表示选择操作系统默认值
#tcp_keepalives_count = 0 # 服务器到客户端的连接被认为中断之前可以丢失的TCP keepalive消息的数量。值0(默认值)表示选择操作系统默认值
#authentication_timeout = 1min # 认证超时,取 1s-600s
#ssl = off # 是否启用ssl 连接,默认关闭
#ssl_ciphers = 'HIGH:MEDIUM:+3DES:!aNULL' #允许使用的ssl 加密套件,如:
HIGH : AES, Camellia, 3DES
MEDIUM:RC4, SEED
+3DES:3DES
!aNULL:禁用不做认证的匿名密码组
#ssl_prefer_server_ciphers = on # 是否首选服务端的SSL认证
#ssl_ecdh_curve = 'prime256v1' # 指定用在ECDH密钥交换中的曲线名称,需要客户端支持。
#ssl_dh_params_file = '' #含有用于SSL密码的所谓临时DH家族的Diffie-Hellman参数的文件名。默认值为空。
#ssl_cert_file = 'server.crt' #服务器证书文件名
#ssl_key_file = 'server.key' #服务器私钥文件名
#ssl_ca_file = '' #服务器证书颁发机构的文件名
#ssl_crl_file = '' #服务器证书的文件名
#password_encryption = md5 #密码加密算法, md5 or scram-sha-256
#db_user_namespace = off #启用针对每个数据库的用户名
#row_security = on # 行安全策略
#krb_server_keyfile = '' #Kerberos服务器密钥文件的位置
#krb_caseins_users = off #是否应该以大小写不敏感的方式对待GSSAPI用户名,默认为大小写敏感。
shared_buffers = 256MB # 共享内存缓存区大小,最小 128kB, 默认128MB
#huge_pages = try # 是否为主共享内存区域请求巨型页,try:尝试,即使失败不影响服务器启动;on:请求,如果失败影响服务器启动;off:不请求
#temp_buffers = 8MB # 设置会话的临时缓冲区大小,最小 800kB
#max_prepared_transactions = 0 # 同时处于准备状态的事务最大数目,默认为0,即 禁用
work_mem = 512MB #写入临时磁盘文件前的查询操作可使用的内存, min 64kB
#maintenance_work_mem = 512MB # 指定创建索引或修改外键时,使用的最大内存,min 1MB
#replacement_sort_tuples = 150000 # 允许默认的排序策略使用的CPU缓存
#autovacuum_work_mem = -1 # 指定每个自动清理工作进程使用的最大内存量,默认-1 表示使用maintenance_work_mem 的配置
#max_stack_depth = 2MB # 服务器执行堆栈的最大安全深度, min 100kB
dynamic_shared_memory_type = posix # 动态共享内存实现
可选项:
# posix(用于使用shm_open分配的posix共享内存)
# sysv(用于通过shmget分配的System V共享内存)
# windows(用于windows共享内存)、
# mmap(用于使用存储在数据目录中的内存映射文件模拟共享内存)
# none(用于禁用此特性)
#temp_file_limit = -1 #用于临时文件的最大磁盘量,默认-1 没有限制
#max_files_per_process = 1000 #每个子进程允许同时打开的最大文件数,默认1000,min 25
shared_preload_libraries = 'pg_stat_statements' # 预加载的共享库,用于统计数据库的资源开销
pg_stat_statements.max = 10000 #允许保留多少条统计信息
pg_stat_statements.track = all #all - (所有SQL包括函数内嵌套的SQL), top - 直接执行的SQL(函数内的sql不被跟踪), none - (不跟踪)
#vacuum_cost_delay = 0 # 超过开销限制时,进程休眠的时间,0-100 milliseconds,默认禁用
#vacuum_cost_page_hit = 1 #清理一个在共享缓存中找到的缓冲区的估计代价。它表示锁住缓冲池、查找共享哈希表和扫描页内容的代价。默认值为1。 0-10000 credits
#vacuum_cost_page_miss = 10 # 清理一个必须从磁盘上读取的缓冲区的代价。它表示锁住缓冲池、查找共享哈希表、从磁盘读取需要的块以及扫描其内容的代价。默认值为10。0-10000 credits
#vacuum_cost_page_dirty = 20 # 当清理修改一个之前干净的块时需要花费的估计代价。它表示再次把脏块刷出到磁盘所需要的额外I/O。默认值为20。0-10000 credits
#vacuum_cost_limit = 200 # 将导致清理进程休眠的累计代价。默认值为200。1-10000 credits
#bgwriter_delay = 200ms # 指定后台写入器活动轮次之间的延迟
#bgwriter_lru_maxpages = 100 # 每个轮次中不超过多少个缓存区
#bgwriter_lru_multiplier = 2.0 # 基数,最近一轮写缓冲区的个数乘以这个值,估算下一轮
#bgwriter_flush_after = 512kB # 超过大小后,尝试强制 把这些写发送到底层存储上
#effective_io_concurrency = 1 # 并发IO的数量,1-1000; 0 disables prefetching
#max_worker_processes = 8 # 后台进程的最大数
#max_parallel_workers_per_gather = 2 # 单个节点开始的最大worker 数量
#max_parallel_workers = 8 # 支持的最大worker数量
#old_snapshot_threshold = -1 #可以使用且没有发生错误的最小快照时间 1min-60d; -1 禁用; 0 is immediate
#backend_flush_after = 0 # 只要一个写入的数据量超过,就强制写入底层存储, 0禁用
wal_level = replica # 级别,字面意思,minimal, replica, or logical
fsync = off # 尝试确保更新被物理地写入到磁盘
#synchronous_commit = on # 级别,数据库服务器返回“success”指示给客户端之前,必须要完成多少WAL处理,remote_apply
, on
(默认值), remote_write
,local
, 和 off
#wal_sync_method = fsync # 强制 WAL 更新到磁盘的方法
# open_datasync 用open()
选项O_DSYNC
写 WAL 文件
# fdatasync (default on Linux) 每次提交时调用
# fsync 每次提交时调用
# fsync_writethrough 每次提交时调用fsync()
,强制任何磁盘写高速缓存的直通写
# open_sync 用open()
选项O_SYNC
写 WAL 文件
#full_page_writes = on # 从一个检测点的页面的第一次修改期间将每个页面的全部内容写到 WAL 中
#wal_compression = off # 允许压缩
#wal_log_hints = off # 检查点之后页面首次修改期间把该磁盘页面的整个内容都写入 WAL
#wal_buffers = -1 # 还未写入磁盘的共享缓冲区大小 min 32kB, -1 sets based on shared_buffers
#wal_writer_delay = 200ms #写入刷新频率,时间维度 1-10000 milliseconds
#wal_writer_flush_after = 1MB #写入刷新频率,大小维度 measured in pages, 0 disables
#commit_delay = 0 # 写入前的时间延迟,range 0-100000, in microseconds
#commit_siblings = 5 #执行延迟时,并发事务的最小数量, range 1-1000
checkpoint_timeout = 5min #检查间隔 range 30s-1d
max_wal_size = 1GB #2个检查点之间,允许增长的最大数量
#min_wal_size = 80MB # 和上类似
#checkpoint_completion_target = 0.5 # 指定检查点需要完成的目标, 0.0 - 1.0
#checkpoint_flush_after = 256kB # 当执行检查点时,超过这个数量会强制写到底层存储, 0 disables
#checkpoint_warning = 30s #检查点低于该值,写日志, 0 disables
archive_mode = on # 归档; off, on, or always
archive_command = 'cp %p /mnt/data/pgbackup/pgarchive/%f' # 归档的目录
# placeholders: %p = 归档的文件目录
# %f = 归档的文件名
# e.g. 'test ! -f /mnt/server/archivedir/%f && cp %p /mnt/server/archivedir/%f'
#archive_timeout = 0 # 归档的时间间隔, 0 disables
max_wal_senders = 2 # 备份客户端的最大并发,发送服务器
wal_keep_segments = 64 # 为备份客户端保留的段大小, 16MB each; 0 disables
wal_sender_timeout = 60s # 发送超时; 0 disables
#max_replication_slots = 10 # 支持的最大复制槽数
#track_commit_timestamp = off # 记录事务的提交时间
#synchronous_standby_names = '' # 同步复制的机器列表; '*' = all
#vacuum_defer_cleanup_age = 0 # 更新在清理死亡版本前的延迟
#hot_standby = on # 恢复期间,是否允许连接查询
#max_standby_archive_delay = 30s #并发冲突间隔(归档时)
#max_standby_streaming_delay = 30s # 并发冲突间隔(流式复制时)
#wal_receiver_status_interval = 10s # 备份机器发送状态间隔
#hot_standby_feedback = off # 发送当前备份机器的查询反馈
#wal_receiver_timeout = 60s # 复制连接的响应超时
#wal_retrieve_retry_interval = 5s # 复制连接的等待超时
#max_logical_replication_workers = 4 # 复制worker的最大数量
#max_sync_workers_per_subscription = 2 # 订阅worker的最大数量
#enable_bitmapscan = on #是否允许查询使用位图扫描
#enable_hashagg = on #是否允许查询使用hash聚合
#enable_hashjoin = on #是否允许查询使用hash连接
#enable_indexscan = on #是否允许查询使用索引扫描
#enable_indexonlyscan = on #是否允许查询只使用索引扫描
#enable_mergejoin = on #是否允许查询使用归并连接
#enable_nestloop = on #是否允许查询使用嵌套循环
#enable_seqscan = on #是否允许查询使用顺序扫描
#enable_sort = on #是否允许查询使用显示排序
# - Planner Cost Constants -
#seq_page_cost = 1.0 # 计算一次顺序磁盘页面的开销
#random_page_cost = 4.0 #计算一次非顺序磁盘页面的开销
#cpu_tuple_cost = 0.01 # 处理每一行的cpu 开销
#cpu_index_tuple_cost = 0.005 # 处理每一个索引项的CPU开销
#cpu_operator_cost = 0.0025 # 处理每一个操作符或函数的CPU开销
#parallel_tuple_cost = 0.1 # 从一个进程传递一个元组给另一个进程的开销
#parallel_setup_cost = 1000.0 # 并行进程的开销
#min_parallel_table_scan_size = 8MB #最小并行扫描的数据量
#min_parallel_index_scan_size = 512kB #最小并行扫描的索引量
#effective_cache_size = 4GB #单一查询缓冲区大小
#log_destination = 'stderr' # 多种日志记录方式
# stderr, csvlog, syslog, and eventlog,
#logging_collector = off # 日志收集器
#log_directory = 'log' # 日志目录
#log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' # 文件名
#log_file_mode = 0600 # 日志文件权限
#log_truncate_on_rotation = off #日志截断
#log_rotation_age = 1d # 单一日志的周期
#log_rotation_size = 10MB # 单一日志的大小
#syslog_facility = 'LOCAL0' #是否向syslog写日志
#syslog_ident = 'postgres' #程序名
#syslog_sequence_numbers = on #日志前缀
#syslog_split_messages = on #日志分割
#event_source = 'PostgreSQL' #日志程序名
#client_min_messages = notice # 连接客户端的日志级别
# debug1-5、log、 notice、warning、 error
#log_min_messages = warning # 日志级别
# debug1-5、 info、notice、warning、 error、log、 fatal、 panic
#log_min_error_statement = error # 错误SQL 级别
# debug 1-5、 info、notice、warning、error、log、fatal、panic (effectively off)
#log_min_duration_statement = -1 # 语句执行的持续时间,-1 is disabled, 0 logs all statements
# and their durations, > 0 logs only
# 调试输出
#debug_print_parse = off
#debug_print_rewritten = off
#debug_print_plan = off
#debug_pretty_print = on
#触发输出
#log_checkpoints = off
#log_connections = off
#log_disconnections = off
#log_duration = off
#log_error_verbosity = default # terse, default, or verbose messages
#log_hostname = off
#log_line_prefix = '%m [%p] ' # special values:
# %a = application name
# %u = user name
# %d = database name
# %r = remote host and port
# %h = remote host
# %p = process ID
# %t = timestamp without milliseconds
# %m = timestamp with milliseconds
# %n = timestamp with milliseconds (as a Unix epoch)
# %i = command tag
# %e = SQL state
# %c = session ID
# %l = session line number
# %s = session start timestamp
# %v = virtual transaction ID
# %x = transaction ID (0 if none)
# %q = stop here in non-session
# processes
# %% = '%'
# e.g. '<%u%%%d> '
#log_lock_waits = off # log lock waits >= deadlock_timeout
#log_statement = 'none' # none, ddl, mod, all
#log_replication_commands = off
#log_temp_files = -1 # log temporary files equal or larger
# than the specified size in kilobytes;
# -1 disables, 0 logs all temp files
log_timezone = 'PRC' #中国时区
# - Process Title -
#cluster_name = '' # 进程标题
#update_process_title = on #启动进程标题更新
# - 查询和索引命令统计收集
#track_activities = on #每个回话的执行命令和时间
#track_counts = on
#track_io_timing = off
#track_functions = none # none, pl, all 跟踪函数调用
#track_activity_query_size = 1024 # 统计每个查询的内存量
#stats_temp_directory = 'pg_stat_tmp' #统计的缓存目录
# - 统计监控,对每个查询,向服务器日志里输出相应模块的性能统计
#log_parser_stats = off
#log_planner_stats = off
#log_executor_stats = off
#log_statement_stats = off
#autovacuum = on # 是否开启自动清理,依赖track_count
#log_autovacuum_min_duration = -1 # 是否记录自动清理动作
#autovacuum_max_workers = 3 # 自动清理的最大worker 数量
#autovacuum_naptime = 1min # 运行的最小延迟
#autovacuum_vacuum_threshold = 50 # 在表上被触发的清理的更新或修改的元组数据量
#autovacuum_analyze_threshold = 50 # 在表上被触发的分析的更新或修改的元组数据量
#autovacuum_vacuum_scale_factor = 0.2 # 指定表分数,决定是否触发vacuum
#autovacuum_analyze_scale_factor = 0.1 # 指定表分数,决定是否触发analyze
#autovacuum_freeze_max_age = 200000000 #触发vacuum事务前的最大年龄
#autovacuum_multixact_freeze_max_age = 400000000 #触发vacuum多事务前的最大年龄
#autovacuum_vacuum_cost_delay = 20ms # 延迟
#autovacuum_vacuum_cost_limit = -1 #限制值
#search_path = '"$user", public' # 搜索对象的模式顺序
#default_tablespace = '' # 默认表空间
#temp_tablespaces = '' # 缓存表空间
#check_function_bodies = on #是否开启对函数体字符串的验证
#default_transaction_isolation = 'read committed' #事务的隔离级别
#default_transaction_read_only = off #控制每个新事务的默认只读状态
#default_transaction_deferrable = off #控制可延迟事务的延迟
#session_replication_role = 'origin' #控制触发器的触发
#statement_timeout = 0 # 执行超时
#lock_timeout = 0 # 锁超时
#idle_in_transaction_session_timeout = 0 # 闲置事务超时
#vacuum_freeze_min_age = 50000000 #触发vacuum 的最小年龄
#vacuum_freeze_table_age = 150000000
#vacuum_multixact_freeze_min_age = 5000000
#vacuum_multixact_freeze_table_age = 150000000
#bytea_output = 'hex' # hex, escape 输出格式
#xmlbinary = 'base64' #二进制编码格式
#xmloption = 'content' #转换格式
# - Locale and Formatting -
datestyle = 'iso, mdy' #日期时间的显示格式
#intervalstyle = 'postgres' #间隔值得显示格式
timezone = 'PRC' #时区
#timezone_abbreviations = 'Default' # 设置服务器接受的日期时间输入中使用的时区缩写集合
#extra_float_digits = 0 # 文本输出浮点值得位数,min -15, max 3
#client_encoding = sql_ascii # 客户端字符集
lc_messages = 'en_US.UTF-8' # 消息语言
lc_monetary = 'en_US.UTF-8' # 货币
lc_numeric = 'en_US.UTF-8' #数字
lc_time = 'en_US.UTF-8' # 时间
default_text_search_config = 'pg_catalog.english' #默认文本搜索配置
# - Other Defaults -
#dynamic_library_path = '$libdir' #动态共享库地址
#local_preload_libraries = ''
#session_preload_libraries = ''
#deadlock_timeout = 1s #死锁超时
#max_locks_per_transaction = 64 # 共享锁在表上的数量,min 10
#max_pred_locks_per_transaction = 64 # 共享谓词锁在表上的数量,min 10
#max_pred_locks_per_relation = -2 # 单个关系上能够锁多少页
#max_pred_locks_per_page = 2 # 单一页面上能够锁住多少行,min 0
#exit_on_error = off # 会话终止
#restart_after_crash = on # 后端崩溃后自动重新初始化
#include_dir = 'conf.d' # 加载配置文件目录
#include_if_exists = 'exists.conf' # 如果文件存在,加载配置文件
#include = 'special.conf' # 加载配置文件
该文件用于控制客户端认证。每条记录指定一种连接类型、一个客户端 IP 地址范围(如果和连接类型相关)、一个数据库名、一个用户名以及对匹配这些参数的连接使用的认证方法。
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
host all all 127.0.0.1/32 scram-sha-256
host all all ::1/128 scram-sha-256
local replication all peer
host replication all 127.0.0.1/32 scram-sha-256
host replication all ::1/128 scram-sha-256
#host all all 0.0.0.0/0 md5
host all all 0.0.0.0/0 trust
local:这条记录匹配使用 Unix 域套接字的连接。 如果没有这种类型的记录,就不允许 Unix 域套接字连接。
host:这条记录匹配使用 TCP/IP 建立的连接。 host
记录匹配SSL和非SSL的连接尝试。
hostssl:这条记录匹配使用 TCP/IP 建立的连接,但必须是使用SSL加密的连接。
hostnossl:只匹配那些在 TCP/IP上不使用SSL的连接。
hostgssenc、hostnogssenc: 同ssl 、nossl 类似。
database: 指定匹配的数据库名称
user: 指定匹配的数据库用户名
address: 指定匹配的客户端IP
method : 指定认证方式。其中:
trust:无条件允许。
reject: 无条件拒绝。
md5、 scram-sha-256: 执行加密认证口令。
peer:从操作系统获得客户端的操作系统用户,并且检查它是否匹配被请求的数据库用户名
ident:通过联系客户端的 ident 服务器获取客户端的操作系统名,并且检查它是否匹配被请求的数据库用户名
password: 不加密认证口令。
ldap:使用LDAP服务器认证。
pam:使用操作系统提供的可插入认证模块服务(PAM)认证。
用户名映射,当使用像 Ident 或者 GSSAPI 之类的外部认证系统时,发起连接的操作系统用户名可能不同于要被使用的数据库用户(角色),此时可以使用用户名映射。
格式如下:
map-name system-username database-username
其中,map-name
是一个任意名称,用于在pg_hba.conf
中引用该映射。其他两个一个是操作系统用户名,一个是数据库用户名。相同的map-name
可以被反复地用在同一个映射中指定多个用户映射。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。