This is a follow-up to my colleagues Nickolay and Phong’s Store and Manage Logs of Percona Operator Pods with PMM and Grafana Loki and Agustin’s Turbocharging Percona Monitoring and Management With Loki’s Log-shipping Functionality blog posts. Here, I focus on making PostgreSQL database logs from a Kubernetes cluster deployed with the Percona Operator for PostgreSQL […]
18
2024
PostgreSQL 12 End of Life: Upgrade Now with Percona
PostgreSQL 12 reached its End of Life (EOL) on November 14, 2024. For more information, see the official PostgreSQL versioning policy page. This milestone marks the end of regular updates, bug fixes, and critical security patches for version 12. If you are still running PostgreSQL 12 in your production environment, it’s time to start planning […]
06
2024
An Elephant in the Cluster: Making PostgreSQL Feel at Home on Kubernetes
TL;DR Kubernetes was built for stateless apps, but as more stateful applications (like databases) run on it, operators include quite heavy implementations to Kubernetes workload management API (such as StatefulSets) deficits. While creating custom methods allows flexibility and faster time to market, it also leads to inconsistency and complexity. In this blog, I want to […]
04
2024
Exposing PostgreSQL with NGINX Ingress Controller
I wrote a blog post in the past about a generic approach on how to expose databases in Kubernetes with Ingress controllers. Today, we will dive deeper into PostgreSQL with ingress and also review two different ways that can be taken to expose the TCP service. The goal is to expose multiple PostgreSQL clusters through […]
01
2024
How Can MySQL Catch Up with PostgreSQL’s Momentum?
When I talk to old-timers in the MySQL community, I often hear this question: “How come MySQL is so awesome and still more popular than PostgreSQL (according to DB-Engines methodology at least), but it is losing ground while PostgreSQL’s growth in popularity has been unstoppable?” Can anything be done in the MySQL ecosystem to reverse […]
06
2024
PostgreSQL Internals for Newbies: A Guide to Data Storage, Part One
Database novices often wonder how ‘things work behind the scenes’ when starting with PostgreSQL. Many things happen when creating a table and adding data that are not apparent. You might ask, ‘Where does the data go?’ Luckily, it is easy to discover the details. Creating a table Creating a table creates a lot of metadata […]
04
2024
Percona In-Product Telemetry: Updates, Findings, and News
This article is, in fact, two topics merged into one publication. Both are related to anonymous statistical data collection within Percona releases of database engines: MySQL, MongoDB, and PostgreSQL. In the first part of this article, I will share some of our findings and observations and discuss the various conclusions we have drawn from them. […]
15
2024
The Making of an Open Source PostgreSQL TDE Extension
When using a tool for a while, one often becomes patriotic towards it. With your investment, such as your work, you’re building up experience and starting to care more about the tool you use. How good it is, how it’s perceived by others. It’s an interesting process. Being strongly involved with PostgreSQL, it was interesting […]
13
2024
Solving pg_upgrade and lc_collate Mismatch Issues in PostgreSQL
Character collations determine the sort order and classification of characters. When creating a database with initdb, PostgreSQL normally sets the collation based on the operating system’s locale settings, but other special collations, such as “C,” “POSIX,” and “ucs_basic,” are available as alternatives. On Linux systems, updates to glibc can bring changes to collation rules. Normally, […]
12
2024
How to Build a PostgreSQL Patch Test Environment on Ubuntu 22.04
While the well-established ways of building PostgreSQL from source still work, there are many new options on Linux as well. Postgres has adopted Meson as a build system, and there are more—and more granular—git commands. There’s even a new way to describe the sources for installing packages for my Ubuntu desktop, which is the default […]