PostgreSql生产级别数据库安装要注意事项

目录
  • 一、安装包下载
  • 二、必要的准备工作
    • 1、安装必要的编译环境
    • 2、创建postgre用户
    • 3、开放防火墙端口
    • 4.修改操作系统打开最大文件句柄数
    • 5、创建必要的目录
  • 三、编译并安装
  • 四、配置环境变量
  • 五、数据库及参数初始化
  • 六、启动数据库新建用户
  • 七、开机自启动

我让公司的小伙伴写一个生产级别的PostgreSQL的安装文档,结果他和我说:“不是用一个命令就能安装好么?还用写文档么?”。我知道他想说的是这个命令:yum install postgresql-server,我也是挺无语的。「要知道生产级别的应用安装方式,和自己在练习过程中安装的小玩具相比,要严谨的多,考虑的问题也更多。」

  • 首先是安全问题,能不能用root安装?防火墙怎么搞?数据库打开文件以及连接数会不会超过linux默认打开文件句柄数的限制?
  • 其次是合理规划,你的数据放在哪个目录?这个目录是全公司统一的么?linux发行版不一样,软件安装目录一致么?数据目录是单独挂载磁盘么?单独挂载的磁盘做了RAID数据冗余么?
  • 然后是运维方便的问题,你是否配置了合理的环境变量,如果不配置你是不是每次执行命令都要敲全路径?是否PostgreSQL具备开机自启动功能?
  • 数据库用户是否经过合理规划,你的数据操作(增删改查)用户是否能新建表,truncat表,删除表?数据操作用户具备这些功能是不是导致人为误操作的风险增加?
  • 你的数据库安装之后,是否具备企业级的统一管理、故障监控?流程上如何申请?等等等等。

以上的这些问题,都需要写在《数据库安装手册》中,怎么会只有一个命令呢?「本文只当抛砖引玉,通过安装PostgreSQL数据库,来说明一下一个完整的《数据库安装手册》该怎么写。」 如果有考虑不足不全面之处,欢迎网友们补充。

一、安装包下载

要进行PostgreSQL的安装,首先我们需要先把安装包下载下来。生产环境的postgresql安装一般会使用源码编译的方式进行安装,使用源码编译的安装方式有几个好处(坏处就是相对麻烦):

  • 公司的服务器什么型号,什么操作系统版本的都有。如果使用yum或者apt-get安装,很难统一版本,不同的操作系统发行版带的postgreSQL源是不一样的。即使搞成统一的,不同的操作系统之间也无法统一安装目录的位置、lib存放位置等。
  • postgresql源码编译的方式进行安装,可以灵活的选择我们需要安装的版本,需要哪一个版本就下载哪一个版本。而使用yum或者apt-get进行安装只能源库指定的若干版本。源码安装,我们想指定什么目录就指定什么目录,全公司所有的PostgreSQL都在这个目录,这也是规范的一种。

所以为了适应更多的场景,为了达到公司内运维统一的标准,一般生产环境会使用postgresql源码编译的方式进行安装。PostgreSql官方源码安装包的下载地址是:https://www.postgresql.org/download/

找到如上图所示的“file browser”,点击进入file browser页面,下载以“tar.gz”结尾的安装包即可。

二、必要的准备工作

需要说明的是,准备工作需要使用root用户进行操作。我们以CentOS linux发行版操作系统为例,命令如下。如若是其他的linux发行版,准备工作这一块内容操作步骤是差不多的,linux命令需要调整。

1、安装必要的编译环境

首先需要安装一些必要的依赖,PostgreSQL安装的过程需要使用到这些linux包。

yum install -y cmake make gcc zlib zlib-devel gcc-c++ perl readline readline-devel  python36 \
tcl openssl ncurses-devel openldap pam flex

2、创建postgre用户

通过groupadd添加一个用户组postgres,再使用adduser命令添加一个操作系统的postgres用户,该用户的用户组是-g postgres

groupadd postgres
adduser -g postgres postgres

adduser命令在CentOS或者RedHat发行版中,在添加操作系统用户的同时会自动新建一个该用户的主目录/home/postgres,该目录也是我们后续安装PostgreSql的主目录。该目录的权限归属于postgres组的postgres用户。

passwd postgres

新建用户之后,我们使用passwd命令修改操作系统内的postgres用户的密码。

如果你使用的是其他的linux操作系统发行版,这个目录你可能需要手动的去创建,并且手动执行命令为postgres 用户赋权。命令如下

mkdir -p /home/postgres;
chmod -R 775 /home/postgres;
chown -R postgres:postgres /home/postgres;

3、开放防火墙端口

开放防火墙,使用如下2条命令开放postgreSQL的标准端口5432的端口。其实,笔者建议安装postgreSQL的时候,不要使用这个端口,因为端口越固定,被攻击的可能性就越大。我们随机选择一个不常用的端口,安全性会更好一些,这里我还是使用标准端口了。

firewall-cmd --zone=public --add-port=5432/tcp --permanent;
firewall-cmd --reload

4.修改操作系统打开最大文件句柄数

在/etc/security/limits.conf中进行设置(需要root权限修改该文件),可添加如下两行,表示用户postgres最大打开文件描述符数的soft limit为65535,hard limit为65535。

postgres soft   nofile         65535
postgres hard   nofile        65535

该配置在关闭linux访问终端session重新登录之后生效,ulimit -n的值会变成65535 。进行这一步操作的目的是防止linux操作系统内打开文件句柄数量的限制,避免不必要的故障。

5、创建必要的目录

创建目录的时候要做好规划,下文中 /home/postgres/postgre14是我规划的postgreSql安装目录; /home/postgres/pgdata是我规划的postgreSql数据存放目录。

mkdir -p /home/postgres/{postgre14,pgdata}

这里需要注意的是, /home/postgres/pgdata这样的目录规划并不标准,这里我只是给大家做演示操作。「实际上生产环境,postgreSql数据存放目录应该是服务器单独挂载的一块磁盘,与linux操作系统以及安装程序是分开的。」 这样做的好处:一是方便数据备份(硬件层面或软件层面),二是操作系统出现的问题,不影响数据安全。

三、编译并安装

准备工作做好之后我们就开始真正的安装了,安装过程使用postgres用户,使用su命令从root用户切换到postgres用户。并且解压安装包,解压路径是/home/postgres

su - postgres
tar -xzvf ./postgresql-14.4.tar.gz -C /home/postgres

解压之后的文件路径是postgresql-14.4,进入这个目录里面,我们来执行编译安装,编译安装的结果目录我们指定为/home/postgres/postgre14。最后一步make和insatll的过程比较耗时,多等一会。如果没有报错信息,我们的安装就完成了,其实也很快的,并不比yum安装方式麻烦多少。

cd  /home/postgres/postgresql-14.4
./configure --prefix=/home/postgres/postgre14
make  && make install

四、配置环境变量

安装完成之后,我们来给postgres配置一些环境变量,比如PGPORT端口、PGDATA数据目录、PGHOME安装目录、LD_LIBRARY_PATH的安装lib目录、PATH命令脚本目录。

cat >>  ~/.bash_profile <<"EOF"
export PGPORT=5432
export PGDATA=/home/postgres/pgdata
export PGHOME=/home/postgres/postgre14
export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH
export PATH=$PGHOME/bin:$PATH:.
EOF

配置完成之后,使用如下命令使配置生效。

 source  ~/.bash_profile

有了环境变量之后,我们的运维工作会更方便。比如:在postgres用户下我们执行命令psql就可以,就不用敲全路径了,比如:/home/postgres/postgre14/bin/psql

五、数据库及参数初始化

数据库安装完成之后,我们需要完成一个数据库初始化工作。指定-D数据目录,-E字符编码, --locale本及语言环境,-U初始化用户信息。

$PGHOME/bin/initdb -D $PGDATA  -E UTF8 --locale=en_US.utf8 -U postgres

完成这个操作之后,数据库存在了postgres用户,数据目录PGDATA目录下面初始化了一些配置文件,比如:/home/postgres/pgdata/postgresql.conf参数文件,/home/postgres/pgdata/pg_hba.conf 用户访问权限文件。

我们来修改一下参数文件,以期望它能够适配我们的操作系统和我们的运行需求。下文中命令的含义是将EOF包含的文件内容写入/home/postgres/pgdata/postgresql.conf配置文件。

cat >> /home/postgres/pgdata/postgresql.conf <<"EOF"
listen_addresses = '*'
port=5432
logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%a.log'
EOF
  • listen_addresses 表示postgre进程监听的网卡地址,配置*表示监听所有。
  • port服务监听端口配置
  • logging_collector=on,启动日志收集器
  • log_directory 表示日志文件在PGDATA目录下的文件夹位置。
  • log_filename表示日志文件的名称

这里只列出一些通常情况下需要修改的参数,性能调优参数就不一一列举了,我后续可能会专门写一篇PostgreSQL性能调优的文章,欢迎大家关注我!

# 数据库能够接受的最大请求连接并发数
max_connections = 100
# 数据库服务器将使用的共享内存缓冲区量。建议值:数据库独立服务器的1/4内存。
shared_buffers =1GB

基础运行参数配置完成之后,还需要配置一些访问权限。如下所示使用cat命令将EOF包含的文件内容,写入/home/postgres/pgdata/pg_hba.conf 配置文件:

cat   > /home/postgres/pgdata/pg_hba.conf << EOF
# TYPE  DATABASE    USER    ADDRESS       METHOD
local      all       all                    trust
host      all       all    0.0.0.0/0        md5
EOF
  • 第一行的内容表示local本机,all所有用户可以访问postgre的所有数据库,并且密码发送方式不需要加密(trust)。
  • 第二行的内容用于远程访问,指定了可以访问postgreSql数据库的远程用户的ip范围, 0.0.0.0/0 表示所有ip都可以。如果你希望指定ip段,可以像这样去配置192.168.3.1/24(表示的ip范围是:192.168.3.1到192.168.3.255)。md5表示数据库访问密码使用md5的加密方式发送。

六、启动数据库新建用户

完成以上的所有的操作之后,我们就可以启动数据库了,使用如下的这些命令启停数据库。

#启动命令
pg_ctl start
#重启命令
pg_ctl restart
#查看数据库运行状态
pg_ctl status
#停止数据库
pg_ctl stop

数据库启动之后,我们查看一些数据库运行的进程如下所示:

数据库启动成功,我们输入psql命令,进入数据库管理命令行

$ psql

数据库初始化的过程,新建了一个用户postgres,我们给它修改一下密码。

alter user postgres with password '你设置的密码';

一般来说,我们的程序在运行过程中,不会直接使用postgres用户,而是新建一个用户。

#新建一个用户 acai
CREATE USER acai WITH password '密码';
#新建一个数据库acaidb,属主是acai
CREATE DATABASE acaidb OWNER acai;
# 为用户acai赋权,all表示所有权限,acaidb的管理用户
GRANT all ON  DATABASE acaidb TO acai; 

实际上在生产环境中,我们需要创建两个用户,一个数据库管理用户用于管理表、视图等操作;另一个是程序用户,用于操作数据库表里面的数据,完成增删改查。

CREATE USER acaiuser WITH password '*******';
GRANT  update,delete,insert,select  ON  ALL TABLES IN SCHEMA public TO acaiuser;

七、开机自启动

为了让PostgreSQL在以后每次服务器重启之后,都能够自动启动,我们写一个自启动配置文件。下面的命令需要使用root用户执行

cat > /etc/systemd/system/postgre14.service <<"EOF"
[Unit]
Description=PostgreSQL database server 14.4
Documentation=man:postgres(1)
After=network.target

[Service]
Type=forking
User=postgres
Group=postgres

Environment=PGPORT=5432
Environment=PGDATA=/home/postgres/pgdata

ExecStart=/home/postgres/postgre14/bin/pg_ctl start -D ${PGDATA} -s -o "-p ${PGPORT}" -w -t 300
ExecStop=/home/postgres/postgre14/bin/pg_ctl stop -D ${PGDATA} -s -m fast
ExecReload=/home/postgres/postgre14/bin/pg_ctl reload -D ${PGDATA} -s

KillMode=mixed
KillSignal=SIGINT
TimeoutSec=120

[Install]
WantedBy=multi-user.target
EOF

执行下列命令,使得PostgreSQL数据库开机自启动脚本生效。

systemctl daemon-reload
systemctl enable postgre14

后续再启停数据库,查看数据库状态,就可以使用下面的这些命令了

systemctl start postgre14
systemctl stop postgre14
systemctl status postgre14

到此这篇关于PostgreSql生产级别数据库安装要注意事项的文章就介绍到这了,更多相关PostgreSql数据库安装内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • postgresql数据库安装部署搭建主从节点的详细过程(业务库)

    操作系统 64位CentOS 7 数据库搭建 一 业务数据库搭建 1. 安装 yum源(服务器可访问互联网时用) yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm 2. 安装客户端 yum install postgresql11 –y 3. 安装服务端 yum install postgresql11-serve

  • docker安装postgresql的图文教程

    目录 1.查询postgresql镜像 docker search postgres 2.拉去镜像文件 docker pull postgres:14.2 3.镜像文件是否成功拉取 docker images 4.创建挂载文件夹 6.启动docker 镜像 7.查看启动日志 docker logs postgres 8.查看运行的容器,看看镜像是否启动成功 docker ps 9.本地连接测试数据库是否连接成功 10.数据库连接失败可能的原因: 总结 1.查询postgresql镜像 docke

  • 详解PostgreSQL 14.4安装使用及一些安装的异常问题

    PostgreSQL 14的安装以及使用 因为公司的一些要求,可能要换数据库,虽然之前装过,但是版本感觉还是新一点比较好,所以重新装一下 首先下载文件,直接去官网下载就行 https://www.enterprisedb.com/downloads/postgres-postgresql-downloads 下载以后双击打开安装包 大部分的内容都是一路next下去 安装路径设置 额外的功能软件设置 安装路径设置 设置密码 端口号 语言 然后一路点下去就能完成安装了 要使用cmd进行操作,对数据库

  • PostgreSQL安装、配置及简单使用方法

    一.PostgreSQL简介 1.什么是PostgreSQL PostgreSQL数据库是目前功能最强大的开源数据库,支持丰富的数据类型(如JSON何JSONB类型,数组类型)和自定义类型.而且它提供了丰富的接口,可以很容易地扩展它的功能,如可以在GiST框架下实现自己的索引类型等,它还支持使用C语言写自定义函数.触发器,也支持使用流行的语言写自定义函数,比如其中的PL/Perl提供了使用Perl语言写自定义函数的功能,当然还有PL/Python.PL/Tcl,等等. 2.PostgreSQL数

  • postgresql安装及配置超详细教程

    1. 安装 根据业务需求选择版本,官网下载 yum install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm yum install postgresql96 postgresql96-server rpm -qa|grep postgre 初始化数据库 执行完初始化任务之后,postgresql 会自动创建和生成两个用户和一个数据库:

  • 在Linux系统上安装PostgreSQL数据库

    目录 一.准备工作 二.安装PostgreSQL 2.1.选择版本 2.2.安装yum源 2.3.安装PostgreSQL 三.设置PostgreSQL 3.1.初始化数据库 3.2.设置数据库自启动 3.3.修改密码 3.4.设置允许远程连接 3.5.重启服务 3.6.修改数据库密码 3.7.使用客户端测试登录 一.准备工作 这里使用的Linux操作系统是Centos7,选择在虚拟机上面装Centos7系统,然后在虚拟机上面安装PostgreSQL. 二.安装PostgreSQL 2.1.选择

  • PostgreSql生产级别数据库安装要注意事项

    目录 一.安装包下载 二.必要的准备工作 1.安装必要的编译环境 2.创建postgre用户 3.开放防火墙端口 4.修改操作系统打开最大文件句柄数 5.创建必要的目录 三.编译并安装 四.配置环境变量 五.数据库及参数初始化 六.启动数据库新建用户 七.开机自启动 我让公司的小伙伴写一个生产级别的PostgreSQL的安装文档,结果他和我说:“不是用一个命令就能安装好么?还用写文档么?”.我知道他想说的是这个命令:yum install postgresql-server,我也是挺无语的.「要

  • Debian中PostgreSQL数据库安装配置实例

    用惯了MySQL后,想尝试使用下PostgreSQL,据说这玩意儿也很强大,我在网上搜索了下相关中文书籍,可惜相关书籍远远没有MySQL那么多,不过我在官方找到了由志愿者翻译的文档(参考9.1文档翻译项目),说实话我英文文档阅读能力还是比较纠结的,所以有中文文档当然优先中文了. 在Debian下可以通过apt-get命令直接安装: 复制代码 代码如下: sudo apt-get install postgresql postgresql-client postgresql-server-dev-

  • 部署Oracle 12c企业版数据库( 安装及使用)

    在计算机信息安全领域中,数据库系统无疑有着举足轻重的地位.比如:SQL Server.MySQL.DB2.Oracle等,都是比较知名的数据库管理软件,由于Oracle数据库的安全性,所以在一些比较重要的场合被普遍使用,比如:电信.银行.政府部门等. 本次博文以Oracle 12c数据库的64位企业版为例,学习如何在Centos 操作系统中的安装和基本配置,包括安装的准备等. 博文大纲: 一.安装Oracle 12c 二.创建Oracle 12c数据库 三.Oracle 12c数据库的启动与关闭

  • MySQL数据库表分区注意事项大全【推荐】

    表分区与数据库分区是不一样的那么碰到表分区使用时我们要注意一些什么事情呢,今天我们来看一篇关于MySQL数据库表分区注意事项的细节. 1.分区列索引约束 若表有primary key或unique key,则分区表的分区列必须包含在primary key或unique key列表里,这是为了确保主键的效率,否则同一主键区的东西一个在A分区,一个在B分区,显然会比较麻烦. 2.各分区类型条件 range 每个分区包含那些分区表达式的值位于一个给定的连续区间内的行.这些区间要连续且不能相互重叠 li

  • mysql 5.7.14 免安装版注意事项(精)

    相关阅读: MySql 5.7.14 安装教程详解(解压版) Mysql 5.7.14 使用常见问题汇总(推荐) 1.解压 2.在目录D:\Program Files\mysql-5.7.14-winx64下复制my-default.ini,放在与其相同目录下,名称显示为my.ini: 3.编辑my.ini # For advice on how to change settings please see # http://dev.mysql.com/doc/refman/5.7/en/serv

  • ubuntu 14.04 oracle 11g 64位数据库安装图文教程

    一.环境 系统:Ubuntu 14.04.5 LTS(为了贴近生产我装了个Ubuntu14的服务器版本) JDK:jdk-8u121-linux-x64.tar.gz Oracle:linux.x64_11gR2_database_1of2.ziplinux.x64_11gR2_database_2of2.zip 工具:Xshell5. 注:以上软件或者工具自行去相关官网下载 二.安装JDK 解压JDK tar -zxvf jdk-8u121-linux-x64.tar.gz 注:tools这个

  • 详解Linux中PostgreSQL和PostGIS的安装和使用

    安装 PostgreSQL 和 PostGIS PostgreSQL 和 PostGIS 已经是热门的开源工程,已经收录在各大 Linux 发行版的 yum 或 apt 包中.Ubuntu 为例,安装以下包即可: $ sudo apt-get install postgresql-client postgresql postgis -y RedHat 系列则请安装: $ sudo yum install postgresql-server postgresql postgis 初次安装后,默认生

  • Oracle 11g数据库安装与卸载的方法图解

    一.Oracle 11g安装 安装之前要先确定自己的电脑配置,以windows为例,如果是win7以下系统如xp等,可以选择Oracle 10g.因为10g的程序文件只有200多兆,而11g及达到了2G,具体文件官方下载路径已经找不到了,只能去一些软件下载平台下载.如果是win7最好采用11g,否则很可能10g出现不兼容安装不成功的情况,本文以win7为例. Oracle 11g官方下载地址如下: http://www.oracle.com/technetwork/database/enterp

  • SQL Server数据库安装时常见问题解决方案集锦

    本文我们总结了几个在安装SQL Server数据库时常见问题的解决方案,供初学者学习参考,接下来让我们来一起看一下吧. 常见问题一: 安装Sql Server 2000时出现"以前进行的程序创建了挂起的文件操作,运行安装程序之前,必须重新启动计算机" ,重启后仍然无效. 解决方案: 1.不用退出Sql Server 2000安装程序,直接切换到桌面. 2.打开注册表编辑器(在"运行"中敲入"regedit"之后回车即可),定位到注册表的HKEY_

随机推荐