《Postgresql实战》笔记(一)

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 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数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
打赏
0
0
0
0
4
分享
相关文章
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
拯救海量数据:PostgreSQL分区表性能优化实战手册(附压测对比)
本文深入解析PostgreSQL分区表的核心原理与优化策略,涵盖性能痛点、实战案例及压测对比。首先阐述分区表作为继承表+路由规则的逻辑封装,分析分区裁剪失效、全局索引膨胀和VACUUM堆积三大性能杀手,并通过电商订单表崩溃事件说明旧分区维护的重要性。接着提出四维设计法优化分区策略,包括时间范围分区黄金法则与自动化维护体系。同时对比局部索引与全局索引性能,展示后者在特定场景下的优势。进一步探讨并行查询优化、冷热数据分层存储及故障复盘,解决分区锁竞争问题。
109 2
MySQL索引策略与查询性能调优实战
在实际应用中,需要根据具体的业务需求和查询模式,综合运用索引策略和查询性能调优方法,不断地测试和优化,以提高MySQL数据库的查询性能。
533 66
PHP与MySQL动态网站开发实战指南####
【10月更文挑战第21天】 本文将深入浅出地探讨如何使用PHP与MySQL构建一个动态网站,从环境搭建到项目部署,全程实战演示。无论你是编程新手还是希望巩固Web开发技能的老手,都能在这篇文章中找到实用的技巧和启发。我们将一起探索如何通过PHP处理用户请求,利用MySQL存储数据,并最终呈现动态内容给用户,打造属于自己的在线平台。 ####
319 0
MySQL秘籍之索引与查询优化实战指南
最左前缀原则。不冗余原则。最大选择性原则。所谓前缀索引,说白了就是对文本的前几个字符建立索引(具体是几个字符在建立索引时去指定),比如以产品名称的前 10 位来建索引,这样建立起来的索引更小,查询效率更快!
249 22
 MySQL秘籍之索引与查询优化实战指南
PHP与MySQL动态网站开发实战指南####
——深入探索LAMP栈下的高效数据交互与处理技巧 ####
PHP与MySQL动态网站开发实战指南####
深入探索PHP与MySQL的协同工作机制,本文旨在通过一系列实战案例,揭示构建高效、稳定且用户友好的动态网站的秘诀。从环境搭建到数据交互,再到最佳实践分享,本文为开发者提供了一条清晰的学习路径,助力其在LAMP(Linux, Apache, MySQL, PHP/Perl/Python)栈上实现技术飞跃。 ####
PHP与MySQL动态网站开发实战指南####
本文深入探讨了PHP与MySQL在动态网站开发中的应用实践,通过具体案例解析如何高效结合这两大技术构建数据驱动的Web应用。文章将涵盖环境搭建、基础语法回顾、数据库设计与操作、用户注册与登录系统实现等关键步骤,旨在为开发者提供一个从零到一的项目实战路径,展示PHP与MySQL协同工作的强大能力。 ####
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
1022 1
MySQL与Redis协同作战:优化百万数据查询的实战经验
【10月更文挑战第13天】 在处理大规模数据集时,传统的关系型数据库如MySQL可能会遇到性能瓶颈。为了提升数据处理的效率,我们可以结合使用MySQL和Redis,利用两者的优势来优化数据查询。本文将分享一次实战经验,探讨如何通过MySQL与Redis的协同工作来优化百万级数据统计。
456 5

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问