Skip to content

PostgreSQL

PostgreSQL from installation to production: configuration, streaming replication, high availability with Patroni, backups with pgBackRest, performance tuning, extensions, upgrades and migrations from other database engines.

PGConf.EU 2026 – Day 2 & 3

Vacuum and autovacuum I started the second day of PGConf.EU with a session about vacuum and autovacuum, presented by Teresa Lopes.After a short introduction to how MVCC works, she presented the different elements related to autovacuum:What are the different phases of autovacuum? What can trigger autovacuum? Which parameters can influence autovacuum? All these points were explained in a simple and… 

Why attend PGConf.EU? My feedback from Valencia

This week I was in Valencia for the PGConf.EU 2026, the biggest PostgreSQL conference in Europe. Something surprised me right at the start. During the welcome session on the first day, the organizers asked who was attending for the first time, and around 30% of the room raised their hand! I don’t know exactly what it means, maybe more companies… 

PGConf.EU 2026 – Day 1

Welcome to Valencia! This year, the European PostgreSQL conference, PGConf.EU, takes place at the Palacio de Congresos in Valencia, Spain. I am lucky to be able to attend it with some colleagues from dbi services. Let’s see what’s going on there… I started the first day with a quick tour of the both of the different conference sponsors. I then… 

AI problems are database problems

Introduction When discussing agentic AI, we spend a lot of time on the model. Which one should we use? How much context does it support? Can it choose the right tool? These are useful questions. But from a my perspective, there are a few others I would ask quite early. Where does the agent store its state? Who can access… 

AI agents on sensitive data: what PostgreSQL can enforce, and what it can’t

Every useful database content, document behind an internal AI agent names someone, a company, server names,… A relationship manager might ask “what did this client complain about last quarter?”, an operations engineer might ask “what happened on this server last month?”, and the answer sits in notes, emails and incident tickets, CRMs and ERPs data, full of client names, staff… 

PostgreSQL Snapshot Backup and Restore with Proxmox ZFS (4/4)

In the blog series I previously wrote, I did not answer all the customer’s questions. The last one was the following: Can this also be applied to PostgreSQL? In short, yes, it is possible. Let’s see how. Here is the list of the previous blog posts: Partitioning and filesystem We will reuse the sqlpool ZFS pool created in the first… 

Upgrade RHEL from 9.6 to 10.1 (when running PostgreSQL/Patroni)

Upgrading from RHEL 9.6 to 10.1 is not just a routine update, it’s a major platform shift. When your server runs PostgreSQL compiled from source and a Patroni-managed cluster, the complexity increases significantly. System libraries change, Python environments break, ICU versions evolve, and your database binaries may no longer start after reboot. In this guide, I walk through a real-world… 

Zabbix – Monitoring full cluster Patroni/PostgreSQL

Introduction Monitoring a PostgreSQL environment involves much more than simply checking whether the database is running. In a modern high availability architecture, multiple components work together to keep the service available and stable. In this article, we will explain how to monitor a PostgreSQL cluster environment with Zabbix: The goal of this blog is to provide a simple and clear… 

Surviving a Patroni failover with logical replication

Your Patroni cluster does exactly what you built it to do. A node dies at 3 a.m., a new primary is elected in a few seconds, the application reconnects, and nobody gets paged. Your HA setup works. And yet, somewhere downstream, your change-data-capture pipeline has just gone quiet. Debezium or Flink CDC was streaming every change out of that database… 

pgvector, a guide for DBA – Part 2: Indexes (update march 2026)

Introduction In Part 1 of this series, we covered what pgvector is, how embeddings work, and how to store them in PostgreSQL. We ended with a working similarity search — but on a sequential scan. That works fine for a demo table with 1,000 rows. It does not work for production. This post is about what comes next: indexes. Specifically,… 

PostgreSQL Anonymizer: Simple Data Masking for DBAs

Sensitive data (names, emails, phone numbers, personal identifiers…) should not be freely exposed outside production. When you refresh a production database to a test or staging environment, or when analysts need access to real-looking data, anonymization becomes critical. The PostgreSQL Anonymizer extension (often called anon) is an open‑source extension that lets you mask, fake, shuffle, or generalize data directly inside… 

RAG Series – Embedding Versioning LAB

Introduction This is Part 2 of the embedding versionin, in Part 1, I covered the theory: why event-driven embedding refresh matters, the three levels of architecture (triggers, logical replication, Flink CDC), and how to detect and skip insignificant changes. If you haven’t read it, go there first, this post won’t through the entire intent of the designs but just demonstrate…