《Postgresql实战》笔记(一)

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 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数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
1月前
|
缓存 关系型数据库 MySQL
MySQL索引策略与查询性能调优实战
在实际应用中,需要根据具体的业务需求和查询模式,综合运用索引策略和查询性能调优方法,不断地测试和优化,以提高MySQL数据库的查询性能。
183 66
|
1月前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
294 1
|
2月前
|
NoSQL 关系型数据库 MySQL
MySQL与Redis协同作战:优化百万数据查询的实战经验
【10月更文挑战第13天】 在处理大规模数据集时,传统的关系型数据库如MySQL可能会遇到性能瓶颈。为了提升数据处理的效率,我们可以结合使用MySQL和Redis,利用两者的优势来优化数据查询。本文将分享一次实战经验,探讨如何通过MySQL与Redis的协同工作来优化百万级数据统计。
97 5
|
2月前
|
架构师 关系型数据库 MySQL
MySQL最左前缀优化原则:深入解析与实战应用
【10月更文挑战第12天】在数据库架构设计与优化中,索引的使用是提升查询性能的关键手段之一。其中,MySQL的最左前缀优化原则(Leftmost Prefix Principle)是复合索引(Composite Index)应用中的核心策略。作为资深架构师,深入理解并掌握这一原则,对于平衡数据库性能与维护成本至关重要。本文将详细解读最左前缀优化原则的功能特点、业务场景、优缺点、底层原理,并通过Java示例展示其实现方式。
126 1
|
1月前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第26天】数据库作为现代应用系统的核心组件,其性能优化至关重要。本文主要探讨MySQL的索引策略与查询性能调优。通过合理创建索引(如B-Tree、复合索引)和优化查询语句(如使用EXPLAIN、优化分页查询),可以显著提升数据库的响应速度和稳定性。实践中还需定期审查慢查询日志,持续优化性能。
125 0
|
3月前
|
监控 关系型数据库 MySQL
zabbix agent集成percona监控MySQL的插件实战案例
这篇文章是关于如何使用Percona监控插件集成Zabbix agent来监控MySQL的实战案例。
86 2
zabbix agent集成percona监控MySQL的插件实战案例
|
4月前
|
SQL 关系型数据库 MySQL
干货!python与MySQL数据库的交互实战
干货!python与MySQL数据库的交互实战
|
4月前
|
存储 关系型数据库 MySQL
实战!MySQL主从复制一键搭建脚本分享
实战!MySQL主从复制一键搭建脚本分享
98 2
|
4月前
|
SQL 存储 关系型数据库
MySQL备份:mydumper 备份恢复工具生产实战
MySQL备份:mydumper 备份恢复工具生产实战
|
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更加便捷高效,没有繁琐的配置。
218 7
Nest.js 实战 (二):如何使用 Prisma 和连接 PostgreSQL 数据库