Databases & Messaging
guides.
Troubleshoot databases, caches and messaging systems with guides to reliability, performance, transactions and recovery.
All engineering insights ↗Cloud and infrastructure library ↗
Databases & Messaging articles
78 guides
Database Schema Changes: Keep App Rollback Possible ↗
Plan an application deployment and database migration together using compatible phases, backup checks and a tested rollback boundary.
RabbitMQ Dead-Letter Replay: Avoid Duplicate Work ↗
Review dead-letter reasons and replay RabbitMQ messages in controlled batches with idempotency and business reconciliation.
RabbitMQ Backlog: Ready vs Unacknowledged Messages ↗
Diagnose a growing RabbitMQ queue by comparing ready and unacknowledged messages, consumer health, prefetch and processing time.
MySQL Logical Backup: Test a Safe Restore ↗
Plan and rehearse a MySQL logical backup restore, including consistency, users, application dependencies and verification.
MySQL Connection Refused vs Access Denied ↗
Distinguish a MySQL network or socket connection failure from an authentication or authorization denial before changing security rules.
Roll Back a WordPress Plugin Without Losing Data ↗
Plan a WordPress plugin rollback around compatible database changes, backups, staging tests and the site's actual business workflows.
WordPress Autoloaded Options: Diagnose Slow Loads ↗
Use Site Health and database evidence to investigate large WordPress autoloaded options without blindly deleting plugin settings.
Kafka acks=all and min.insync.replicas: Define the Failure Contract ↗
Understand Kafka acks=all and minimum ISR as a failure contract. Test replica loss, producer outcomes and restored protection with identified records.
Redis Big Keys: Reduce Blocking Work and Verify Deferred Memory Reclamation ↗
Diagnose Redis large-key latency and compare DEL with UNLINK. Measure deferred cleanup, memory headroom and a bounded key lifecycle.
MongoDB WiredTiger Cache: Separate Useful Occupancy from Eviction Pressure ↗
Separate normal WiredTiger occupancy from harmful eviction pressure. Review query patterns, filesystem cache and the deployment memory boundary.
MySQL Buffer Pool Sizing: Measure the Working Set and Memory Headroom ↗
Size the InnoDB buffer pool using interval read misses, query work and total memory headroom. Validate warmup, peak connections and batch overlap.
MySQL Redo Capacity: Investigate Checkpoint Pressure Before Changing Durability ↗
Investigate MySQL redo generation, checkpoint progress and storage capacity. Test supported redo sizing without silently weakening durability.
PgBouncer Prepared Statements: Validate the Driver and Transaction Pooling Contract ↗
Validate PgBouncer prepared-statement tracking with the real driver and transaction pool. Test backend reuse, reconnects and session assumptions.
PostgreSQL Transaction ID Age: Prevent Wraparound Before Emergency Recovery ↗
Monitor PostgreSQL transaction ID age, limiting relations and vacuum progress. Resolve maintenance obstacles before the freeze horizon becomes an emergency.
RabbitMQ Publishers Stalling: Check Resource Alarms Before Increasing Client Timeouts ↗
Investigate RabbitMQ publisher stalls through disk and memory alarms, cluster-wide effects, connection roles, bounded retries, and a verified backlog recovery plan.
MongoDB Compound Indexes: Match Field Order to the Queries Customers Actually Run ↗
Design MongoDB compound indexes from query shapes, tenant filters, sort requirements, execution evidence, and write costs instead of indexing fields in isolation.
Redis Eviction Policy: Decide Whether Losing a Key Is a Cache Miss or a Business Incident ↗
Choose Redis memory and eviction behaviour from the role of each key, monitor rejected writes and evictions, and test application recovery under memory pressure.
MySQL ALTER TABLE Waiting: Find the Metadata Lock Owner Before Killing Sessions ↗
Trace MySQL metadata-lock waits to transactions and sessions, contain a blocked migration, and validate a schema change without blindly killing database clients.
PostgreSQL Replication Slots Filling Disk: Protect the Primary Without Losing the Consumer Plan ↗
Diagnose WAL retained by PostgreSQL replication slots, identify stalled consumers, estimate storage exhaustion, and plan recovery or resynchronization.
RabbitMQ Confirms and Acknowledgements: Trace a Message All the Way to Business Completion ↗
Separate RabbitMQ publisher confirms, routing outcomes, consumer acknowledgements, and durable business completion with a practical recovery ledger.
MongoDB Change Streams: Persist Resume Tokens at the Right Processing Boundary ↗
Persist MongoDB change-stream progress with downstream completion, retained history, compatible pipelines, and a tested resynchronisation path.
Redis Locks and Fencing: Stop an Expired Worker From Writing After a New Owner Starts ↗
Review Redis lock expiry, safe release, ownership tokens, and resource-enforced fencing to prevent stale workers from writing after ownership changes.
MySQL Read-After-Write Consistency: Wait for the Transaction You Actually Need ↗
Design MySQL replica reads around a specific committed transaction, bounded GTID waits, authoritative fallback, and application-level consistency tests.
PostgreSQL Advisory Locks: Match Lock Lifetime to Connection-Pool Behaviour ↗
Choose PostgreSQL session or transaction advisory locks with pool behaviour in mind, then test ownership, rollback, contention, and worker recovery.
XtraBackup preparation: preserve the original backup ↗
Prepare a Percona XtraBackup 8.4 backup on a controlled working copy, then verify completion, version compatibility and an isolated restore.
PostgreSQL test restores: gate access until masking completes ↗
Build a controlled PostgreSQL test-restore workflow that isolates imported production data, transforms sensitive fields and validates access before release.
SQL Server encrypted backups: escrow the restore keys ↗
Prepare SQL Server encrypted-backup recovery by preserving the required certificate and private key, protecting their access and testing an independent restore.
SQL Server Maintenance: Separate Index Shape from Statistics ↗
Choose SQL Server index or statistics maintenance from measured query behavior, page density, estimate quality, and the real cost of the operation.
SQL Server Parameter Sensitivity: Compare Representative Plans ↗
Investigate uneven SQL Server query performance by comparing parameter distributions, Query Store evidence, estimates, and version-specific plan features.
SQL Server Log Chains: Inventory LSN Coverage Before Restore ↗
Build a SQL Server restore sequence from database identity, backup headers, differential base, and continuous log coverage rather than filenames alone.
SQL Server AG Backups: Make Preference Drive Real Jobs ↗
Review Always On backup placement through SQL Server version support, replica health, job logic, shared history, and recovery-artifact access.
SQL Server Log Growth: Follow the Reuse Wait Reason ↗
Investigate SQL Server transaction-log growth through occupied space, recovery model, and the reported reuse wait before considering file operations.
SQL Server tempdb: Identify Space and Wait Consumers ↗
Diagnose SQL Server tempdb pressure by separating user objects, internal work, version storage, and allocation waits before changing file layout.
Redis TLS: Verify Every Client and Replication Path ↗
Plan Redis TLS changes across application connections, replicas, Sentinel or Cluster links, certificate identity, and the runtime trust configuration.
Redis ACLs: Test Commands and Key Patterns Together ↗
Review Redis ACL access through the actual command, key, channel, and selector rules, then test expected permissions without executing business writes.
Redis Latency: Separate Command Time from Client Delay ↗
Investigate Redis latency with bounded slow-log samples, event monitoring, application timings, and host evidence that refer to the same interval.
Redis Cluster: Decode MOVED, ASK and CROSSSLOT Errors ↗
Follow Redis Cluster errors through client slot routing, migration redirections, advertised endpoint reachability, and multi-key placement rules.
Redis Replication: Diagnose Backlog and Full Resyncs ↗
Investigate repeated Redis full resynchronization by comparing replication history, offsets, disconnection patterns, and backlog capacity.
Redis Persistence: Test the AOF and RDB Recovery Contract ↗
Choose Redis AOF and RDB behavior from the data-loss requirement, inspect persistence health, and test recovery from the complete saved artifact.
MongoDB Restore: Check Versions, Namespaces and Replay Scope ↗
Prepare a mongorestore run by matching tool and server compatibility, isolating the destination, and choosing namespace or oplog replay scope deliberately.
MongoDB Oplog Windows: Plan for Outage and Catch-Up ↗
Assess MongoDB oplog history using observed write activity, maintenance duration, and secondary catch-up time before assuming a fixed outage allowance.
MongoDB TTL: Separate Expiration from Deletion Timing ↗
Investigate MongoDB TTL behavior through date types, index configuration, primary-side deletion, and background progress rather than exact-time assumptions.
MongoDB Shard Keys: Review Distribution and Query Routing ↗
Compare MongoDB shard-key candidates using value distribution, growing-key behavior, and real query routing before committing to a sharding design.
MongoDB Write Concern: Handle Timeouts as Uncertain Outcomes ↗
Understand what MongoDB write-concern acknowledgments mean, why a timeout may leave a write present, and how to verify a business operation safely.
MongoDB Elections: Trace Quorum and Driver Discovery ↗
Investigate MongoDB election incidents by checking voting-member reachability, candidate eligibility, and the driver path to the replacement primary.
PostgreSQL Backup Manifests: Verify Files Before Restore ↗
Use PostgreSQL backup manifests to detect missing or changed backup files while keeping an isolated server-start and data check in the recovery workflow.
PostgreSQL Logical Replication: Map Each Privilege Hop ↗
Review PostgreSQL logical-replication access separately for publisher connection, initial copy, publication ownership, and subscriber apply behavior.
PostgreSQL Concurrent Indexes: Verify Build State ↗
Plan a PostgreSQL concurrent index build around transaction boundaries, waiting phases, resource use, and validation of the resulting index.
PostgreSQL Blocking: Trace the Session Holding the Work ↗
Follow PostgreSQL blocking chains to the owning transaction, distinguish waiting work from root blockers, and choose a deliberate intervention.
PostgreSQL Timeouts: Bound Statements and Recover Transactions ↗
Apply PostgreSQL statement and lock timeouts to the right workload, then verify cancellation, transaction cleanup, and application retry behavior.
PostgreSQL Pooling: Diagnose PgBouncer Queue Saturation ↗
Separate queued clients from PostgreSQL backend pressure when PgBouncer becomes busy, then review pool multiplication and transaction behavior.
PostgreSQL SCRAM: Migrate Passwords with Client Evidence ↗
Plan a PostgreSQL SCRAM migration by checking every driver and pooler, rotating stored passwords deliberately, and testing new connections.
PostgreSQL Access Rules: Find the First Matching HBA Row ↗
Diagnose PostgreSQL access-rule surprises by following the real client address, connection type, database, and role to the first matching HBA entry.
PostgreSQL WAL Growth: Check the Archive Delivery Path ↗
Trace PostgreSQL WAL accumulation through archive statistics, destination access, and actual file delivery before changing checkpoint settings.
PostgreSQL Slots: Find the Consumer Retaining WAL ↗
Investigate PostgreSQL replication-slot retention with consumer ownership, restart positions, retained-byte trends, and a deliberate recovery decision.
MySQL Plan Changes: Check Statistics After Data Shifts ↗
Investigate a MySQL plan regression after an import or data-distribution change by comparing estimates, stored statistics, and representative queries.
MySQL Connection Limits: Build an Application Pool Budget ↗
Investigate MySQL connection exhaustion by counting every application pool, separating active work from idle sessions, and preserving admin access.
MySQL Login Failures: Trace TLS and Authentication ↗
Diagnose MySQL login changes by separating certificate trust, hostname identity, account matching, and connector authentication-plugin support.
MySQL Text Conversion: Test Encoding and Comparison Rules ↗
Review connection encoding, stored column definitions, and collation equality before changing MySQL text settings or converting existing data.
MySQL Online DDL: Check Metadata Locks Before Altering ↗
Prepare MySQL online schema work by checking operation support, metadata-lock dependencies, free space, and cancellation behavior in advance.
MySQL Binary Logs: Size Retention for Offline Consumers ↗
Set a MySQL binary-log retention policy around disconnected replicas, backup recovery needs, and available disk capacity before purging files.
MySQL GTID Sets: Compare Histories Before Rejoining ↗
Use MySQL GTID set comparisons to identify missing and unexpected transaction history before choosing a replica rejoin or rebuild path.
MySQL Promotion: Check Read-Only State and Write Fencing ↗
Prepare a self-managed MySQL promotion by checking transaction coverage, application routing, and read-only controls as one coordinated procedure.
MySQL Replica Lag: Separate Receiving from Applying ↗
Investigate self-managed MySQL replication lag by comparing transport, worker progress, and transaction age before changing replica capacity.
InnoDB deadlocks: recover the transaction without duplicating its effects ↗
Diagnose MySQL InnoDB deadlocks from transaction and lock evidence, then use bounded transaction retries and consistent access order without duplicating external effects.
PostgreSQL vacuum lag: investigate the transaction horizon before tuning ↗
Investigate PostgreSQL vacuum effectiveness through long transactions, table statistics and transaction-ID age before increasing workers or scheduling disruptive rewrites.
Transactional outbox: recover the database-to-message boundary ↗
Use a transactional outbox to track database changes and pending notifications together, then verify publisher recovery, duplicate delivery and consumer idempotency.
Magento OpenSearch: verify the application search destination ↗
Diagnose Magento search failures by checking the configured OpenSearch endpoint, environment-specific index prefix and search acceptance beyond a connection test.
Spring Kafka offsets: acknowledgment versus business completion ↗
Trace Spring Kafka listener acknowledgment, durable business effects and redelivery so offset changes do not silently lose work or duplicate external actions.
Spring Transactions: Separate Database Commit from Side Effects ↗
Review Spring transaction boundaries, proxy behavior and external side effects. Test rollback and retry assumptions before coupling database work to remote operations.
SQL Server Restore Rehearsals: Include Application Dependencies ↗
Plan SQL Server recovery rehearsals with backup-chain requirements, access dependencies and business validation. Measure restoration beyond database availability.
Redis Eviction: Separate Cache Data from Critical State ↗
Review Redis memory and eviction policy against cache, session and queue responsibilities. Test application behavior when entries disappear or writes fail.
MongoDB Compound Indexes: Start with the Query Shape ↗
Review MongoDB compound indexes against real filters, sorting and workload frequency. Validate examined data and write overhead before adding another index.
MariaDB Migration: Validate the Application Contract ↗
Plan a MariaDB migration with version-specific compatibility checks, representative data and a tested cutover. Validate application behavior beyond a successful import.
MySQL Slow Queries: Prioritize the Business Impact ↗
Use MySQL slow-query evidence to prioritize costly business operations. Compare frequency, examined rows and application timing before changing indexes.
PostgreSQL PITR: Rehearse Recovery to a Chosen Time ↗
Plan a PostgreSQL point-in-time recovery rehearsal around base backups, WAL continuity and application checks. Measure recovery without touching production data.
VMware Snapshots: Define the Database Backup Boundary ↗
Distinguish VMware snapshot rollback from database recovery. Plan short change windows, backup ownership and an application-level recovery check.
Laravel Queues: Dispatch Jobs After Database Commit ↗
Avoid jobs reading uncommitted Laravel records. Plan commit timing, repeat-safe processing and a recovery check for background workers.