一、yum安装&配置PostgreSQL 12

目录

一、前言

1、本文主要内容

  • PostgreSQL 12 安装(yum)
  • PostgreSQL 12 基础配置
  • PostgreSQL 12 远程访问配置
  • PostgreSQL 基础管理

2、本文环境信息与适用范围

  • 环境信息
软件 版本
CentOS 7.6 Release
PostgreSQL 12.x
  • 适用范围
软件 版本
CentOS CentOS 7.x
PostgreSQL 9.x-12.x

二、PostgreSQL安装

1、导入yum源

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

1、安装PostgreSQL服务

sudo yum install -y postgresql12 postgresql12-server

安装PostgreSQL 11就是 yum install postgresql12 postgresql12-server

安装PostgreSQL 9.5就是 yum install postgresql95 postgresql95-server

依此类推

2、初始化数据库

sudo /usr/pgsql-12/bin/postgresql-12-setup initdb

#Initializing database ... OK

3、启动PostgreSQL服务

#启动PostgreSQL服务
sudo systemctl start postgresql-12 #设置PostgreSQL服务为开机启动
sudo systemctl enable postgresql-12

9.x版本的服务名是postgresql-9.x

二、修改postgres账号密码

PostgreSQL安装成功之后,会默认创建一个名为postgres的Linux用户,初始化数据库后,会有名为postgres的数据库,来存储数据库的基础信息,例如用户信息等等,相当于MySQL中默认的名为mysql数据库。

postgres数据库中会初始化一名超级用户postgres

为了方便我们使用postgres账号进行管理,我们可以修改该账号的密码

1、进入PostgreSQL命令行

通过su命令切换linux用户为postgres会自动进入命令行

su postgres

2、启动SQL Shell

psql

3、修改密码

ALTER USER postgres WITH PASSWORD 'NewPassword';

三、配置远程访问

1、开放端口

sudo firewall-cmd --add-port=5432/tcp --permanent
sudo firewall-cmd --reload

2、修改IP绑定

#修改配置文件
vi /var/lib/pgsql/12/data/postgresql.conf #将监听地址修改为*
#默认listen_addresses配置是注释掉的,所以可以直接在配置文件开头加入该行
listen_addresses='*'

3、允许所有IP访问

#修改配置文件
vi /var/lib/pgsql/12/data/pg_hba.conf #在问价尾部加入
host all all 0.0.0.0/0 md5

4、重启PostgreSQL服务

#重启PostgreSQL服务
sudo systemctl restart postgresql-12

配置完成后即可使用客户端进行连接

四、PostgreSQL shell常用语法示例

启动SQL shell:

su postgres
psql

1、数据库相关语法示例

#创建数据库
CREATE DATABASE mydb; #查看所有数据库
\l #切换当前数据库
\c mydb #创建表
CREATE TABLE test(id int,body varchar(100)); #查看当前数据库下所有表
\d

2、用户与访问授权语法示例

postgres=# ALTER DATABASE model OWNER TO model ;
ALTER DATABASE
postgres=# \c model
You are now connected to database "model" as user "postgres". #新建用户
CREATE USER test WITH PASSWORD 'test'; #赋予指定账户指定数据库所有权限
GRANT ALL PRIVILEGES ON DATABASE mydb TO test; #移除指定账户指定数据库所有权限
REVOKE ALL PRIVILEGES ON DATABASE mydb TO test

权限代码:SELECT、INSERT、UPDATE、DELETE、TRUNCATE、REFERENCES、TRIGGER、CREATE、CONNECT、TEMPORARY、EXECUTE、USAGE

五、备注

1、相关阅读


六、数据的备份与还原

1.备份脚本

1.备份脚本
#!/bin/bash - HOST=172.30.3.11
PORT=5432
USER=esg
DATABASE=esg dir_name=$(dirname $0) #获取当前脚本的目录路径,并将其赋值给变量 dir_name。
pg_dump -d ${DATABASE} -h ${HOST} -p ${PORT} -U ${USER} --format=d --file=${dir_name}/database/esg-$(date +%Y%m%d%H%M%S)
#这行代码的含义是执行 pg_dump 命令来备份 PostgreSQL 数据库。其中 ${DATABASE}、${HOST}、${PORT}、${USER} 是变量,分别表示数据库名、主机名、端口号和用户名。${dir_name} 是保存备份文件的目录路径,由前面的命令获取得到。-d 表示需要备份的数据库名,-h 表示连接的主机名,-p 表示连接的端口号,-U 表示连接的用户名。--format=d 表示备份格式为 tar 归档文件,--file 参数指定备份文件名及路径,文件名为 esg-当前时间,其中当前时间通过 $(date +%Y%m%d%H%M%S) 来获取。最终,这行代码的作用是将指定的 PostgreSQL 数据库进行备份并保存到指定的目录中。

2.数据还原

2.数据还原
#创建一个新的数据库,可以使用以下命令创建:
createdb -h ${HOST} -p ${PORT} -U ${USER} ${NEW_DATABASE}
#其中 ${HOST}、${PORT}、${USER} 分别为连接数据库所需的主机名、端口号和用户名,${NEW_DATABASE} 为新建的数据库名称。
#使用以下命令将备份文件还原到新建的数据库
pg_restore -h ${HOST} -p ${PORT} -U ${USER} -d ${NEW_DATABASE} ${BACKUP_FILE} #其中 ${HOST}、${PORT}、${USER} 分别为连接数据库所需的主机名、端口号和用户名,${NEW_DATABASE} 为新建的数据库名称,${BACKUP_FILE} 为备份文件的路径及文件名。该命令会将备份文件中的数据还原到新建的数据库中。
#注意:还原数据时需要确保备份文件和新建的数据库版本是兼容的。如果备份文件和新建的数据库版本不兼容,还原数据可能会失败。

二、二进制安装psql

postgres安装部署

一、pg数据库安装包下载

下载地址:http://www.postgresql.org/ftp/source/

选择要安装的版本进行下载

二、安装依赖包

yum install -y perl-ExtUtils-Embed readline-devel zlib-devel pam-devel libxml2-devel libxslt-devel openldap-devel python-devel gcc-c++ openssl-devel cmake

三、安装postgres

1.在根目录下新建pgsql文件夹,并将pgsql的压缩包放入

2.解压压缩包

tar -xf postgresql-11.1.tar.gz

3.进入解压后的文件夹

cd postgresql-11.1

4.编译postgresql源码

./configure --prefix=/pgsql/postgresql

make
make install
至此,已完成postgresql的安装。进入/pgsql/postgresql/目录可以看到安装后的postgresql的文件。

四、创建用户组postgres并创建用户postgres

groupadd postgres
useradd -g postgres postgres
id postgres

五、创建postgresql数据库的数据主目录并修改文件所有者

数据库主目录是随着实际情况而不同,这里我们的主要目录是在/pgsql/postgresql/data目录下;
cd /pgsql/postgresql
mkdir data
chown postgres:postgres data
ls -la

六、配置环境变量

进入/home/postgres可以看到.bash_profile文件。
cd /home/postgres
ls -la

vim .bash_profile

添加以下内容
export PGHOME=/pgsql/postgresql
export PGDATA=/pgsql/postgresql/data
PATH=$PATH:$HOME/bin:$PGHOME/bin

保存,生效。
source .bash_profile

七、切换用户到postgres并使用initdb初始化数据库

su - postgres
初始化数据库:
initdb

可以看到/pgsql/postgresql/data/已经有文件了

cd /pgsql/postgresql/data

ls

八、配置服务

修改/pgsql/postgresql/data目录下的两个文件。
postgresql.conf 配置PostgreSQL数据库服务器的相应的参数。
pg_hba.conf 配置对数据库的访问权限。

其中,参数"listen-addresses"表示监听的IP地址,默认是在localhost处监听,也就是127.0.0.1的ip地址上监听,只接受来自本机localhost的连接请求,这会让远程的主机无法登陆这台数据库,如果想从其他的机器上登陆这台数据库,需要把监听地址改为实际网络的地址,一种简单的方法是,将行开头的#去掉,把这个地址改为*,表示在本地的所有地址上监听。

vi pg_hba.conf
找到最下面这一行,这样局域网的人才能访问,红色为新添加内容。

九、设置PostgreSQL开机自启动

PostgreSQL的开机自启动脚本位于PostgreSQL源码目录的contrib/start-scripts路径下。

linux文件即为linux系统上的启动脚本

cd /pgsql/postgresql-11.1/contrib/start-scripts

1.切换到root用户,修改linux文件属性,添加X属性

chmod a+x linux

2.复制linux文件到/etc/init.d目录下,更名为postgresqls

cp linux /etc/init.d/postgresql

3.修改/etc/init.d/postgresql文件的两个变量

prefix设置为postgresql的安装路径:/pgsql/postgresql

PGDATA设置为postgresql的数据目录路径:/pgsql/postgresql/data

vim /etc/init.d/postgresql

4.设置postgresql服务开机自启动

chkconfig --add postgresql

查看开机自启动服务设置成功。

chkconfig

5.开放5432端口。

firewall-cmd --zone=public --list-ports centos8查看防火墙开放的端口

firewall-cmd --zone=public --add-port=5432/tcp --permanent 开通5432端口

firewall-cmd --reload 重启生效

6.执行service postgresql start,启动Postgresql服务

service postgresql start

查看postgresql服务

十一、开始测试

切换为postgres用户,进入客户端:

su - postgres

psql

postgres流复制部署

一、简介

PostgreSql在9.0之后引入了主从的流复制机制,所谓流复制,就是从服务器通过tcp流从主服务器中同步相应的数据。这样当主服务器数据丢失时从服务器中仍有备份。

与基于文件日志传送相比,流复制允许保持从服务器更新。从服务器连接主服务器,其产生的流WAL记录到从服务器,而不需要等待主服务器写完WAL文件。

PostgreSQL流复制默认是异步的。在主服务器上提交事务和从服务器上变化可见之间有一个小的延迟,这个延迟远小于基于文件日志传送,通常1秒能完成。如果主服务器突然崩溃,可能会有少量数据丢失。

同步复制必须等主服务器和从服务器都写完WAL后才能提交事务。这样在一定成都上会增加事务的相应时间。

配置同步复制仅需要一个额外的配置步骤; synchronous_standby_names必须设置为一个非空值。synchronous_commit也必须设置为on。

注:主从服务器所在节点的系统、环境等最好一致。PostgreSQL版本也最好一致,否则可能会有问题。

二、安装部署

角色 IP地址 系统版本 数据库版本

主服务器 172.30.3.38 centos8.2 PostgreSQL11.1

从服务器 172.30.3.36 centos7.8 PostgreSQL11.1

1.配置主服务器

切换成postgres用户

su - postgres

进入数据库,创建一个普通的数据库用户进行主从同步(只需赋予登录和复制的权限即可)

postgres=# create role wml login replication encrypted password 'wml';

然后退出
在exit退出到原用户 用root用户

然后,修改postgresql的pg_hba.conf,配置运行刚刚创建的wml用户可以进行连接

vim /pgsql/postgresql/data/pg_hba.conf

最后,再次配置postgresql.conf

vim /pgsql/postgresql/data/postgresql.conf

listen_addresses = ‘*’ #监听所有ip

archive_mode = on #开启归档模式

archive_command = 'cp %p /pgsql/postgresql/data/%f' #归档命令

wal_level = hot_standby #热备模式

max_wal_senders = 5 #最多有1个流复制连接

wal_sender_timeout = 60s #流复制超时时间

max_connections = 100 #最大连接时间,必须要小于从库的配置

保存退出后,重启数据库服务

service postgresql restart

2.配置从服务器

首先,先测试以下是否能连接主服务器

如果可以,说明主机配置正常,否则检查一下主机的pg_hba.conf配置

进入到postgres用户

su - postgres

先清空data目录下的数据(data文件夹就是postgresql数据的存储文件夹)

rm -rf data/*

/pgsql/postgresql/data

然后,开始从主服务器上复制数据到从服务器上,这一步叫做“基础备份”

pg_basebackup -h 172.30.3.38 -U wml –D data -X stream –P

pg_basebackup是postgresql自带的基础备份工具

这样,基础备份就完成了

然后,创建recovery.conf用于从库恢复从主库获取的数据

vim recovery.conf

然后编辑如下配置

standby_mode = on #表示该节点是从库

primary_conninfo = 'host=172.30.3.36 post=5432 user=wml password=wml' #从机信息和连接用户

recovery_target_timeline = 'latest' #说明恢复到最新状态
保持并退出后,复制到data目录下

cp -rf recovery.conf data

然后,exit退出到root用户

最后,配置从机的postgresql.conf文件

vim /pgsql/postgresql/data/postgresql.conf

在文件末尾添加如下配置
wal_level = hot_standby #热备模式

max_connections = 300 #最大连接时间,必须要小于从库的配置

hot_standby = on #说明这台机器不仅用于数据归档,还可以用于数据查询

max_standby_streaming_delay = 30s #流备份的最大延迟时间

wal_receiver_status_interval = 10s #向主机汇报本机状态的间隔时间

hot_standby_feedback = on #r出现错误复制,向主机反馈

保存并退出

从机配置完成
重启数据库服务
service postgresql restart 4.验证主从配置是否成功
在主机上,切换到postgres用户
su - postgres
进入数据库
执行如下查询
select client_addr,sync_state from pg_stat_replication;

说明172.30.3.36是从服务器,在接收流,而且是异步流复制。说明主从配置成功

注:必须切换到postgres用户下进行查询

yum&二进制安装PostgreSQL 12的更多相关文章

  1. CentOS7 源码安装 PostgreSQL 12

    PostgreSQL 12 源码安装 Table of Contents 1. 下载 2. 准备环境 3. 编译安装 4. 设置环境变量 5. 初始化数据库 6. 配置参数文件 6.1. postgr ...

  2. PostgreSQL 12 YUM安装

    目录 1.创建postgres用户 2.查看操作系统版本 3.配置yum源(对应CentOS 6) 4.安装客户端包 5.安装服务器端包 6.初始化数据库和设置自启动服务 7.postgres用户的b ...

  3. 安装PostgreSQL到CentOS(YUM)

    运行环境 系统版本:CentOS Linux release 7.6.1810 (Core) 软件版本:postgresql-12 硬件要求:无 安装过程 1.安装YUM-PostgreSQL存储库 ...

  4. mongodb二进制安装与yum安装

    一.什么是mongodb MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种.MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当 ...

  5. Centos7 yum安装postgresql 9.5

    添加RPM yum install https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-7-x86_64/pgdg-centos ...

  6. yum安装PostgreSQL 在6和7

    一.安装PostgreSQL 复制代码// 安装EPEL源# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.n ...

  7. CentOS7使用yum安装PostgreSQL和PostGIS

    更新yum源 CentOS7默认yum源的PostgreSQL版本过低,不适合在本版本上使用.在https://yum.postgresql.org/repopackages.php上找到适合Cent ...

  8. 1.安装CDH5.12.x

    安装方式安装前准备安装步骤安装过程修改/etc/hosts设置ssh 互信修改linux 系统设置安装JDK1.8安装python2.7安装mysql/postgreysql数据库安装ntp设置本地y ...

  9. 安装postgreSQL出现configure:error:readline library not found解决方法

    要安装 readline , readline-dev 开发包,要么使用 --without-readline 选项关闭 readline 功能. #yum install readline; #yu ...

  10. 在CentOS上编译安装PostgreSQL

    http://my.oschina.net/tashi/blog 第一步:准备阶段 获取必需软件包: CentOS中查看是否安装了某个软件的命令:rpm -qa | grep 软件名.which命令可 ...

随机推荐

  1. git push origin master 提示输入用户名和密码

    今天更换了一台电脑,重新配置了SSH keys:但是在push得时候提示我输入用户名和密码 taodeMacBook-Pro:my_trip_proj tao$ git push origin mas ...

  2. Java二维数组以及多维数组的定义及应用

    一.二维数组以及多维数组 1.二维数组的定义: ​ 在一维数组中定义每一个元素也是一个数组元素,这样的数组称为"二维数组" ​ 多维数组就是在一维数组上再次定义二维数组或三位数组等 ...

  3. Galaxy Project 是一个由 NIH、NSF、Johns Hopkins University 等机构支持的开源生物医学开源项目。Galaxy 作为其中的一个子项目,提供了以英文为主,......

    本文分享自微信公众号 - 生信科技爱好者(bioitee).如有侵权,请联系 support@oschina.cn 删除.本文参与"OSC源创计划",欢迎正在阅读的你也加入,一起分 ...

  4. P3498 [POI2010]KOR-Beads 题解

    前言: 最近在做哈希的题,发现了这道好题,看题解里很多大佬的方法都很巧妙,自己就发一个较为朴素的方法吧. 题意: 题目传送门 给你一个序列,需要求出数 k,使划分的子串长度为 k 时,不同的子串数量最 ...

  5. 一分钟学一个 Linux 命令 - ps

    前言 大家好,我是 god23bin.欢迎来到<一分钟学一个 Linux 命令>系列,每天只需一分钟,记住一个 Linux 命令不成问题.今天要说的是 ps 命令. 什么是 ps 命令? ...

  6. 图书商城项目练习①管理后台Vue2/ElementUI

    本系列文章是为学习Vue的项目练习笔记,尽量详细记录一下一个完整项目的开发过程.面向初学者,本人也是初学者,搬砖技术还不成熟.项目在技术上前端为主,包含一些后端代码,从基础的数据库(Sqlite).到 ...

  7. 【序列化与反序列化】关于序列化与反序列化MessagePack的实践

    在进行序列化操作之前,我们还对系统进行压测,通过jvisualvm分析cpu,线程,垃圾回收情况等:运用火焰图async-profiler分析系统性能,找出程序中占用CPU资源时间最长的代码块. 代码 ...

  8. 从头学Java17-Stream API(二)结合Record、Optional

    Stream API Stream API 是按照map/filter/reduce方法处理内存中数据的最佳工具. 本系列教程由Record讲起,然后结合Optional,讨论collector的设计 ...

  9. java根据配置文件读取值

    <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 --> <dependency> ...

  10. CF1580C Train Maintenance题解

    我们以 \(\sqrt m\) 为分界点来进行平衡. 设当前在进行第 \(k\) 次操作,询问 \(i\). 对于 \(x_i + y_i \leq \sqrt m\),可以在 \(last_{x_i ...