Unlike the standard multi-node Postgres replication cluster, when managed by Patroni, all failovers are automatically executed. However, this is not the case when dealing with inter-datacentre failovers when for instance a standby datacentre must take over from a failed primary. The following describes the mechanisms required to perform such a procedure when the case arises. […]
20
2025
Performing Standby Datacentre Promotions of a Patroni Cluster
28
2025
Practical Data Masking in Percona Server for MySQL 8.4
Data masking lets you hide sensitive fields (emails, credit-card numbers, job titles, etc.) while keeping data realistic for reporting, support, or testing. It is particularly useful when you collaborate with external entities and need to share your data for development reasons. You also need to protect your data and keep your customers’ privacy safe. Last […]
27
2025
Troubleshooting PostgreSQL Logical Replication, Working with LSNs
PostgreSQL logical replication adoption is becoming more popular as significant advances continue to expand its range of capabilities. While quite a few blogs have described features, there seems to be a lack of simple and straightforward advice on restoring stalled replication. This blog demonstrates an extremely powerful approach to resolving replication problems using the Log […]
30
2025
Tackling the Cache Invalidation and Cache Stampede Problem in Valkey with Debezium Platform
There are two hard problems in computer science: cache invalidation, naming things, and off-by-1 errors. This classic joke, often attributed to Phil Karlton, highlights a very real and persistent challenge for software developers. We’re constantly striving to build faster, more responsive systems, and caching is a fundamental strategy for achieving that. But while caching offers […]
21
2025
MySQL Router 8.4: How to Deal with Metadata Updates Overhead
It may be surprising when a new InnoDB Cluster is set up, and despite not being in production yet and completely idle, it manifests a significant amount of writes visible in growing binary logs. This effect became much more spectacular after MySQL version 8.4. In this write-up, I will explain why it happens and how to address […]
04
2025
Integrating Citus with Patroni: Sharding and High Availability Together
Citus is a robust PostgreSQL extension that aids in scaling data distribution and provides a solid sharding mechanism. It enriches features like distributed tables, reference tables, columnar storage, schema-based sharding, etc. We have already covered the basics of Citus and the initial setup part in some earlier blog posts: How To Scale a Single-Host PostgreSQL […]
10
2025
Working with Geospatial Data? PostGIS Makes PostgreSQL Enterprise-Ready
Do you find yourself struggling with geospatial data in your database? You know the feeling: you need quick answers about locations, distances, and relationships between points on a map, but your database just wasn’t built for these questions. The problem? While fantastic for traditional data, PostgreSQL on its own doesn’t natively handle the complexities of […]
30
2025
Benchmarking PostgreSQL: The Hidden Cost of Over-Indexing
Indexing is one of PostgreSQL’s most effective tools for improving query performance, but like any powerful tool, it can cause real problems when overused. A while ago, my colleague Jobin wrote a blog post exploring the negative side effects of over-indexing in PostgreSQL: PostgreSQL Indexes Can Hurt Performance: Exploring the Negative Effects and the Costs […]
16
2025
How to Extend Percona Monitoring and Management to Add Logging Functionality
Evolution is one of the inherent traits of modern software. Many people reach out to product teams daily, asking to add more functionality to the software products they use and love. This is understandable: there will always be ways to make a product better by adding more features to the users’ delight so they can […]
01
2025
Kubernetes Sidecar Containers Explained: Benefits, Use Cases, and What’s New
Kubernetes is becoming a popular choice for running containerized applications. While the core idea is to have a single container running the application in a Pod, there are many cases where one or more containers need to run alongside the application container, such as containers for capturing logs, metrics, etc. This approach is typically referred […]