本节简单介绍PostgreSQL的配置方法,更具体的配置会在后面的章节中介绍。PostgreSQL数据库的配置主要是通过修改数据目录下的postgresql.conf和pg_hba.conf文件来实现的。
默认创建的数据库无法接受远程连接,因为默认情况下pg_hba.conf中没有相应的配置项。我们可以在pg_hba.conf文件中加入以下命令行:
host all all 0/0 md5
该命令允许任何用户远程连接本数据库,连接时需要提供密码。
pg_hba.conf文件是一个黑白名单的访问控制文件,可以控制允许哪些IP地址的机器访问数据库。
在数据目录下编辑postgresql.conf文件,找到如下内容:
#listen_addresses = 'localhost' # what IP address(es) to listen on; #port = 5432 # (change requires restart)
其中,参数“listen_addresses”表示监听的IP地址,默认是在“localhost”处监听,也就是在IP地址“127.0.0.1”上监听,这会造成远程主机无法登录该数据库,如果想从其他机器上登录该数据库,需要把监听地址改成实际网络的地址,一种简单的方法是把地址改成“*”,表示在本地的所有地址上监听,命令如下:
listen_addresses = '*' # what IP address(es) to listen on; #port = 5432 # (change requires restart)
参数“port”表示监听的数据库端口,默认为“5432”,可以使用默认设置。如果一台机器上安装了多个数据库实例(如安装了多个不同版本的PostgreSQL),可以设置为不同的端口。
对于这两个参数的修改,需要重启数据库才能生效。
下面来看看与日志相关的几个参数:
日志的收集一般是需要打开的,所以需要进行如下设置:
logging_collector = on
注意,在新版本的数据库中,以上参数默认已打开,如PostgreSQL10版本。
日志的目录一般使用默认值即可:
log_directory = 'pg_log'
在PostgreSQL10版本中,程序日志目录是在log目录下,即上述配置如下:
log_directory = 'log' # directory where log files are written,
日志切换和是否覆盖一般可以使用如下几种不同的方案。
方案一: 每天生成一个新的日志文件。
配置方法如下:
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' log_truncate_on_rotation = off log_rotation_age = 1d log_rotation_size = 0
方案二: 每当日志写满一定的大小(如10MB),则切换一个日志。
配置方法如下:
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' log_truncate_on_rotation = off log_rotation_age = 0 log_rotation_size = 10M
方案三: 只保留最近7天的日志,进行循环覆盖。
配置方法如下:
log_filename = 'postgresql-%a.log' log_truncate_on_rotation = on log_rotation_age = 1d log_rotation_size = 0
PostgreSQL10以上版本默认的日志方案是方案三,不需要再进行修改。
PostgreSQL安装完毕后,可以修改以下主要内存参数。
·shared_buffers:共享内存的大小,主要用于共享数据块。
·work_mem:单个SQL执行时,以及排序、Hash Join时使用的内存,SQL运行完毕后,该内存就会被释放。
shared_buffers的默认值为32MB,如果你的机器上有足够的内存,可以把这个参数设置得大一些,如可以设置为物理内存大小的四分之一,这样数据库就可以缓存更多数据块,当读取数据时,就可以从共享内存中进行读取,而不需要再从文件上去读。而work_mem设置大一些,会使排序操作效率更高。