本文共 5498 字,大约阅读时间需要 18 分钟。
PostgreSQL9.6 是PG一个非常经典的稳定版本,现在还有许多用户在使用这个版本。本篇就教大家如何最佳实践安装PG9.6数据库
PostgreSQL 9.6的主要增强功能包括:
firewall-cmd --state
[root@localhost sas_data]# firewall-cmd --statenot runningsystemctl stop firewalld
禁止开机启动:
systemctl disable firewalld
# getenforce
Disabled 关闭,其他的都表示开启状态
# sestatus -vSELinux status: enabled/disabled
# setenforce 0
2.改变配置文件,需要重启生效
# vi /etc/selinux/config
将SELINUX=enforcing改为SELINUX=disabled,保存重启即可
在Linux文件系统中,当执行向前的顺序的读操作时,Linux内核里的预读会在应用读取数据请求之前,预先读取磁盘上的数据对于当下较快的驱动,预读操作是获取高性能读取的关键所在。pg数据库安装之前,要根据业务的类型与具体情况设置该值
用户可以通过blockdev 命令查看当前预读取值得大小,如
[root@GuangFa_PG9 ~]# blockdev --getra /dev/sda8192
该值的单位为512字节,对于现在的硬件,通常大小为 4096~16384
可通过如下命令修改[root@GuangFa_PG9 ~]# blockdev --setra 4096 /dev/sda[root@GuangFa_PG9 ~]# [root@GuangFa_PG9 ~]# blockdev --getra /dev/sda4096
用户每次访问Linux 上的文件时,文件都会更新一个叫做=作上次访问时间(atime)的属性。读取数据时,这种开销成了稳定的写入流,在数据库中,这可不是一个受欢迎的开销。在/etc/fstab中,用户可以将 noatime 添加到卷挂载选项中来禁止这种行为。例如
/dev/sda ext3 noatime,errors=remount-ro 0 1
可以看到,默认时开启的,我们需要将其关闭
[root@GuangFa_PG9 usr]# cat /sys/kernel/mm/*transparent_hugepage/enabled[always] madvise never
进入PG官网,进入源码下载界面,选择Pg9.6进行下载(一般的,大版本下的小版本都是进行一些bug修复,维护等,所以一般的都建议使用最新的,比如9.6.x中最新的为9.6.11)
将源码包下载到系统之上
tar -xvzf postgresql-9.6.0.tar.gz[root@GuangFa_PG9 opt]# cd postgresql-9.6.0[root@GuangFa_PG9 postgresql-9.6.0]# lsaclocal.m4 config configure configure.in contrib COPYRIGHT doc GNUmakefile.in HISTORY INSTALL Makefile README src
编译安装时需要查看编译选项,这里挑几个重要的参数
[root@GuangFa_PG9 postgresql-9.6.0]# ./configure --help
直接进行编译安装,若有依赖用yum解决依赖即可(PG的依赖需求非常少,所以是非常好编的)
./configure --prefix=/usr/pgsql9.6makemake install
[root@GuangFa_PG9 ~]# useradd -U postgres
配置用户环境变量
export PATH=/usr/pgsql/bin:$PATHexport LD_LIBRARY_PATH=/usr/pgsql/lib:$LD_LIBRARY_PATHexport PGDATA=/pgdata/export PGHOST=/tmp
将数据库数据目录和安装目录分别准备好
[root@GuangFa_PG9 ~]# mkdir /pgdata[root@GuangFa_PG9 ~]# cd /usr/[root@GuangFa_PG9 usr]# ln -s pgsql9.6 pgsql[root@GuangFa_PG9 usr]# chown -R postgres:postgres /pgdata[root@GuangFa_PG9 usr]# chown -R postgres:postgres pgsql[root@GuangFa_PG9 usr]# chown -R postgres:postgres pgsql9.6[root@GuangFa_PG9 usr]# chmod 700 /pgdata/
直接在postgres 运行initdb,即可初始化数据库
[postgres@GuangFa_PG9 ~]$ initdb The files belonging to this database system will be owned by user "postgres".This user must also own the server process.The database cluster will be initialized with locale "en_US.UTF-8".The default database encoding has accordingly been set to "UTF8".The default text search configuration will be set to "english".Data page checksums are disabled.fixing permissions on existing directory /pgdata ... okcreating subdirectories ... okselecting default max_connections ... 100selecting default shared_buffers ... 128MBselecting dynamic shared memory implementation ... posixcreating configuration files ... okrunning bootstrap script ... okperforming post-bootstrap initialization ... oksyncing data to disk ... okWARNING: enabling "trust" authentication for local connectionsYou can change this by editing pg_hba.conf or using the option -A, or--auth-local and --auth-host, the next time you run initdb.Success. You can now start the database server using: pg_ctl -D /pgdata/ -l logfile start
在初始化完成之后,可以根据给定的启动语句直接将数据库启动,但是由于此时的数据库设置完全为默认,可以修改一下配置在启动
在初始化完成之后,Pg默认时不会打开日志的,所以报错或是提示什么的就直接输出到屏幕上,这对运维当然是不方便,所以可以配置一下日志策略
logging_collector = on log_directory = 'pg_log'
这两个参数要设置好,这个参数修改是需要重启的。
这边是一般情况下的日志策略,我选了三个比较经典的贴了出来。一般情况下这三个策略是可以满足一般的日志要求了。如下
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' log_truncate_on_rotation = off log_rotation_age = 1d log_rotation_size = 0
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' log_truncate_on_rotation = off log_rotation_age = 0 log_rotation_size = 10M
log_filename = 'postgresql-%a.log' log_truncate_on_rotation = on log_rotation_age = 1d log_rotation_size = 0
一般的都会改为*,允许远程连接
#listen_addresses = 'localhost' # what IP address(es) to listen on;listen_addresses = '*'
在pg_hba.conf 文件中,将自己需要访问的IP段添加上去,以保证远程访问服务器正常
安装完成之后,可以修改以下两个主要的内存参数
shared_buffer 默认值为32MB,work_mem为1MB,如果你的机器上有足够的内存,可以把这个值设置的大一点,这样数据库就能缓存更多的数据块。当读取数据时,就可以从共享内存中读取,而不需要再去从文件上读取
work_mem 设置的大一点会让排序操作变得快一些
在pg的配置文件postgressql.conf中一个个的修改这些配置文件是比较麻烦的,其实可以直接这些参数设置写到安装目录下的 postgresql.auto.conf 文件中,此文件在初始化成功后自动生成,且是空的。 在数据库启动时,PG会先读取此配置文件下的相关配置,优先级要比postgresql.conf 要高,适合刚开始的批量修改
[postgres@GuangFa_PG9 ~]$ pg_ctl startserver starting[postgres@GuangFa_PG9 ~]$ LOG: redirecting log output to logging collector processHINT: Future log output will appear in directory "pg_log".[postgres@GuangFa_PG9 ~]$ [postgres@GuangFa_PG9 ~]$ [postgres@GuangFa_PG9 ~]$ [postgres@GuangFa_PG9 ~]$ psqlpsql (9.6.0)Type "help" for help.postgres=#
至此,最佳实践安装PostgreSQL9.6 结束
转载地址:http://hszfo.baihongyu.com/