Centos7 RPM 安装Postgresql

前期准备

1、挂载硬盘(这里只是举一个例子,具体的挂载目录需要自己定义)

数据库存储路径这里,要按照 服务器本身存储路径,一般情况下服务器的硬盘是已经被挂载上的。但是为了防止硬盘没有挂载,也为了查看各个目录存储空间的大小。可以使用下面这个命令进行查看。

[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   30G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   29G  0 part 
  ├─centos-root 253:0    0   27G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0   20G  0 disk         
sr0              11:0    1  4.2G  0 rom  
[root@localhost ~]#

注意:最后这个mountpoing的意思是挂载点 ,如果type类型是disk(硬盘)且没有挂载点。就证明这个硬盘还没有被挂载,需要你先去把硬盘给挂载上,在进行数据库存储路径的配置。

[root@localhost ~]# mkdir /backup   # 新建一个文件夹作为挂载点

[root@localhost ~]# cd /            # 移动至根目录下

[root@localhost /]# ls              # 这里已经有这个文件夹了
backup  bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var  yumiso

[root@localhost /]# mount /dev/sdb /backup    # 挂载硬盘,下面会报错。是因为没有对硬盘进行格式化。
mount: /dev/sdb is write-protected, mounting read-only  
mount: unknown filesystem type '(null)'       # Mount:未知的文件系统类型'(null)'

[root@localhost /]# mkfs.ext4 /dev/sdb      # 对硬盘进行格式化(格式为ext4)
mke2fs 1.42.9 (28-Dec-2013)
/dev/sdb is entire device, not just one partition!
Proceed anyway? (y,n) y                    # 这里选y
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes, 5242880 blocks
262144 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2153775104
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done   


[root@localhost /]# mount /dev/sdb /backup   # 这里在执行一次挂载命令就可以了
[root@localhost /]# blkid /dev/sdb           # 查看挂载硬盘的UUID,复制以下。写到下面的配置文件中,实现永久挂载。
/dev/sdb: UUID="6384d556-f444-48ee-8f1d-5257f0c350aa" TYPE="ext4" 


用于挂载信息的指定填写格式中,各字段所表示的意义

设备文件	一般为设备的路径+设备名称,也可以写唯一识别码(UUID,Universally Unique Identifier)
挂载目录	指定要挂载到的目录,需在挂载前创建好
格式类型	指定文件系统的格式,比如Ext3、Ext4、XFS、SWAP、iso9660(此为光盘设备)等
权限选项	若设置为defaults,则默认权限为:rw, suid, dev, exec, auto, nouser, async
是否备份	若为1则开机后使用dump进行磁盘备份,为0则不备份
是否自检	若为1则开机后自动进行磁盘自检,为0则不自检


如果想将文件系统为Ext4的硬件设备/dev/sdb2在开机后自动挂载到/backup目录上,并保持默认权限
且无须开机自检,就需要在/etc/fstab文件中写入下面的信息,这样在系统重启后也会成功挂载。

[root@localhost ~]# vim /etc/fstab

在最后一行增加如下信息
UUID=831af6b9-75c1-48ab-a031-f6a88dc39649      /backup    ext4    defaults    0  0

写入到/etc/fstab文件中的设备信息并不会立即生效,需要使用mount -a参数进行自动挂载:

[root@localhost /]# mount -a

df命令用于查看已挂载的磁盘空间使用情况,英文全称为“disk free”,语法格式为“df -h”。
查看当前系统中设备的挂载情况,列出系统中正在使用的设备有哪些。

[root@localhost /]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   27G  9.5G   18G  36% /
devtmpfs                 899M     0  899M   0% /dev
tmpfs                    911M     0  911M   0% /dev/shm
tmpfs                    911M  9.6M  902M   2% /run
tmpfs                    911M     0  911M   0% /sys/fs/cgroup
/dev/sda1               1014M  142M  873M  14% /boot
tmpfs                    183M     0  183M   0% /run/user/0
/dev/sdb                  20G   45M   19G   1% /backup    # 现在硬盘就已经挂在到了挂载点上了。

挂载错误之后可以使用umount命令,进行卸载,然后重新进行挂载。如果是写入到了配置文件中,也需要对配置文件进行修改。

umount /dev/sdb
2、Postgresql配置文件说明
postgresql.conf
  该文件包含一些通用设置,比如内存分配、新建database的默认存储位置、Postgresql服务器的IP地址、日志位置以及许多其他位置。

pg_hba.conf
  该文件用于控制Postgresql服务器的访问权限,具体包括:允许哪些用户连接到哪个数据库,允许哪些IP地址连接到本服务器,以及制定连接时使用的身份验证模式。

pg_ident.conf
  如果该文件存在,则系统会基于文件内容将当前登陆的操作系统用户映射为一个Postgresql数据库内部的身份来登陆。有些人会把操作系统的root用户映射为Postgresql的postgres超级用户账号。

安装步骤

1、在一台可以联网的centos上安装postgresql源
yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
2、使用yumdownloader下载安装包
yumdownloader --resolve postgresql13-server
3、上传rpm包到安装的centos服务器上
-rw-rw-rw- 1 root root 1490812 Sep 27 09:45 postgresql13-13.4-1PGDG.rhel7.x86_64.rpm
-rw-rw-rw- 1 root root  390420 Sep 27 09:45 postgresql13-libs-13.4-1PGDG.rhel7.x86_64.rpm
-rw-rw-rw- 1 root root 5654980 Sep 27 09:45 postgresql13-server-13.4-1PGDG.rhel7.x86_64.rpm
4、批量安装rpm包
rpm -ivh postgresql13-13.4-1PGDG.rhel7.x86_64.rpm postgresql13-libs-13.4-1PGDG.rhel7.x86_64.rpm postgresql13-server-13.4-1PGDG.rhel7.x86_64.rpm

报错了,缺少依赖libicu

warning: postgresql13-13.4-1PGDG.rhel7.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 442df0f8: NOKEY
error: Failed dependencies:
        libicu is needed by postgresql13-13.4-1PGDG.rhel7.x86_64
        libicui18n.so.50()(64bit) is needed by postgresql13-server-13.4-1PGDG.rhel7.x86_64
        libicuuc.so.50()(64bit) is needed by postgresql13-server-13.4-1PGDG.rhel7.x86_64
5、使用yumdownloader下载libicu
yumdownloader --resolve libicu
-rw-r--r-- 1 root root 7250656 Mar 25  2020 libicu-50.2-4.el7_7.i686.rpm
-rw-r--r-- 1 root root 7202728 Mar 25  2020 libicu-50.2-4.el7_7.x86_64.rpm
-rw-r--r-- 1 root root 1490812 Aug 12 18:07 postgresql13-13.4-1PGDG.rhel7.x86_64.rpm
-rw-r--r-- 1 root root  390420 Aug 12 18:07 postgresql13-libs-13.4-1PGDG.rhel7.x86_64.rpm
-rw-r--r-- 1 root root 5654980 Aug 12 18:07 postgresql13-server-13.4-1PGDG.rhel7.x86_64.rpm

删除libicu-50.2-4.el7_7.i686.rpm(32位安装包)

6、重新上传到需要安装的服务器,执行安装命令
rpm -ivh libicu-50.2-4.el7_7.x86_64.rpm postgresql13-13.4-1PGDG.rhel7.x86_64.rpm postgresql13-libs-13.4-1PGDG.rhel7.x86_64.rpm postgresql13-server-13.4-1PGDG.rhel7.x86_64.rpm
7、安装成功后初始化数据库
/usr/pgsql-13/bin/postgresql-13-setup initdb
8、开机启动postgresql数据库
systemctl enable postgresql-13
9、启动postgresql数据库服务
systemctl start postgresql-13
10、创建用户和数据库,使用postgres用户登录(PostgresSQL安装后会自动创建postgres用户,无密码)
su postgres
11、登录postgresql数据库
psql
12、创建用户和数据库并授权
create user postgresqladmin with password 'nbsq@hq013aA!';            // 创建用户
create database sonarqube owner ycloans;                 // 创建数据库
grant all privileges on database sonarqube to ycloans;   // 授权

\q 退出命令模式

13、开启远程访问,修改/var/lib/pgsql/13/data/postgresql.conf文件,取消 listen_addresses 的注释,将参数值改为“*”
14、修改/var/lib/pgsql/13/data/pg_hba.conf文件,增加下图红框部分内容
15、切换到root用户,重启postgresql服务
systemctl restart postgresql-13
16、日志配置详解(postgresql.conf)
配置1:日志开启与关闭

默认为off,设置为on则pg可以记录相关日志,建议应该打开,否则在数据库出现异常时候,没有日志来定位具体问题

# This is used when logging to stderr:

logging_collector =on					# Enable capturing of stderr and csvlog

# into log files. Required to be on for
# csvlogs.
# (change requires restart)
配置2:日志滚动策略
# These are only used if logging_collector is on:

#配置日志目录,默认为pg_log即可

log_directory = 'pg_log' # directory where log files are written,

# can be absolute or relative to PGDATA

#pg日志文件名及其扩展名,默认即可

log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' # log file name pattern,

# can include strftime() escapes

#pg日志文件的权限,默认即可

log_file_mode = 0600 # creation mode for log files,

#开启日志滚动阶段,这里需要设置为on

log_truncate_on_rotation =on	# If on, an existing log file with the

#日志保留天数,这里看实际环境,如果是测试建议1d,如果是生产环境建议7d

log_rotation_age = 1d # Automatic rotation of logfiles will

# 单个日志大小,默认100MB即可,比较标准的配置
配置3:日志打印时机
#发送给客户端的消息级别,建议warning即可,日志等级越低,打印的内容越多,性能上越有损耗
client_min_messages = warning 	# values in order of decreasing detail:
# debug5
# debug4
# debug3
# debug2
# debug1
# log
# notice
# warning
# error
#写到数据库日志文件中的消息的级别,建议warning即可,日志等级越低,打印的内容越多,性能上越有损耗
log_min_messages = warning 		# values in order of decreasing detail:
# debug5
# debug4
# debug3
# debug2
# debug1
# info
# notice
# warning
# error
# log
# fatal
# panic
#是否记录导致数据库出现错误的SQL语句,建议warning即可,日志等级越低,打印的内容越多,性能上越有损耗
log_min_error_statement = error # values in order of decreasing detail:
# debug5
# debug4
# debug3
# debug2
# debug1
# info
# notice
# warning
# error
# log
# fatal
# panic (effectively off)
配置4:数据库统计监控
#log_statement_stats为on则会开启log_parser_stats,log_planner_stats,log_executor_stats这三个选项,生产环境不建议开启,建议测试环境开启,用于定位问题。
#log_parser_stats = off
#log_planner_stats = off
#log_executor_stats = off
#log_statement_stats = off
配置5:慢sql记录配置
#执行sql时间为2s以上的sql都会被记录下来
log_min_duration_statement = 2s

以上配置再修改完之后,均需要重启pg生效。

可以把下面的配置作为一个参考,进行更详细的配置。常规的配置项说明:
# 启动日志收集, 这是一个后台进程,抓取发送到stderr的日志消息,并会将他们重定向到日志文件(该配置修改后,需要重启DB服务)
logging_collector = on
# 日志输出目的地,启用CSV格式输出
log_destination = 'csvlog' 
# 日志输出路径,可以是自定义绝对路径或相对于数据目录 PGDATA 的相对路径
log_directory = 'log' 
# 日志文件命名方式,默认为postgresql-%Y-%m-%d_%H%M%S.log
# 需打开log_truncate_on_rotation,否则日志会追加到同名日志文件后
# 最多保存12小时的日志,每小时一个文件
# log_filename = 'postgresql-%I.log'
# 最多保存24小时的日志,每小时一个文件
# log_filename = 'postgresql-%H.log'
# 最多保存一周的日志,每天一个文件
# log_filename = 'postgresql-%w.log'
# 最多保存一个月的日志,每天一个文件
# log_filename = 'postgresql-%d.log'
# 最多保存一年的日志,每天一个文件
# log_filename = 'postgresql-%j.log'
log_filename = 'postgresql-%m-%d.log'
# 在 Unix 系统上,当logging_collector被启用时,这个参数设置日志文件的权限(在微软 Windows 上这个参数将被忽略)。这个参数值应当是一个数字形式的模式,它可以被chmod和umask系统调用接受(要使用通常的十进制格式,该数字必须以一个0(零)开始)。
# 默认的权限是0600,表示只有服务器拥有者才能读取或写入日志文件。其他常用的设置是0640,它允许拥有者的组成员读取文件。不过要注意你需要修改log_directory为将文件存储在集簇数据目录之外的某个位置,才能利用这个设置。在任何情况下,让日志文件变成任何人都可读是不明智的,因为日志文件中可能包含敏感数据。
log_file_mode = 0600
# 当生成新的文件时,覆盖已存在的同名文件,而不是追加内容到该文件
log_truncate_on_rotation = on
# 单个日志文件的生存期,默认1天,在日志文件大小没有达到log_rotation_size时,一天只生成一个日志文件
log_rotation_age = 1d
# 单个日志文件的大小,如果时间没有超过log_rotation_age,一个日志文件最大只能到10M,否则将新生成一个日志文件
log_rotation_size = 100MB
log_min_messages = warning
log_min_error_statement = error
# 如果语句运行至少指定的毫秒数,将导致记录每一个这种完成的语句的持续时间。将这个参数设置为0将打印所有语句的执行时间。设置为 -1 (默认值)将停止记录语句持续时间。例如,如果你设置它为250ms,那么所有运行 250ms 或更久的 SQL 语句将被记录。启用这个参数可以有助于追踪应用中未优化的查询
log_min_duration_statement = 30000
# 记录每条SQL语句执行完成消耗的时间,将此配置设置为on,用于统计哪些SQL语句耗时较长
log_duration = off
# 控制当一个会话等待时间超过deadlock_timeout而被锁时是否产生一个日志信息。在判断一个锁等待是否会影响性能时是有用的,缺省是off
log_lock_waits = on
# 设置日志记录内容,log_statement:none, ddl, mod, and all,默认是 none 
# none:表示不记录
# ddl:记录所有数据定义命令,比如CREATE,ALTER,和DROP语句
# mod:记录所有ddl语句,加上数据修改语句INSERT,UPDATE等
# all:记录所有执行的语句,将此配置设置为all可跟踪整个数据库执行的SQL语句,但会对数据库性能产生较大影响,生产环境不建议配置此值
log_statement = 'mod'
# 导致检查点和重启点被记录在服务器日志中。一些统计信息也被包括在日志消息中,包括写入缓冲区的数据和写它们所花的时间
log_checkpoints = on
log_connections = on
log_disconnections = on
# 控制为每一个被记录的消息要写入到服务器日志的细节量。有效值是TERSE、DEFAULT和VERBOSE,每一个都为显示的消息增加更多域。TERSE排除记录DETAIL、HINT、QUERY和CONTEXT错误信息。VERBOSE输出包括SQLSTATE错误码以及产生错误的源代码文件名、函数名和行号。只有超级用户能够更改这个设置。
log_error_verbosity = verbose
# 日志输出格式,默认为%m %p,可根据自己需要设置(能够记录时间,用户名称,数据库名称,客户端IP和端口,方便定位问题)
# 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_line_prefix = '%m %p %u %d %r '
# 日志时区,默认PRC,最好和服务器设置同一个时区,方便问题定位
log_timezone = 'Asia/Shanghai'
deadlock_timeout = 10s
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CentOS 7离线安装PostgreSQL的步骤如下: 1. 首先,在一台联网的CentOS 7机器上下载所需的PostgreSQL安装包。可以在官方网站(https://www.postgresql.org/)上找到最新的发布版本。选择适用于CentOS 7的RPM安装包,并下载到本地。 2. 将下载好的RPM安装包以及其所有依赖的RPM安装包打包成一个tar.gz压缩包,方便在离线环境中使用。 3. 将这个压缩包复制到目标机器上。 4. 在离线环境的CentOS 7机器上,解压缩这个打包好的压缩包。 5. 在解压缩的目录中,打开终端,并以root用户身份执行以下命令以安装PostgreSQL及其依赖: ``` rpm -ivh *.rpm ``` 其中,`*.rpm`是指安装包所在的目录下所有RPM安装包的通配符。 6. 安装完成后,需要进行一些基本的配置,例如创建数据库管理员用户、启动数据库服务以及设置开机自启动等。具体的配置步骤可以参考PostgreSQL官方文档。 注意事项: - 离线安装PostgreSQL时,需要确保所下载RPM安装包与目标机器的CentOS 7版本和硬件架构相匹配,否则可能导致安装异常或不成功。 - 离线安装时,需提前了解PostgreSQL所需的所有依赖,并确保在目标机器上已经安装了这些依赖的RPM包,否则安装过程将会失败。可以通过在联网环境中运行以下命令查看依赖关系: ``` yum deplist *.rpm ``` 以上是CentOS 7离线安装PostgreSQL的简要步骤,具体操作可能会因实际情况而有所差异。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值