《Postgresql实战》笔记(一)

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 《Postgresql实战》笔记(一)

Postgresql实战

认识pgsql

来源:起源于一个开源的社区,名字就叫做Postgre,最初由于15年图灵奖获得者michael stonebracker 。早期由两位UC大学生建立sql解释器 这时候叫做Postgre95,后面经过改名叫做现在名字。

截止写文日期的最新版本为14,Postgre是十分值得进行数据库底层编写的技术人员参考和学习的,对于提升自我的业务或者技术开发人员也有不少的提升。

特点

  • 完全开源和免费,只要声明版权就可以对外商用。也支持公开版权并行不需要担心版权费用问题
  • 跨平台运行,当然基本操作
  • 支持丰富数据类型,包含原生json数据格式存储
  • 支持多种编程语言,同时支持大部分都sql规范和标准,也包含窗口函数,物化视图等等比较有用的高级特性
  • 支持并行查询和mvcc多版本并发控制,同样支持同步半同步异步复制
  • 支出跨数据库多数据源兼容,比如其他rmdbs的数据源MySQL,oracle等,
  • 天生支持集群,即使是单节点也能自己组一个集群

postgresql安装

本数据库的一大特点是支持window原生兼容,当然更多情况是使用Linux版本,可以通过yum或者rpm进行安装。

安装支持指定下面的相关参数

  • 安装目录
  • 端口号
  • 数据页大小,在也叫做数据文件大小,默认8KB,如果是OLAP可以调到32KB,但是最大只能32KB,oltp使用8KB够用,当然也是历史原因导致
  • 数据文件大小:1G
  • wal文件块大小,默认8KB,这个文件比较重要,这里先留个印象
  • wal单文件大小:默认为16M

如果使用源码编译安装,这里只要记住使用命令'gmake world'一劳永逸,此命令可以安装文档和数据库本身,算是最为完整的安装方式。

目录结构

Postgre的目录结构包含bin share ,分贝存储应用程序和头文件内容,注意因为这个数据库本身就是cs应用所以包含客户端和服务端两个部分

客户端程序和工具

pg_dump以及pg_dumpall:注意是物理备份工具 pg_restore:pg_dump的物理数据备份恢复工具。注意逻辑备份不能用此命令 pg_basebackup:热备份工具

实验??

其他工具: pg_bench:内置的基准测试工具,可以用于简单基准测试 pg_isready oid2name:解析数据目录oid以及文件节点,具体细节在后文讲述。

服务器程序,服务器程序通常指的是bin目录下面的工具 包含一些启动和初始化程序命令,或者包含一些升级程序个一些帮助开发者观察日志的日志转化工具

部署步骤

创建实例: postgre支持天然集群,所以整个实例组成由数据库实例配置文件,监听端口的数据集合组成,意味着一个实例可以启很多个端口组成集群

创建超级用户: 和大多数数据库一样,Postgre也包含超管用户,超管用户比较建议在安装的时候创建,因为如果初次使用数据库如果发现没有创建超管用户,系统会自动为用户创建名为Postgre的用户,密码也是类似。

另外对于启动Postgre的用户建议不要使用超管root的角色,因为一旦存在bug或者黑客攻击,可能直接导致运行操作系统污染。

创建数据目录: 顾名思义就是来放数据的地方,通常会放到安装目录的/data下面。

但是之前说过我们的实例并不是单节点而是可以天然多节点组成集群的,所以在数据目录组织上建议按照特定规则划分。

比如出现版本号的划分10.x,或者实例放在一个版本/data/10等这样的写法。

特别注意Postgre的数据目录访问权限,虽然可以使用initdb的服务端命令初始化数据库的时候默认是700的权限,但是还是建议分配数据目录的时候手动设置权限。

初始化数据目录命令如下: --auth-local=method,通过Unix套接字连接本地用户在pghba.conf配置文件指定 -D 指定目录位置 -E 指定数据库编码,默认utf8 --local 设置区域 -T 本文搜索配置 -U 超管用户用户名 -W 配置过程为超级用户设置密码 -X wal预写日志的存储目录

安装过程中指定相关选项的情况会出现相关的文本提示。 另外如果被安装的数据目录不是空系统也会有相关提示,防止安装数据库把旧数据覆盖的二次确认操作

启动和停止数据库

service postgre-10 start service postgre-10 stiop Postgre提供了pg_ctl来提供更好的数据库支持,针对启动和关闭数据库做了更多丰富的,选项。 以关闭威力,数据库支持三种关闭模式

  • smart模式:等待用户断开连接并且事务完全提交之后关闭
  • fast:立刻回滚事务 并且强制点开客户端连接,主要用于非常紧急的情况会考虑
  • immdiate:立刻停止所有服务端进程,不推荐使用

配置开机启动

如果是yum方式,官方会自动安装开机启动的脚本,但是如果是源码方式需要自己配置。

  1. 把名称linux脚本拷贝到/etc/init.d 中,并且重命名为postgre-10
  2. 设置开机启动,chkconfig -list查看当前服务是否开机启动,同时此命令可以配置启动或者关闭。

数据库基础配置

Postgre有两个重要配置:postgre.conf以及pg_hba.conf,以及postgre.auto.conf,以及pg_ident.conf,其中第一个配置是主要配置。

hba是防火墙的配置文件。 连接配置有下面几种: type表示连接方式,有四种连接方式可以选择,比如local,host,hostssl。 其中hostssl的区别是只支持ssl连接方式,但是配置需要在安装时候进行如下处理:

  • 客户端服务端都有ssl
  • 编译时候必须指定参数--with-openssl,
  • 主配置文件ssl设置为on

认证方法配置: trust,reject,md5,password方式处理等, md5加password为双重加密方式,但是不能暴露密码原文,否则很容易破解 另外在pg-sql10中新增了sha256加密方式。

配置修改方式: Postgre支持命令修改的方式修改全局参数配置,比如下面的内容 mydb=# alter system set 参数 = 覆盖参数

非全局参数配置如下:

  • alter databsase name set configparamter to = value alter database name reset configuration

修改器全局参数的案例如下

  • 设置和重置session级别配置
  • 通过set命令设置当前session的配置
  • 更新pg_setting视图
  • set_config函数更新视图
  • 设置和重置role级别配置
  • 如何查看配置 查询pg_setting系统表

通过show all命令进行查看。

  1. 配置生效办法 如果是不需要重启的参数,reload一次可以生效。

允许远程访问: 通常情况下默认端口不允许远程连接,这和大多数的数据库设计一样。 主要的办法是修改监听地址,主要配置文件为postgresql.conf的监听地址配置,默认情况只会监听回环网卡也就是localhost请求。

在配置文件中预置了几个参数:

  • what ip address to listen on 允许ip地址
  • comma-separated list of address

最后只要把配置为星号,就可以开放所有端口访问。

最后通过pg ctl命令工具测试连接。

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
7月前
|
存储 JSON 关系型数据库
《Postgresql实战》笔记(二)
《Postgresql实战》笔记(二)
89 0
|
5月前
|
JavaScript 关系型数据库 API
Nest.js 实战 (二):如何使用 Prisma 和连接 PostgreSQL 数据库
这篇文章介绍了什么是Prisma以及如何在Node.js和TypeScript后端应用中使用它。Prisma是一个开源的下一代ORM,包含PrismaClient、PrismaMigrate、PrismaStudio等部分。文章详细叙述了安装PrismaCLI和依赖包、初始化Prisma、连接数据库、定义Prisma模型、创建Prisma模块的过程,并对比了Prisma和Sequelize在Nest.js中的使用体验,认为Prisma更加便捷高效,没有繁琐的配置。
205 7
Nest.js 实战 (二):如何使用 Prisma 和连接 PostgreSQL 数据库
|
6月前
|
SQL 关系型数据库 HIVE
sqoop笔记——一次从Hive到PostgreSql的数据迁移
sqoop笔记——一次从Hive到PostgreSql的数据迁移
291 0
|
关系型数据库 数据管理 Go
《PostgreSQL数据分区:原理与实战》
《PostgreSQL数据分区:原理与实战》
209 0
|
JSON Java 关系型数据库
Spring Boot 学习研究笔记(十三) Spring Data JPA与PostgreSQL的jsonb类型集成
Spring Boot 学习研究笔记(十三) Spring Data JPA与PostgreSQL的jsonb类型集成
344 0
|
Java 关系型数据库 数据库
Spring Boot 学习研究笔记(七) -使用SpringData JPA访问PostgreSql数据库
Spring Boot 学习研究笔记(七) -使用SpringData JPA访问PostgreSql数据库
411 0
|
关系型数据库 Linux 数据库
PostgreSQL学习研究笔记(二)- 安装
PostgreSQL学习研究笔记(二)- 安装
108 0
|
存储 SQL JSON
PostgreSQL学习研究笔记(一)
PostgreSQL学习研究笔记(一)
|
SQL 存储 DataWorks
《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB PostgreSQL版解析与实践(上)——一、产品概述
《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB PostgreSQL版解析与实践(上)——一、产品概述
|
SQL 存储 Cloud Native
《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB PostgreSQL版解析与实践(上)——二、产品架构及原理
《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB PostgreSQL版解析与实践(上)——二、产品架构及原理
下一篇
DataWorks