PostgreSQL的实例管理(四)

  • 1. pg_ctl
  • 1.1. 关闭实例
  • 2. 数据库实例基本配置
  • 2.1. 配置文件postgresql.conf
  • 2.2. 数据库访问认证pg_hba.conf
  • 2.3. 免密配置文件( .pgpass )
  • 3. pg_controldata


1. pg_ctl

# PG的启动/停止/查状态/重启/重新加载配置
pg_ctl start/stop/status/restart/reload [-D datadir]

当同一台机器存在多个数据库时,可以用 -D 参数指定数据库数据目录,操作指定的库

1.1. 关闭实例

pg_ctl stop [-D datadir] [-m s[mart] | f[ast] | i[mmediate] ] [-W] [-t seconds] [-s]
# 例子
pg_ctl stop	等价于 pg_ctl stop -m fast  缩写等价于  pg_ctl stop -mf
pg_ctl stop -m mmediate  缩写等价于  pg_ctl stop -mi

-m参数:指定数据库关闭的模式:

  • smart:等待所有数据库连接断开后再关闭数据库。
  • fast:回滚所有活动事务后强制断开所有会话,最后再正常关闭数据库。【 默认 】。相当于Oracle的immediate关机模式。
  • immediate:立即终止所有服务器进程,等于宕机,下次启动会进入恢复状态。一般只有数据库出现问题导致无法正常关闭时才会考虑使用该方式。相当于Oracle的Abort关机模式。

2. 数据库实例基本配置

2.1. 配置文件postgresql.conf

位于$PGDATA数据库簇的目录下,即安装的数据库数据目录下。

# 监听配置:监听所有IP和5432端口
listen_addresses='*' 或者0.0.0.0
port=5432

# 设置最大连接数
max_connections=500
# shared_buffers值一般为系统内存的25%-40%
shared_buffers=200MB
# 设置工作内存
work_mem=4MB
# 设置预写日志缓存的大小
wal_buffers = 16MB
# 设置用于存储临时表的数据大小
temp_buffers = 8MB
# 在创建索引或vacuum等维护性操作时所使用的最大内存量
maintenance_work_mem = 64MB

# 开启日志收集开关,默认off
logging_collector = on
# 日志记录类型,默认是stderr,只记录错误输出
log_destination=csvlog
# 日志名称,默认是postgresql-%Y-%m-%d_%H%M%S.log
log_filename = 'postgresql-%a.log'
# 用户session登陆时是否写入日志,默认off
log_connections = on
# 用户session退出时是否写入日志,默认off
log_disconnections = on
# 开启检查点
log_checkpoints = on
# 开启锁等待记录
log_lock_waits = on
# 日志记录级别为ddl
log_statement = ddl
# 默认off,设置为on的话,如果新建了一个同名的日志文件,则会清空原来的文件,再写入日志,而不是在后面附加
log_truncate_on_rotation = on
# 保留单个文件的最大时长,默认是1d
log_rotation_age = 1440
#查看视图pg_settings的字段
\d pg_settings
select distinct context from pg_settings;
  • internal: 编译期间的设置,只有重新编译才能生效。
  • postmaster: 只有服务【重启】才能生效。
  • sighup: 不需要重启数据库,但要向postmaster进程发送sighup信号,即需要pg_ctl reload
  • backend:无需重启数据库,只需向postmaster进程发送sighup信号。但新的配置值只能在之后的新连接中生效,已有连接中这些参数值不会改变
  • superuser: 使用superuser(如postgres)才能更改,不用重新加载所有配置即可生效。这类参数可以由超级用户使用set修改。参数设置后只会影响超级用户自身的session配置,不会影响其他用户。
  • user: 单个会话用户可以在任意时间做修改,只会影响该会话。

pg_ctl reload和SELECT pg_reload_conf()重新加载动态参数配置

2.2. 数据库访问认证pg_hba.conf

位于$PGDATA数据库簇的目录下,即安装的数据库数据目录下。

# pg_hba.conf文件配置控制访问
[TYPE]		[DATABASE]      [USER]		[ADDRESS]      [METHOD]
host         all             all        192.168.1.0/24     trust
# 常见的认证方式:
trust不认证,无需密码
md5密码认证
reject拒绝登录
password使用明文密码
# 一般在最后一行加上访问认证
host	all		all		0.0.0.0/0		md5

pg_ctl reload和select reload_conf()动态重新加载配置使其生效

2.3. 免密配置文件( .pgpass )

# 进入postgres用户
su - postgres
# 在用户根目录下创建 .pgpass 文件,并按格式编写
vi ~/.pgpass 

##VIPhostname:port:database:username:password
192.168.56.103:5432:postgres:pg14:Pgdb@123

# 授于文件权限
chmod 0600 ~/.pgpass

3. pg_controldata

用于存储全局控制信息

harbor pg数据库 pg数据库实例_postgresql