yum&二进制安装PostgreSQL 12
一、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的更多相关文章
- CentOS7 源码安装 PostgreSQL 12
PostgreSQL 12 源码安装 Table of Contents 1. 下载 2. 准备环境 3. 编译安装 4. 设置环境变量 5. 初始化数据库 6. 配置参数文件 6.1. postgr ...
- PostgreSQL 12 YUM安装
目录 1.创建postgres用户 2.查看操作系统版本 3.配置yum源(对应CentOS 6) 4.安装客户端包 5.安装服务器端包 6.初始化数据库和设置自启动服务 7.postgres用户的b ...
- 安装PostgreSQL到CentOS(YUM)
运行环境 系统版本:CentOS Linux release 7.6.1810 (Core) 软件版本:postgresql-12 硬件要求:无 安装过程 1.安装YUM-PostgreSQL存储库 ...
- mongodb二进制安装与yum安装
一.什么是mongodb MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种.MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当 ...
- Centos7 yum安装postgresql 9.5
添加RPM yum install https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-7-x86_64/pgdg-centos ...
- yum安装PostgreSQL 在6和7
一.安装PostgreSQL 复制代码// 安装EPEL源# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.n ...
- CentOS7使用yum安装PostgreSQL和PostGIS
更新yum源 CentOS7默认yum源的PostgreSQL版本过低,不适合在本版本上使用.在https://yum.postgresql.org/repopackages.php上找到适合Cent ...
- 1.安装CDH5.12.x
安装方式安装前准备安装步骤安装过程修改/etc/hosts设置ssh 互信修改linux 系统设置安装JDK1.8安装python2.7安装mysql/postgreysql数据库安装ntp设置本地y ...
- 安装postgreSQL出现configure:error:readline library not found解决方法
要安装 readline , readline-dev 开发包,要么使用 --without-readline 选项关闭 readline 功能. #yum install readline; #yu ...
- 在CentOS上编译安装PostgreSQL
http://my.oschina.net/tashi/blog 第一步:准备阶段 获取必需软件包: CentOS中查看是否安装了某个软件的命令:rpm -qa | grep 软件名.which命令可 ...
随机推荐
- git push origin master 提示输入用户名和密码
今天更换了一台电脑,重新配置了SSH keys:但是在push得时候提示我输入用户名和密码 taodeMacBook-Pro:my_trip_proj tao$ git push origin mas ...
- Java二维数组以及多维数组的定义及应用
一.二维数组以及多维数组 1.二维数组的定义: 在一维数组中定义每一个元素也是一个数组元素,这样的数组称为"二维数组" 多维数组就是在一维数组上再次定义二维数组或三位数组等 ...
- Galaxy Project 是一个由 NIH、NSF、Johns Hopkins University 等机构支持的开源生物医学开源项目。Galaxy 作为其中的一个子项目,提供了以英文为主,......
本文分享自微信公众号 - 生信科技爱好者(bioitee).如有侵权,请联系 support@oschina.cn 删除.本文参与"OSC源创计划",欢迎正在阅读的你也加入,一起分 ...
- P3498 [POI2010]KOR-Beads 题解
前言: 最近在做哈希的题,发现了这道好题,看题解里很多大佬的方法都很巧妙,自己就发一个较为朴素的方法吧. 题意: 题目传送门 给你一个序列,需要求出数 k,使划分的子串长度为 k 时,不同的子串数量最 ...
- 一分钟学一个 Linux 命令 - ps
前言 大家好,我是 god23bin.欢迎来到<一分钟学一个 Linux 命令>系列,每天只需一分钟,记住一个 Linux 命令不成问题.今天要说的是 ps 命令. 什么是 ps 命令? ...
- 图书商城项目练习①管理后台Vue2/ElementUI
本系列文章是为学习Vue的项目练习笔记,尽量详细记录一下一个完整项目的开发过程.面向初学者,本人也是初学者,搬砖技术还不成熟.项目在技术上前端为主,包含一些后端代码,从基础的数据库(Sqlite).到 ...
- 【序列化与反序列化】关于序列化与反序列化MessagePack的实践
在进行序列化操作之前,我们还对系统进行压测,通过jvisualvm分析cpu,线程,垃圾回收情况等:运用火焰图async-profiler分析系统性能,找出程序中占用CPU资源时间最长的代码块. 代码 ...
- 从头学Java17-Stream API(二)结合Record、Optional
Stream API Stream API 是按照map/filter/reduce方法处理内存中数据的最佳工具. 本系列教程由Record讲起,然后结合Optional,讨论collector的设计 ...
- java根据配置文件读取值
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 --> <dependency> ...
- CF1580C Train Maintenance题解
我们以 \(\sqrt m\) 为分界点来进行平衡. 设当前在进行第 \(k\) 次操作,询问 \(i\). 对于 \(x_i + y_i \leq \sqrt m\),可以在 \(last_{x_i ...