《Postgresql实战》笔记(一)

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

Postgresql实战


一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第27天,点击查看活动详情


认识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数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
2月前
|
存储 关系型数据库 MySQL
MySQL触发器实战:自动执行的秘密
MySQL触发器实战:自动执行的秘密
55 3
|
1月前
|
JavaScript 关系型数据库 API
Nest.js 实战 (二):如何使用 Prisma 和连接 PostgreSQL 数据库
这篇文章介绍了什么是Prisma以及如何在Node.js和TypeScript后端应用中使用它。Prisma是一个开源的下一代ORM,包含PrismaClient、PrismaMigrate、PrismaStudio等部分。文章详细叙述了安装PrismaCLI和依赖包、初始化Prisma、连接数据库、定义Prisma模型、创建Prisma模块的过程,并对比了Prisma和Sequelize在Nest.js中的使用体验,认为Prisma更加便捷高效,没有繁琐的配置。
Nest.js 实战 (二):如何使用 Prisma 和连接 PostgreSQL 数据库
|
11天前
|
关系型数据库 MySQL Linux
【一键解锁神秘力量!】CentOS 7 通过编译源码方式安装 MySQL 数据库 —— 从零到英雄的数据库安装实战秘籍!
【8月更文挑战第9天】随着业务增长,对数据库的需求日益提高。在 CentOS 7 中,通过编译源码安装 MySQL 可提供更高定制性和灵活性。本文详细介绍从准备环境、下载源码、配置编译参数到安装 MySQL 的全过程,并对比 RPM 包安装方法,帮助读者根据需求选择合适方案。实践时需注意备份数据、选择合适版本、确保安全性和调优性能等要点。
54 1
|
15天前
|
存储 关系型数据库 MySQL
MySQL数据库进阶实战:解锁性能飙升秘籍,从菜鸟到高手的华丽蜕变,让数据操作如行云流水!
【8月更文挑战第5天】MySQL是最流行的开源关系型数据库之一,在Web开发与数据分析等领域广泛应用。本文通过实战代码示例,深入探讨MySQL进阶技能:包括索引优化以提升查询性能;利用JOIN与子查询处理多表关联数据;通过事务处理确保数据一致性;使用存储过程与函数封装复杂逻辑以便重用;设置触发器自动执行特定任务以维护数据完整性。掌握这些技能能显著提高数据处理效率与系统性能。
21 5
|
2天前
|
canal 关系型数据库 MySQL
"揭秘阿里数据同步黑科技Canal:从原理到实战,手把手教你玩转MySQL数据秒级同步,让你的数据处理能力瞬间飙升,成为技术界的新晋网红!"
【8月更文挑战第18天】Canal是一款由阿里巴巴开源的高性能数据同步系统,它通过解析MySQL的增量日志(Binlog),提供低延迟、可靠的数据订阅和消费功能。Canal模拟MySQL Slave与Master间的交互协议来接收并解析Binary Log,支持数据的增量同步。配置简单直观,包括Server和Instance两层配置。在实战中,Canal可用于数据库镜像、实时备份等多种场景,通过集成Canal Client可实现数据的消费和处理,如更新缓存或写入消息队列。
30 0
|
8天前
|
存储 关系型数据库 MySQL
MySQL中的DISTINCT与GROUP BY:效率之争与实战应用
【8月更文挑战第12天】在数据库查询优化中,DISTINCT和GROUP BY常常被用来去重或聚合数据,但它们在实现方式和性能表现上却各有千秋。本文将深入探讨两者在MySQL中的效率差异,结合工作学习中的实际案例,为您呈现一场技术干货分享。
47 0
|
2月前
|
SQL 关系型数据库 MySQL
MySQL性能优化实战:从索引策略到查询优化
MySQL性能优化聚焦索引策略和查询优化。创建索引如`CREATE INDEX idx_user_id ON users(user_id)`可加速检索;复合索引考虑字段顺序,如`idx_name ON users(last_name, first_name)`。使用`EXPLAIN`分析查询效率,避免全表扫描和大量`OFFSET`。通过子查询优化分页,如LIMIT配合内部排序。定期审查和调整策略以提升响应速度和降低资源消耗。【6月更文挑战第22天】
253 2
|
1月前
|
SQL 关系型数据库 MySQL
MySQL 聚合函数深入讲解与实战演练
MySQL 聚合函数深入讲解与实战演练
|
2月前
|
关系型数据库 MySQL 数据挖掘
MySQL窗口函数详解(概念+练习+实战)
MySQL窗口函数详解(概念+练习+实战)
482 1
|
1月前
|
关系型数据库 MySQL Linux
Linux部署实战前言,MySQL在CentOS安装【单机软件】,MySQL的安装需要root权限,yum install mysql,systemctl enable mysqld开机自启的意思
Linux部署实战前言,MySQL在CentOS安装【单机软件】,MySQL的安装需要root权限,yum install mysql,systemctl enable mysqld开机自启的意思