暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PostgreSQL 17 安装操作记录分享

山佳数峰寻道 2025-03-07
1318

安装前准备    

1、安装环境介绍    

建议部署环境最低4C 8G环境

Postgresql 支持在如上版本系统中可运行

             

2、安装准备    

             

安装包下载地址: https://www.postgresql.org/download/ 

可以通过上述地址进行下载相应安装包

             

3、安装依赖包    

PS: RHEL8系列的系统镜像文件中,不包含uuid-devel的安装包,可使用RHEL7版本中的安装包。

PS: 本文案例基于RHEL7.6 进行实验

yum install -y zlib zlib-devel libaio cmake make gcc gcc-c++ readline readline-devel perl  bison flex libyaml  net-tools expect  openssh-clients tcl openssl  openssl-devel libicu libicu-devel  ncurses-devel  python3 python3-devel openldap pam systemtap-sdt-devel perl-ExtUtils-Embed

             

yum -y install perl-Env bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel make libffi-devel  

             

yum install libxml2-devel libxslt-devel

             

             

cp etc/selinux/config /etc/selinux/config_`date +"%Y%m%d_%H%M%S"`&& sed -i 's/SELINUX\=enforcing/SELINUX\=disabled/g' /etc/selinux/config

             

检查:    

rpm -q --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n"  coreutils glib2 lrzsz mpstat dstatsysstat e4fsprogs xfsprogs ntp readline-devel zlib-devel openssl-develpam-devel libxml2-devel libxslt-devel python-devel tcl-devel gcc makesmartmontools flex bison perl-devel perl-Ext Utils* openldap-devel jadetex openjade bzip2 | grep 'not installed' |column -t

             

             

yum方式安装    

             

1、在线安装yum源    

sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm

             

安装完成后,如下图 会有一个pgdg-redhat-all.repo文件,然后可以进行下载安装响应的pg数据库

             

卸载低版本PostgreSQL:

# Disable the built-in PostgreSQL module:

sudo dnf -qy module disable postgresql

             

2、安装pg17数据库    

# Install PostgreSQL:

yum install -y postgresql17-server

######

Postgresql17 :PostgreSQL客户端程序和库

postgresql17-server:PostgreSQL服务端程序

postgresql17-libs:PostgreSQL客户端所需的共享库

postgresql17-contrib:与PostgreSQL一起提供的额外的模块

             

yum install -y postgresql17 postgresql17-server postgresql17-libs posstgresql17-contrib

             

# Optionally initialize the database and enable automatic start:

/usr/pgsql-17/bin/postgresql-17-setup initdb

systemctl enable postgresql-17

systemctl start postgresql-17    

systemctl status postgresql-17

             

             

3、查看pg状态    

             

4、配置环境变量    

su – postgres

vi .bash_profile

export PATH=/usr/pgsql-17/bin:$PATH

[ -f /etc/profile ] && source /etc/profile

PGDATA=/var/lib/pgsql/17/data

export PGDATA

# If you want to customize your settings,

# Use the file below. This is not overridden

# by the RPMS.

[ -f /var/lib/pgsql/.pgsql_profile ] && source /var/lib/pgsql/.pgsql_profile

             

             

5、登录数据库    

su - postgres

psql

##修改数据库用户密码:

alter user postgres with encrypted password 'pgtest#124';

##创建数据库

create database db01 with owner=postgres encoding='UTF-8';

\l    

##创建表

\c db01

create table test(id int,name char(5));

##新增数据

\d test

insert into test valus(1,’happy’);

select * from test;

6、调整postgrsql 参数配置    

/var/lib/pgsql/16/data/postgresql.conf:数据库参数配置文件。

/var/lib/pgsql/16/data/pg_hba.conf:用户访问权限配置文件。

数据库默认只监听本地地址,不允许远程访问。这里调整为监听所有地址,并添加所

有IP地址的访问权限。

vim /var/lib/pgsql/16/data/postgresql.conf

##调整监听及日志参数配置

listen_addresses = '*'

port=5432

logging_collector=on

log_directory= 'log'

log_filename= 'postgresql-%a.log'    

log_truncate_on_rotation= on

vim /var/lib/pgsql/16/data/pg_hba.conf

##添加所有主机访问权限

host all all 0.0.0.0/0 md5

             

远程登录数据库

psql -U postgres -h 192.168.59.141 -d postgres -p 5432

-h:指定服务器地址,默认为127.0.0.1,默认不指定即可。

-d:指定连接之后选中的数据库,默认是postgres。

-U:指定用户,默认是当前操作系统用户。

-p:指定端口号,默认是5432。

             

7、卸载数据库    

yum remove -y postgresql*

rm -rf /var/lib/pgsql

rm -rf /usr/pgsql*

userdel -r postgres

groupdel postgres

             

源码编译方式安装    

沿用上述环境,相关依赖包已安装完成

1、关闭防火墙    

systemctl stop firewalld.service

systemctl disable firewalld.service

systemctl status firewalld.service

                 

2、关闭SELinux    

sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

setenforce 0

             

3、创建用户    

useradd postgres

echo "postgres"|passwd --stdin postgres

4、创建数据库目录    

mkdir -p /data/pgdata

mkdir -p /data/archive

mkdir -p /data/scripts

mkdir -p /data/backup

mkdir -p /data/pg17

mkdir -p /data/soft

chown -R postgres:postgres /data

chmod -R 775 /data

             

5、调整用户资源限制    

cat >> /etc/security/limits.conf << "EOF"

#################for postgresql db ###########

postgres soft    nofile 131072 

postgres hard    nofile 131072 

postgres soft    nproc  131072 

postgres hard    nproc  131072 

postgres soft    core   unlimited 

postgres hard    core   unlimited 

postgres soft    memlock 500000000 

postgres hard    memlock 500000000

EOF

6、调整内核参数    

vim /etc/sysctl.conf

cp /etc/sysctl.conf /etc/sysctl.conf_`date +"%Y%m%d_%H%M%S"`

cat >> /etc/sysctl.conf << "EOF"

############################for postgresql###########

kernel.shmall =4294967296

kernel.shmmax=135497418752

kernel.shmmni =4096    

kernel.sem = 50100 64128000 50100 1280

fs.file-max =7672460

fs.aio-max-nr =1048576

net.ipv4.ip_local_port_range= 9000 65000

net.core.rmem_default= 262144

net.core.rmem_max= 4194304

net.core.wmem_default= 262144

net.core.wmem_max= 4194304

net.ipv4.tcp_max_syn_backlog= 4096

net.core.netdev_max_backlog= 10000

net.ipv4.tcp_timestamps= 0

#net.ipv4.tcp_tw_recycle=1

net.ipv4.tcp_timestamps=1

net.ipv4.tcp_keepalive_time= 72

net.ipv4.tcp_keepalive_probes= 9

net.ipv4.tcp_keepalive_intvl= 7

vm.zone_reclaim_mode=0

vm.dirty_background_bytes= 40960000

vm.dirty_ratio =80

vm.dirty_expire_centisecs= 6000

vm.dirty_writeback_centisecs= 50

vm.swappiness=0

vm.overcommit_memory= 0

vm.overcommit_ratio= 90

EOF

###打印参数

sysctl -p

             

7、编译安装postgresql 17数据库    

安装包下载地址: https://www.postgresql.org/ftp/source/

上传并解压安装包:

su  - postgres

cd /data/soft

tar -zxvf postgresql-17.2.tar.gz

cd postgresql-17.2

             

#配置编译参数:

./configure --prefix=/data/pg17 \    

--with-perl \

--with-python \

--with-tcl\

--with-gssapi \

--with-icu \

--with-openssl\

--with-pam \

--with-ldap \

--with-systemd \

--with-readline \

--with-libxml \

--with-libxslt \

--with-segsize=1 \

--with-blocksize=8 \

--with-wal-blocksize=8 \

--with-zlib

             

编译安装包,编译所有能编译的东西,包括文档(HTML和手册页)以及附加模块(contrib),并执行安装。

gmake world -j2

gmake install-world -j2

             

编译参数介绍(仅供参考,参数解释源自postgresql 12版本):

             

--prefix=PREFIX

把所有文件装在目录PREFIX中而不是/usr/local/pgsql中。实际的文件会安装到数个子目录中;没有一个文件会直接安装到PREFIX目录里。如果你有特殊需要,你还可以用下面的选项自定义不同的子目录的位置。不过,如果你把这些设置保留默认,那么安装将是可重定位的,意思是你可以在安装过后移动目录(man和doc位置不受此影响)。对于可重定位的安装,你可能需要使用configure的--disable-rpath选项。还有,你需要告诉操作系统如何找到共享库。

             

--exec-prefix=EXEC-PREFIX

你可以把体系相关的文件安装到一个不同的前缀下(EXEC-PREEFIX),而不是PREFIX中设置的地方。这样做可以比较方便地在不同主机之间共享体系相关的文件。如果你省略这些,那么EXEC-PREFIX就会被设置为等于PREFIX并且体系系相关和体系无关的文件都会安装到同一棵目录树下,这也可能是你想要的。

             

--bindir=DIRECTORY

为可执行程序指定目录。默认是EXEC-PREFIX/bin,通常也就是/usr/local/pgsql/bin

             

--sysconfdir=DIRECTORY    

用于各种各样配置文件的目录,默认为PREFIX/etc。

             

--libdir=DIRECTORY

设置安装库和动态装载模块的目录。默认是EXEC-PREFIX/lib。

             

--includedir=DIRECTORY

C和C++头文件的目录。默认是PREFIX/include。

             

--datarootdir=DIRECTORY

设置多种只读数据文件的根目录。这只为后面的某些选项设置默认值。默认值为PREFIX/share

             

--datadir=DIRECTORY

设置被安装的程序使用的只读数据文件的目录。默认值为DATAROOTDIR。注意这不会对你的数据库文件被放置的位置产生任何影响。

             

--localedir=DIRECTORY

设置安装区域数据的目录,特别是消息翻译目录文件。默认值为DATAROOTDIR/locale.

             

--mandir=DIRECTORY

PostgreSQL自带的手册页将安装到这个目录,它们被安装在相应的manx子目录里。默认是DATAROOTDIR/man。

             

--docdir=DIRECTORY

设置安装文档文件的根目录,"man"页不包含在内。这只为后续选项设置默认值。这个选项的默认值为DATAROOTDIR/doc/postgresql。

             

--htmldir=DIRECTORY

PostgreSQL的HTML格式的文档将被安装在这个目录中。默认值为DATAROOTDIR。

             

--with-extra-version=STRING

把STRING追加到PostgreSQL版本号。例如,你可以使用它来标记从未发布的Git快照或者包含定制补丁(带有一个如git describe标识符之类的额外版本号或者一个分发包发行号)创建的二进制文件。

             

--with-includes=DIRECTORIES

DIRECTORIES是一个冒号分隔的目录列表,这些目录将被加入编译器的头文件搜索列表中。如果你有一些可选的包(例如GNUReadline)安装在非标准位置,你就必须使用这个选项,以及可能还有相应的--with-libraries选项。

例子:--with-includes=/opt/gnu/include:/usr/sup/include.

                 

--with-libraries=DIRECTORIES

DIRECTORIES是一个冒号分隔的目录列表,这些目录是用于查找库文件的。如果你有一些包安装在非标准位置,你可能就需要使用这个选项(以及对应的--with-includes选项)。

例子:--with-libraries=/opt/gnu/lib:/usr/sup/lib.

             

--enable-nls[=LANGUAGES]

打开本地语言支持(NLS),也就是以非英文显示程序消息的能力。LANGUAGES是一个空格分隔的语言代码列表,表示你想支持的语言。例如--eenable-nls='defr'(你提供的列表和实际支持的列表之间的交集将会自动计算出来)。如果你没有声明一个列表,那么就会安装所有可用的翻译。例:--enable-nls=zh_CN要使用这个选项,你需要一个GettextAPI的实现。

             

--with-pgport=NUMBER

把NUMBER设置为服务器和客户端的默认端口。默认是5432。这个端口可以在以后修改,不过如果你在这里声明,那么服务器和客户端将有相同的编译好了的默认值。这样会非常方便些。通常选取一个非默认值的理由是你企图在同同一台机器上运行多个PostgreSQL服务器。

             

--with-perl

制作PL/Perl服务器端编程语言。

             

--with-python

制作PL/Python服务器端编程语言。

             

--with-tcl

制作PL/Tcl服务器编程语言。

             

--with-tclconfig=DIRECTORY

Tcl安装文件tclConfig.sh,其中里面包含编译与Tcl接口的模块的配置信息。该文件通常可以自动地在一个众所周知的位置找到,但是如果你需要要一个不同版本的Tcl,你也可以指定可以找到它的目录。

             

--with-gssapi

编译GSSAPI认证支持。在很多系统上,GSSAPI(通常是Kerberos安装的一部分)系统不会被安装在默认搜索位置(例如/usr/include、/usr/lib),因此你必须使用选项--with-includes和--with-libraries来配合该选项。configure将会检查所需的头文件和库以确保你的GSSAPI安装足以让配置继续下去。

             

--with-krb-srvnam=NAME

默认的Kerberos服务主的名称(也被GSSAPI使用)。默认是postgres。通常没有理由改变这个值,除非你是一个Windows环境,这种情况下该名名称必须被设置为大写形式POSTGRES.    

             

--with-llvm

支持基于LLVM的JIT编译。这需要安装LLVM库。当前LLVM的最低要求版本是3.9。livm-config可用于查找所需的编译选项。Ilvm-config会在PATH上搜索所有受支持版本的Ilvm-config-$major-$minor。如果那还不能找到正确的二进制文件,请使用LLVM_CONFIG指定正确的Ilvm-config的路径。

例如:/configure ... --with-llvm LLVM_CONFIG='/path/to/llvm/bin/llvm-config

LLVM支持需要兼容的clang编译器(必要时使用CLANG环境变量指定)和有效的C++编译器(必要时使用使用CXX环境变量指定)。

             

--with-icu

支持ICU库。这需要安装ICU4C软件包。目前要求的最低ICUJ4C版本是4.2。默认的,pkg-config将被用来查找所需的编译选项。支持ICU4C版本4.6及更高版本。对于较老版本,或者如果pkg-config不可用,可以将变量ICU_CFLAAGS和ICULIBS指定为configure,就像下面的示例中那样:

/configure ... --with-icu ICU_CFLAGS='-l/some/whene/include' ICU_LIBS='L/some/where/lib -licui18n -licuuc -licudata'

(如果ICU4C在编译器的默认搜索路径中,那么你仍然需要指定宝一个非空的字符串,以避免使用pkg-config,例如ICU_CFLAGS=''。)

             

--with-openssl

编译SSL(加密)连接支持。这个选项需要安装OpenSSL包,configure将会检查所需的头文件和库以确保你的OpenSSL安装足以让配置继续下去。

             

--with-pam

编译PAM(可插拔认证模块)支持。

             

--with-bsd-auth

编译BSD认证支持(BSD认证框架目前只在OpenBSD上可用)。

             

--with-Idap

为认证和连接参数查找编译LDAP支持。在Unix上,这需要安装OpenLDAP包。在Windows上将使用默认的WinLDAP库。configure将会检查所需的头文件和库以确保你的OpenLDAP安装足以让配置继续下去。

             

--with-systemd

编译对systemd服务通知的支持。如果服务器是在systemd机制下被启动,这可以提高集成度,否则不会有影响。要使用这个选项,必须安装libsysteemd以及相关的头文件

             

--without-readline

避免使用Readline库(以及libedit)。这个选项禁用了osql中的命令行编辑和历史,因此我们不建议这么做。    

             

--with-libedit-preferred

更倾向于使用BSD许可证的libedit库而不是GPL许可证的Reaadline。这个选项只有在你同时安装了两个库时才有意义,在那种情况下默认会使用Readline.

             

--with-bonjour

编译Bonjour支持。这要求你的操作系统支持Bonjour。在maCOS上建议使用。

             

--with-uuid=LIBRARY

使用指定的UUID库编译uuid-ossp模块(提供生成UUID的函数)LIBRARY必须是

下列之一:

bsd,用来使用FreeBSD、NetBSD和一些其他BSD衍生系统中的UUID函数e2fs,用来使用e2fsprogs项目创建的UUID库,这个库出现在大部分的Linux系统和macOS中,并且也能找到用于其他平台的版本ossp,用来使用OSSPUUID library

             

--with-ossp-uuid

--with-uuid=ossp的已废弃的等效选项。

             

--with-libxml

编译libxml(启用SQL/XML支持)。这个特性需要Libxml版本2.6.23及以上。Libxml会安装一个程序xml2-config,它可以被用来检测所需的编译器和链接器选项。如果能找到,PostgreSQL将自动使用它。要制定一个非常用的libxml安装位置,你可以设置环境变量XML2_CONFIG指向xml2-config程序所属的的安装,或者使用选项with-includes 和--with-libraries.

             

--with-libxslt

编译xml2模块时使用libxslt。xml2依赖这个库来执行XIML的XSL转换。

             

--disable-float4-byval

禁用float4值的"传值",导致它们只能被"传引用"。这个道选项会损失性能,但是在需要兼容使用C编写并使用"version0'调用规范的老用户定义函数时可能需要这个选项。更好的长久解决方案是将任何这样的函数更新成使用"version 1"调用规范。

             

--disable-float8-byval

禁用float8值的"传值",导致它们只能被"传引用"。这个道选项会损失性能,但是在需要兼容使用C编写并使用"version0"调用规范的老用户定义函数时可能需要这个选项。更好的长久解决方案是将任何这样的函数更新成使用"version1"调用规范。注意这个选项并非只影响float8,它还影响int8和某些相关类型如时间戳。在32位平台上,--disable float8-byval是默认选项并且不允许选择-enable-float8-byval。

                 

--with-segsize=SEGSIZE

设置段尺寸,以G字节计。大型的表会被分解成多个操作系统文件,每一个的尺寸等于段尺寸。这避免了与操作系统对文件大小限制相关的问题。默认的段尺寸(1G字节)在所有支持的平台上都是安全的。如果你的操作系统有"largefile"支持(如今大部分都支持)你可以使用一个更大的段尺寸。这可以有助于在使用非常大的的表时消耗的文件描述符数目但是要当心不能选择一个超过你将使用的平台和文件系统所了支持尺寸的值。你可能希望使用的其他工具(如tar)也可以对可用文件尺寸设限。如非线绝对必要,我们推荐这个值应为2的幂。注意改变这个值需要一次initdb。

             

--with-blocksize=BLOCKSIZE

设置块尺寸,以K字节计。这是表内存储和1/0的单位。默认值(8K字节)适合于大多数情况,但是在特殊情况下可能其他值更有用。这个值必须是是2的幂并且在1和32(K字节)之间。注意修改这个值需要一次initdb。

             

--with-wal-blocksize=BLOCKSIZE

设置WAL块尺寸,以K字节计。这是WAL日志存储和1/0的单单位。默认值(8K字节)适合于大多数情况,但是在特殊情况下其他值更好有用。这个值必须是2的幂并且在1到64(K字节)之间。注意修改这个值需要一次initdb。

             

--disable-spinlocks

即便PostgreSQL对于该平台没有CPU自旋锁支持,也允许编译成功。自旋锁支持的缺乏会导致较差的性能,因此这个选项只有当编译终端或者通知你该平台缺乏自旋锁支持时才应被使用。如果在你的平台上要求使用该选项来编译PostgreSQL请将此问题报告给PostgreSQL的开发者。

             

--disable-thread-safety

禁用客户端库的线程安全性。这会阻止libpq和ECPG程序中的并发线程安全地控制它们私有的连接句柄。

             

--with-system-tzdata=DIRECTORY

PostgreSQL包含它自己的时区数据库,它被用于日期和时间操作。这个时区数据库实际上是和IANA时区数据库相兼容的,后者在很多操作系统如FreeBSD、Linux和Solaris上都有提供,因此再次安装它可能是冗余的。当这个选项被使用时,将不会使用DIRECTORY中系统提供的时区数据库,而是使用包括在PostgreSQL源码发布中的时区数据库。DIRECTORY必须被指定为一个绝对路径。/usr/sharee/zoneinfo在某些操作系统上是一个很有可能的路径。注意安装例程将不会检测不[匹配或错误的时区数据。如果你使用这个选项,建议你运行回归测试来验证你指定的时区数据能正常地工作在PostgreSQL中。

这个选项主要针对那些很了解他们的目标操作系统的二进制包发布者。使用这个选项主要优点是不管何时当众多本地夏令时规则之一改变时,PostgreSCQL包不需要被升级。另一个优点是如果时区数据库文件在安装时不需要被编译,PostgreSQL可以被更直接地交叉编译。

             

--without-zlib

避免使用Zlib库。这样就禁用了pg_dump和pg_restore中对压缩归档的支持。这个选项只适用于那些没有这个库的少见的系统。

                 

--enable-debug

把所有程序和库以带有调试符号的方式编译。这意味着你可以通过一个调试器运行程序来分析问题。这样做显著增大了最后安装的可执行文件的大小,并且且在非GCC的编译器上,这么做通常还要关闭编译器优化,这些都导致速度的下降。但是,如果有这些符号的话,就可以非常有效地帮助定位可能发生问题的位置。目前,我们只是在你使用GCC的情况下才建议在生产安装中使用这个选项。但是如果你正在进行开发工作,或者正在使用beta版本,那么你就应该总是打开它。

             

--enable-coverage

如果在使用GCC,所有程序和库都会用代码覆盖率测试工具编译。在运行时,它们会在编译目录中生成代码覆盖率度量的文件。这个选项只用于GCC以及做开发工作时。

             

--enable-profiling

如果在使用GCC,所有程序和库都被编译成可以进行性能分析。在后端退出时,将会创建一个子目录,其中包含用于性能分析的gmon.out文件。这个选项只用于GCC和做开发工作时。

             

--enable-cassert

打开在服务器中的assertion检查,它会检查许多"不可能发生"的条件。它对于代码开发的用途而言是无价之宝,不过这些测试可能会显著地降低朋报务器的速度。并且,打开这个测试不会提高你的系统的稳定性!这些断言检查并不是按照严重性分类的,因此一些相对无害的小故障也可能导致服务器重启-只要它触发了一次断言失败。目前,我们不推荐在生产环境中使用这个选项,但是如果你在做开发或者在使使用beta版本的时候应该打开它。

             

--enable-depend

打开自动倚赖性跟踪。如果打开这个选项,那么制作文件(makefile)将设置为在任何头文件被修改的时候都将重新编译所有受影响的目标文件。如果你在做开发的工作,那么这个选项很有用,但是如果你只是想编译一次并且安装,那么这就是是浪费时间。目前,这个选项只对GCC有用。

             

--enable-dtrace

为PostgreSQL编译对动态跟踪工具DTrace的支持。要指向dtrace程序,必须设置环境变量DTRACE。这通常;是必需的,因为dtrace通常被安装在/usr/sbin中,该路径可能不在搜索路径中。dtrace程序的附加命令行选项可以在环境变量DTRACEFLAGS中指定。在Solaris上,要在一个64位二进制中包括DTrace,你必须为configure指定DTRACEFLAGS="64"。

例如,使用GCC编译器:

./configure CC='gcc -m64' --enable-dtrace DTRACEFLAGSS='-64' ..

使用Sun的编译器:

./configure CC='/opt/SUNWspro/bin/cc -xtarget=nattive64' --enable-dtrace DTRACEFLAGS='-64' ...

--enable-tap-tests

启用Perl TAP工具进行测试。这要求安装了 Perl以及 Perl模块IPC::Run。

                 

             

8、配置环境变量    

--验证数据库版本:

             

#vi .bash_profile

export PGPORT=5432

export PGDATA=/data/pgdata

export PGHOME=/data/pg17

export LD_LIBRARY_PATH=$PGHOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/lib:/usr/lib:/usr/local/lib:$LD_LIBRARY_PATH

export PATH=$PGHOME/bin:$PATH:.

export DATE=`date +"%Y%m%d%H%M"`

export MANPATH=$PGHOME/share/man:$MANPATH

export PGHOST=$PGDATA

export PGUSER=postgres

export PGDATABASE=postgres

export LANG='en_US.UTF-8'

             

             

9、初始化数据库    

initdb -D $PGDATA -E UTF8 --locale=C -U postgres

             

             

                 

10、启动pg数据库实例    

配置启动参数:

cd $PGDATA

vi postgresql.conf

---添加如下内容:

listen_addresses = '0.0.0.0' 

port = 5432

max_connections = 20000 

unix_socket_directories = '/data/pgdata' 

tcp_keepalives_idle = 60 

tcp_keepalives_interval = 10 

tcp_keepalives_count = 10 

shared_buffers = 512MB 

dynamic_shared_memory_type = posix 

vacuum_cost_delay = 0 

bgwriter_delay = 10ms 

bgwriter_lru_maxpages = 1000 

bgwriter_lru_multiplier = 10.0 

bgwriter_flush_after = 0  

backend_flush_after = 0   

wal_level=logical

archive_mode=always

archive_command='cp %p /data/pgdata/archive/%f'

min_wal_size=128MB 

max_wal_size=1GB

max_wal_senders=10

hot_standby=on

log_filename='pg_log_%u.log'

log_file_mode=0600

log_truncate_on_rotation=on

log_rotation_age=1d

log_min_messages=warning

log_min_duration_statement=30s

synchronous_commit = off 

full_page_writes = on 

wal_buffers = 16MB 

wal_writer_delay = 10ms 

wal_writer_flush_after = 0  

checkpoint_timeout = 30min      

checkpoint_completion_target = 0.05   

checkpoint_flush_after = 0   

random_page_cost = 1.3 

log_directory='pg_log' 

log_destination = 'csvlog' 

logging_collector = on 

log_truncate_on_rotation = on 

log_checkpoints = on 

log_connections = on 

log_disconnections = on 

log_error_verbosity = verbose 

log_duration=on

log_lock_waits=on

log_statement='mod'

autovacuum = on 

log_autovacuum_min_duration = 0 

autovacuum_naptime = 20s 

autovacuum_vacuum_scale_factor = 0.05 

autovacuum_freeze_max_age = 1500000000 

autovacuum_multixact_freeze_max_age = 1600000000 

autovacuum_vacuum_cost_delay = 0 

vacuum_freeze_table_age = 1400000000 

vacuum_multixact_freeze_table_age = 1500000000 

datestyle = 'iso, mdy' 

timezone = 'PRC' 

lc_messages = 'C' 

lc_monetary = 'C' 

lc_numeric = 'C' 

lc_time = 'C' 

default_text_search_config = 'pg_catalog.english'

             

             

###启动服务

pg_ctl -D /data/pgdata start &

    

##查看状态:

             

11、登录测试    

su - postgres

psql

##修改数据库用户密码:

alter user postgres with encrypted password 'pgtest#124';

##创建数据库

create database db01 with owner=postgres encoding='UTF-8';

\l

##创建表

\c db01

create table test(id int,name char(5));

##新增数据

\d test

insert into test valus(1,’happy’);

select * from test;

    

             

             

12、配置开机自启动    

通过配置为系统服务方式进行实现开机自启

#先进行关闭pg数据库

pg_ctl stop

             

cat > /usr/lib/systemd/system/postgres.service << "EOF"

[Unit]

Description=PostgreSQL database server

After=network.target

[Service]

Type=forking

User=postgres

Group=postgres

Environment=PGPORT=5432

Environment=PGDATA=/data/pgdata

OOMScoreAdjust=-1000

ExecStart=/data/pg17/bin/pg_ctl start -D $PGDATA

ExecStop=/data/pg17/bin/pg_ctl stop -D $PGDATA -s -m fast

ExecReload=/data/pg17/bin/pg_ctl reload -D $PGDATA -s

TimeoutSec=300

[Install]

WantedBy=multi-user.target

EOF

             

chmod +x /usr/lib/systemd/system/postgres.service

systemctl daemon-reload

setenforce 0

systemctl enable postgres.service

systemctl status postgres.service

systemctl start  postgres.service 

systemctl status postgres.service

             

                 

                 


文章转载自山佳数峰寻道,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论