首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

进阶数据库系列(十六):PostgreSQL 数据库高可用方案

在一个生产系统中,通常都需要用高可用方案来保证系统的不间断运行。PostgreSQL 本身不支持任何多主群集解决方案,例如MySQL或Oracle。...尽管如此,仍有许多商业和社区产品提供此实现,以及其他产品,例如PostgreSQL的复制或负载平衡。 本章将详细介绍如何实现PostgreSQL数据库的高可用方案。...但与为静态页面提供服务的Web服务器不一样的是,数据库中记录了数据,要想在多台数据库中切换,需要进行数据同步,所以数据同步是数据库高可用方案的基础。...更多关于 PostgreSQL 系列的学习文章,请参阅:PostgreSQL 数据库,本系列持续更新中。 DRBD的方案 SAN存储比较昂贵,使用该方案的成本较高。...Repmgr 是一款开源的基于postgres复制基础上的高可用软件,他基于2ndQuadrant 公司开发而来,提供完整的基于从安装到部署,从设置到管理以及监控的一体化的postgresql 高可用方案

2.4K30

PostgreSQL 数据库中的窗口函数

一个窗口函数在一系列与当前行有某种关联的表行上执行一种计算。这与一个聚集函数所完成的计算有可比之处。但是窗口函数并不会使多行被聚集成一个单独的输出行,这与通常的非窗口聚集函数不同。...可以访问与当前记录相关的多行记录; 不会使多行聚集成一行, 与聚集函数的区别; 窗口函数语法 窗口函数跟随一个 OVER 子句, OVER 子句决定究竟查询中的哪些行被分离出来由窗口函数处理。...如果没有 PARTITION BY, 该查询产生的所有行被当作一个单一分区来处理。 ORDER BY 子句决定被窗口函数处理的一个分区中的行的顺序。...PostgreSQL 中的聚合函数也可以作为窗口函数来使用 除了这些内置的窗口函数外,任何内建的或用户定义的通用或统计聚集(也就是有序集或假想集聚集除外)都可以作为窗口函数。...partition by dep_name order by emp_no) FROM public.emp_salary order by dep_name, emp_no; 可见, 窗口函数在需要对查询结果中的相关行进行计算时有很大的优势

1.8K70
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    用 ncdu 检查 Linux 中的可用磁盘空间

    认识到这一点,ncdu 命令旨在提供一份关于你在硬盘上使用的空间的交互式报告。 在 Linux 上安装 ncdu 在 Linux 上,你可以从你的软件仓库安装 ncdu。...image.png 这是 ncdu 的主要吸引力之一,也是它与最初的 du 命令不同的地方。 要获得一个目录的完整列表,启动 ncdu。它默认为当前目录。...这个列表首先显示了最大的目录(在这个例子中,那是 ~/.var 目录,塞满了很多的 flatpak 包)。...使用键盘上的方向键,你可以浏览列表,深入到一个目录,这样你就可以更好地了解什么东西占用了最大的空间。...另外,你可以在文件中列出要排除的文件和目录,并使用 --exclude-from 选项来引用该文件: $ ncdu --exclude-from myexcludes.txt /home/tux

    1.5K30

    数据库硬盘空间可用小于90%解决的方案

    一.问题描述我司在某云的MySQL数据库占硬盘空间大于90%,RDS空间总空间为 700G,表A分析之后。某渠道统计的表有5亿,单表空间超过350G。服务器架构:一主多从。...【实际业务中,将此表按月分表】截断表A,释放硬盘空间(不会导致主从延迟)。定时任务:定期备份删除过期数据。涉及到的知识点:mysql备份(鄙视一下某云,某云备份居然还要收费)。...表空间分析mysqldump 备份命令mysqldump -u 用户名 -h 数据库地址 -p '密码' --opt 数据库名 表名 > /data/备份文件名.sql备份表的时候报错:mysqldump...很明显,一旦表被删除,那么表中包含的所有的数据行都会被一同删除。   truncate 命令则仅仅删除了表中所有的数据行。表的结构和所有的索引仍然继续存在,直到你输入删除表的命令(如上所述)。...delete(删除)和truncate(截断)都会回收被数据占用的空间,以及相关的索引。只有表的拥有者可以截断表。

    98140

    PostgreSQL中的大容量空间探索时间序列数据存储

    因为PostgreSQL的成熟,以及对各种数据类型和非结构化数据的支持,ESDC团队已经确定使用PostgreSQL。除了这些例行要求外,ESDC也需要存储和处理地理空间和时间序列数据。...地理空间数据是那些附有位置信息的数据,比如行星在天空中的位置。这必须在不使用不同类型或数据源的不同数据存储的情况下完成。之所以决定迁移到PostgreSQL,是因为它支持这种处理的扩展机制。...目前,还不清楚哪些特定的时间序列数据库得到了评估,但是,该团队没有选择其中任何一个,因为他们已经将SQL标准化为首选的查询语言,并把PostgreSQL作为平台,因为它满足了他们的其他要求。...过去有一些方法可以把时间序列数据存储在PostgreSQL上。它最近的分区特性试图解决这样的问题:将大表索引保存在内存中,并在每次更新时将其写入磁盘,方法是将表分割成更小的分区。...块的大小是一定的,因此,用于表索引的所有B树结构都能够在数据插入数据库期间驻留内存,类似于PostgreSQL进行分区的方式。索引是根据时间和分区关键字自动产生的。

    2.6K20

    【PostgreSQL架构】PostgreSQL的最佳群集高可用性方案

    现在让我们回顾一下PostgreSQL中的一些集群选项。...在PostgreSQL上,如果发生事件,可以自动将您的从属提升为主状态。 它是一个非常完整的工具,带有免费的社区版本(还包括免费的企业试用版)。 ? ?...Citus分片将您的数据库分片,并在整个商品节点集群中复制每个分片的多个副本。如果群集中的任何节点不可用,Citus会将所有写入或查询透明地重定向到其他一个包含受影响的分片副本的节点。...PostgresXL是可水平扩展的开源SQL数据库集群,具有足够的灵活性来处理各种数据库工作负载: OLTP写密集型工作负载 需要MPP并行性的商业智能 运营数据存储 键值存储 GIS地理空间 混合工作负载环境...如果只有一台应用程序服务器,那么无论您配置了多少数据库的高可用性,如果应用程序服务器发生故障,则将无法访问。您必须很好地分析基础架构中的单点故障,并尝试解决它们。

    12.6K60

    Windows 环境搭建 PostgreSQL 逻辑复制高可用架构数据库服务

    ,所以本文采用 Windows 环境作为演示系统来进行 PostgreSQL 高可用数据库服务的搭建。...localhost 的 PostgreSQL 实例中 csapp 数据库和 远程服务器上 caspp 数据库的主从配置。...这里要注意的一点是 PostgreSQL 的 逻辑订阅并不会同步DDL操作 ,所以对于数据库的建表等操作是不会进行主从同步的,我们需要手动维护 主从实例数据库上的表结构使其保持一致。...ALTER SUBSCRIPTION s REFRESH PUBLICATION WITH (copy_data = true);然后我们在主库的数据库表中进行数据操作,所有的操作就会被同步到 从库的数据表中...所以建议至少有2个备库来提升保障级别至此 Windows 环境搭建 PostgreSQL 逻辑复制高可用架构数据库服务 就讲解完了,有任何不明白的,可以在文章下面评论或者私信我,欢迎大家积极的讨论交流,

    1K20

    Windows 环境搭建 PostgreSQL 物理复制高可用架构数据库服务

    PostgreSQL 高可用数据库的常见搭建方式主要有两种,逻辑复制和物理复制,上周已经写过了关于在Windows环境搭建PostgreSQL逻辑复制的教程,这周来记录一下 物理复制的搭建方法。..., 逻辑复制可以简单理解为解析了WAL归档文件中的信息,处理成为 标准的SQL语句,传递给存库进行执行,相对于直接传递WAL性能较低,延迟高。...物理复制不需要像逻辑复制一些去手动的建立数据库,数据表,因为物理复制是直接恢复WAL所以包含了DDL操作,逻辑复制则需要自己进行DDL操作。...关于 Windows 系统 PostgreSQL 的安装方法可以直接看之前的博客 Windows 系统 PostgreSQL 手工安装配置方法 如果追求高性能,高一致性的数据库复制备份方案建议采用物理复制的方式...至此 Windows 环境搭建 PostgreSQL 物理复制高可用架构数据库服务 就讲解完了,有任何不明白的,可以在文章下面评论或者私信我,欢迎大家积极的讨论交流,有兴趣的朋友可以关注我目前在维护的一个

    74910

    谁说Postgresql 没有靠谱的高可用

    接上期(如果你刚开始看的话,那估计可能会丈二和尚,建议还是从1 开始看) 上期说到了见证服务器,见证服务器的功能到底有什么用,其实如同各种高可用中(这里说的是完备的高可用)大部分都是三台,因为怕什么,...所以在数据中心或比较关键的业务中,使用的数据库服务器的高可用也是要妥妥当当的。wintness不是一个成熟的备用节点,也没有集成到复制中,但是在决定哪个网络段占多数时,它有效地代表了“投票”。...首先我们要搭建一台和前边两台没有任何关系的postgresql 的数据库。...并且安装repmgr 也是和前面一样,(如果不知道怎么做,就看前边的内容,这里不再重复) 所以,到目前为止,你应该有一个 postgresql 的集群,两台机器,并且现在你又安装了一台postgresql...下面我们开始做测试,我们将主节点关闭 我们在看 witeness 节点的日志 最后 witness 节点虽然是postgresql 的数据库,但如果仅仅作为见证服务器,则可以不需要配置那么高,如同mongodb

    1.9K20

    PostgreSQL REPMGR “靠谱”的高可用方式

    REPMGR 是一种方便简单的适合企业使用的高可用方式,为什么选择REPMGR作为单体PG的高可用方式 1 REPMGR 是这三种里面最简单的高可用的方式,这里的意思是结构节点,搭建简单,处理简单...调整的参数明显 3 资料多,并且有2象限(现在是EDB)这样的公司作为后盾, 并且国内的瀚高也是用这个作为他们商业的高可用方式的二次开发对象....目前我们采用的一个主+两个从的方式 一个注册 一个不注册 (一个从可能是延迟库,也可能为BIG DATA 提供抽取数据使用) 我们以POSTGRESQL 12.2 REPMGR 5.2.1 版本为例...配置文件 postgresql.conf 此处略过 新建用户 ,密码略过 repmgr repl 调整主库的pg_hba.conf 配置文件 7 将.bash-profile 拷贝到其他的两个数据库上...数据库 启动主库 并且在主库中运行如下命令 create database repmgr; create user repmgr with password 'repmgr'; alter user

    2.7K51

    用 ncdu 检查 Linux 中的可用磁盘空间的命令方法

    认识到这一点,ncdu 命令旨在提供一份关于你在硬盘上使用的空间的交互式报告。 在 Linux 上安装 ncdu 在 Linux 上,你可以从你的软件仓库安装 ncdu。...ncdu interface 这是 ncdu 的主要吸引力之一,也是它与最初的 du 命令不同的地方。 要获得一个目录的完整列表,启动 ncdu。它默认为当前目录。...这个列表首先显示了最大的目录(在这个例子中,那是 ~/.var 目录,塞满了很多的 flatpak 包)。...使用键盘上的方向键,你可以浏览列表,深入到一个目录,这样你就可以更好地了解什么东西占用了最大的空间。...另外,你可以在文件中列出要排除的文件和目录,并使用 --exclude-from 选项来引用该文件: $ ncdu --exclude-from myexcludes.txt /home/tux

    1.4K40

    【赵渝强老师】PostgreSQL的表空间

    在PostgreSQL中,数据库在逻辑上分成多个存储单元,该单元称作表空间。表空间用作把逻辑上相关的数据结构放在一起。数据库逻辑上是由一个或多个表空间组成。...在数据库初始化的时候,会自动创建pg_default和pg_global两个表空间。其中:pg_global:该表空间用于存放系统表。...pg_default:创建表时的默认表空间,该表空间的物理文件存储在数据目录中的base目录中,如:/home/postgres/training/pgsql/data/base。...视频讲解如下:下面通过具体的操作来演示如何查看PostgreSQL中已有的表空间和如何创建自己的表空间。(1)登录PostgreSQL。bin/psql(2)查看PostgreSQL中已有的表空间。...中已有的表空间。

    13710

    知识分享之PostgreSQL——数据库中的模式(Schema)

    知识分享之PostgreSQL——数据库中的模式(Schema) 背景 日常我们开发时,我们会遇到各种各样的奇奇怪怪的问题(踩坑o(╯□╰)o),这个常见问题系列就是我日常遇到的一些问题的记录文章系列,...这里整理汇总后分享给大家,让其还在深坑中的小伙伴有绳索能爬出来。...开发环境 系统:windows10 JDK:openjdk11 开发工具:IDEA 教育版 框架:SpringBoot 包管理:Gradle 内容 在PostgreSQL中有一个概念叫做模式(Schema...标准语法如下: CREATE SCHEMA [IF NOT EXISTS] XXXXXX [AUTHORIZATION 所属用户 ]; []中的内容可以省略。...通常我们在PostgreSQL中创建一个新的数据库后,会自动创建一个模式,叫做public,当执行CREATE TABLE时默认该表就是存储在这个模式下。

    1.5K20

    谁说postgresql 没有靠谱的高可用(6)

    下方的 nodes 表则记录了数据库集群中的已经注册的节点 另外还有一些常见的命令 repmgr -f /etc/repmgr.conf node status 具体的常见的命令可以去官网去看比我介绍的要好的多...常见的疑问 1 repmgr 需要初始化数据或者有metadata 吗 为了有效地管理复制集群,repmgr需要将集群中服务器的信息存储在专用的数据库模式中。...目前repmgr 最高的版本已经不是 4.4 ,而是 5.0 ,5.0 的版本兼容所有目前正式版的postgresql ,同时一个集群中的各个节点的repmgr 的版本应该是一致的,不能存在不同版本的混用的做法...cluster 是否也可以使用 repmgr 是的可以这样使用,但不建议 5 repmgr 的使用中是否对 postgresql,conf 的设置有一些要求 本身没有,但针对于复制来说,还是需要在重复一下...其实postgresql 的高可用方法有很多,这六期仅仅是说了其中一种,高可用可以有很多的变化,即使是repmgr 也可以搭配其他的多种中间件来进行高可用的使用。 学无止境,适合就好。

    2.3K20

    NestJS、TypeORM 和 PostgreSQL 项目开发和数据库迁移完整示例(译)

    在这篇文章中,向你展示是如何设置大部分 Nest.js 项目的,我们将在一个简单的 Node.js API 上工作,并使用 PostgreSQL 数据库作为数据存储,并围绕它设置一些工具,使开发更容易上手...(这不仅适用于 PostgreSQL 数据库,还适用于其他数据库,可以在 TypeORM 文档中找到支持哪些数据库) 使用 docker 自动化设置本地 PostgreSQL 数据库实例。...要在本地实现数据持久性,我们现在需要一个数据库服务器和一个要连接的数据库。一种方法是在本地机器上设置一个 PostgreSQL 数据库服务器,但这样做不是很好。...我们可以用几行 shell 代码编写一个完整的设置来让我们的服务器实例运行并准备一个空的数据库准备连接。...我们将在服务中包含一个容错模式。这意味着如果获取一个不存在的值,它将抛出含义完整的错误。这使您的设置更加健壮,因为您将在构建 / 启动时检测配置错误,而不是在运行时生命周期。

    5.5K30

    NestJS、TypeORM 和 PostgreSQL 项目开发和数据库迁移完整示例(译)

    在这篇文章中,向你展示是如何设置大部分 Nest.js 项目的,我们将在一个简单的 Node.js API 上工作,并使用 PostgreSQL 数据库作为数据存储,并围绕它设置一些工具,使开发更容易上手...(这不仅适用于 PostgreSQL 数据库,还适用于其他数据库,可以在 TypeORM 文档中找到支持哪些数据库) 使用 docker 自动化设置本地 PostgreSQL 数据库实例。...要在本地实现数据持久性,我们现在需要一个数据库服务器和一个要连接的数据库。一种方法是在本地机器上设置一个 PostgreSQL 数据库服务器,但这样做不是很好。...我们可以用几行 shell 代码编写一个完整的设置来让我们的服务器实例运行并准备一个空的数据库准备连接。...我们将在服务中包含一个容错模式。这意味着如果获取一个不存在的值,它将抛出含义完整的错误。这使您的设置更加健壮,因为您将在构建 / 启动时检测配置错误,而不是在运行时生命周期。

    5.1K10
    领券