01 . PostgreSQL简介部署

摘要:
请参见#1。PostgreSQL数据库是目前最强大的开源数据库。它是体系结构上最接近Oracle的开源数据库。它基本上包含了您可以在所有其他商业或开源数据库中找到的功能。新函数与最新的SQL标准兼容:支持SQL标准所需的许多函数。然而,许多MySQL用户遇到了服务器级数据库丢失的情况——MySQL系统库是MyISAM,PG包含大量字典、数组、位图和其他数据类型。

PostgreSQL简介

简介

PostgreSQL在业内通常也简称PG,是一个关系型数据库管理系统,适用于各种Linux操作系统、Windows、Solaris、BSD和Mac OS X。PostgreSQL遵循BSD许可,是一个开源软件,PostgreSQL作为全球第四大关系型数据库服务,正在以飞快的速度发展,目前已经广泛用在各个行业,PostgreSQL本身具有哪些功能特点,请往下看

# 1. PostgreSQL数据库是目前功能最强大的开源数据库,是架构上和Oracle最接近的开源数据库.它基本上包含其他所有商业或开源数据库中你能找到的功能。
# 2. 最接近工业标准SQL92,新功能兼容最新的SQL标准:SQL2003,支持SQL2011的主要特性见:http://www.postgresql.org/docs/9.4/interactive/features.html
# 3. 支持复杂的多表JOIN查询SQL:JOIN算法支持 hash join、merge join。
# 4 .支持窗口函数 ,可以改成复杂分析函数,因为分析函数包括了窗口函数。
# 5. 多进程的架构,更加稳定,单机可以支持更高访问量的数据库。 
# 6. 有功能强大,性能优秀的GIS插件Postgis。 
为什么要使用PostgreSQL?

PostgreSql提供了许多功能,旨在帮助开发人员构建应用程序,管理员保护数据完整性并且构建容错环境,并帮助你管理数据,无论数据集的大小。除了免费和开源之外,Postgre SQL还具有高度的可扩展性。例如,你可以定义自己的数据类型,构建自定义SQL函数,甚至可以编写来自不同编程语言的代码,而不需要重新编译数据库。

PostgreSql试图符合SQL标准,在这种标准中,这种一致性不会与传统特性相矛盾,或者可能导致糟糕的架构决策。支持SQL标准所需的许多功能,但是有时候语法或者功能略有不同。随着时间的推移,可以预期进一步向一致性迈进。从2018年10月发布的11版本开始,PostgreSQL符合SQL:2011核心一致性的179个强制性功能中的至少160个,在此之前,没有任何关系型数据库符合此标准的完全符合。

对比Mysql
  1. PostgreSQL的稳定性极强,Innodb等引擎在崩溃、断电之类的灾难场景下抗打击能力有了长足的进步,然而很多Mysql用户都遇到过Server级的数据库丢失的场景---Mysql系统库是MyISAM的,相较而言,PG数据库在这方面要好一些。
  2. 任何系统都有他的性能极限,在高并发读写,负载逼近极限下,PG的性能指标仍然可以维持双曲线甚至对数曲线,到顶峰之后不再下降,而MySQL明细出现一个波峰后下滑。
  3. PG多年在GIS领域处于优势地位,因为它有丰富的几何类型,实际上不止几何类型,PG中有大量的字典、数组、bitmap等数据类型,相比之下MaySQL就差很多,insagram就是因为PG的空间数据库扩展POSTGIS远远强于MySQL的my spatial而采用PGSQL的。
  4. PG的“无锁定”特性非常突出,甚至包括vacuum这样的整理数据空间的操作,这个和PGSSQL的MVCC实现有关系。
  5. PG的可以使用函数和条件索引,这使得PG数据库的调优非常灵活,mysql就没有这个功能,条件索引在web应用中很重要。
  6. PG有极其强悍的SQL编程能力,有丰富的统计函数和统计语法支持,比如分析函数(Oracle的叫法,PG里面叫Window函数),还可以用多种语言来写存储过程,对于R的支持也很好。这一点上MySQL就差的很远,很多分析功能那个都没有,腾讯内部数据存储主要是Mysql,但是主要的数据分析就是Hadoop+PGsql。
  7. PG的有很多中集群架构可以选择,plproxy可以支持语句级的镜像或者分片,slony可以进行字段级的同步设置,standby可以构建WAL文件级或者流式的读写分离集群,同步频率和集群策略调整方便,操作非常简单。
  8. 一般关系型数据库的字符串有限定长度8k左右,无限长Text类型的功能受限,只能作为外部大数据访问。而PG的TEXT类型可以直接方法,SQL语法内置正则表达式,可以索引,还可以全文检索,或使用xml xpath。用PG的话,文档数据库就可以省略了
  9. 对于web应用来说,复制的特性很重要,Mysql到现在也是异步复制,pgsql可以做到同步,异步,半同步复制。还有mysql的同步是基于binlog复制,类似oracle golden gate, 是基于stream的复制,做到同步很困难,这种方式更加适合异地复制,pgsql的复制基于wal,可以做到同步复制。同时pgsql还提供stream复制。
  10. Pgsql对于numa架构的支持要比mysql强一些,比mysql对于读的性能要好些,pgsql提交可以完全异步,而mysql的内存表不够实用(表锁原因)

部署PostgreSQL

安装rpm源
yum -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
安装服务包
# 安装客户端
yum install postgresql10

# 安装服务端
yum install postgresql10-server
初始化
# 初始化
/usr/pgsql-10/bin/postgresql-10-setup initdb


# 设置自动启动并且启动postgresql服务
systemctl enable postgresql-10
systemctl start postgresql-10
准备用户和数据库
# 创建用户和数据库
# 使用postgres用户登录(PostgresSQL安装后会自动创建postgres用户,无密码)
su - postgres
Last failed login: Mon Jun 15 08:35:20 CST 2020 from 205.185.115.40 on ssh:notty
There were 2 failed login attempts since the last successful login.
-bash-4.2$ psql


# 登录postgresql数据库
psql (10.13)
Type "help" for help.



# 创建用户和数据库并授权
create user sonar with password '123456';            # 创建用户
create database sonar owner sonar;                 # 创建数据库
grant all privileges on database sonar to sonar;   # 授权

# q退出

在CentOS上,默认的PostgreSQL数据目录是/var/lib/pgsql/版本号/data

PostgreSQL的配置文件就在这个目录下/var/lib/pgsql/版本号/data/postgresql.conf,还有一个配置文件也需要稍加关注,那就是访问控制配置文件/var/lib/pgsql/版本号/data/pg_hba.conf

开启远程访问
# 开启远程访问
-bash-4.2$ vi /var/lib/pgsql/10/data/postgresql.conf 
listen_addresses = '*'
port = 5432 
password_encryption = on 前面的 # 号去掉


tail -1 /var/lib/pgsql/10/data/pg_hba.conf
host	all		all		0.0.0.0/0	md5


#  再对pg_hba.conf内容进行配置,将上面红框内的ident改为md5,然后再在最下面加入 host all all 0.0.0.0/0 md5
# 代表所有的用户通过任意ip都可以通过md5(密码)的方式登陆PostgreSQL
重启服务
# 重启服务
systemctl restart postgresql-10.service
ss -antlp |grep 5432
LISTEN     0      128          *:5432                     *:*                   users:(("postmaster",pid=10853,fd=3))
LISTEN     0      128         :::5432                    :::*                   users:(("postmaster",pid=10853,fd=4))
修改postgres用户密码(非必要)
# 修改默认生成的 postgres 用户密码(此postgres非上面的postgres用户,此为数据库的用户,上面的为操作系统的用户)(非必要)
su - postgres
psql -U postgres
alter user postgres with encrypted password '1';

登录PostgreSQL

SQL语句登录
psql -U sonar -d sonar -h 127.0.0.1 -p 5432

# -U username 用户名,默认值postgres
# -d dbname 要连接的数据库名,默认值postgres。如果单指定-U,没指定-d参数,则默认访问与用户名名称相同的数据库。
# -h hostname 主机名,默认值localhost
# -p port 端口号,默认值5432
本地登录
psql -U sonar -d sonar -p 5432

# PostgreSQL登陆默认是peer,不需要验证用户密码即可进入postgresql相关数据库,但前提是必须切换用户登陆。
# 类似于最开始执行的su postgres;psql一样。

免责声明:文章转载自《01 . PostgreSQL简介部署》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Spring 注解 @Scheduled(cron = "0 0/10 * * * ? ") 任务调度动态改变时间vuejs如何调试代码下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

django项目中.gitignore文件忽略上传的文件,以及数据库迁移文件到底是否需要上传吗?

Django项目上传。gitignore文件建议忽略文件清单以及是否转移数据库的迁移文件: Django项目开发或改动将本地代码提交到代码库时,我们需要忽略部分文件上传,占用内存; 1.创建.gitignore文件: 终端进入项目文件夹内,而不是app文件夹 touch .gitignore vim .gitignore 在.gitignore中写入你要忽...

oracle的热备份和冷备份

一、冷备份介绍:    冷备份数据库是将数据库关闭之后备份所有的关键性文件包括数据文件、控制文件、联机REDO LOG文件,将其拷贝到另外的位置。此外冷备份也可以包含对参数文件和口令文件的备份,但是这两种备份是可以根据需要进行选择的。,冷备份实际也是一种物理备份,是一个备份数据库物理文件的过程。因为冷备份要备份除了重做日志以外的所有数据库文件,因此也被成为...

MariaDB日志文件、备份与恢复

1. 数据库的6种日志        数据库有6种日志,分别是:查询日志、慢查询日志、错误日志、二进制日志、中继日志以及事务日志。 1> 查询日志   查询日志记录每一条sql语句,建议不开启,因为如果访问量较大,会占用相当大的资源,影响性能。 查询日志的开启:        编辑配置文件:/etc/my.cnf.d/server.cnf vim /...

初试Code First(附Demo)

初试Code First(附Demo) 写在前面 新建项目 安装EntityFramework程序包 创建模型 创建上下文DbContext 创建数据库、读/写数据 配置连接字符串 Code First 迁移 示例Demo下载 后记 以前逛园子的时候,很多大牛写的一些东西,什么AOP、DDD之类的,看过之后一头雾水,远望大牛,回过头看看自己,原来程序员...

自动生成代码工具

1.Code Smith 国外最著名的商业代码生成器官方网站:http://www.codesmithtools.com/CodeSmithProfessional-41.rar CodeSmith.Professional.v4.1.2.Keygen.rar 2.MyGeneratoe国外最著名的免费代码生成器官方网站:http://www.mygene...

toad 快捷键大全

现在在企业中,操作oracle数据库的客户端,除了PL/SQL外,使用的较多的就是TOAD了!toad记得F9执行全部sql和Ctrl + Enter执行选中sql就行了,有啥需要的再查吧。快捷设置在View -- Option -- Toolbars/Menus -- Shotcuts,toad管快捷键叫shotcut,一开始找key这样的字眼没找到。...