Blog Post

Azure Database Support Blog
3 MIN READ

Azure PostgreSQL Lesson Learned #2: Fixing Read Only Mode Storage Threshold Explained

HaiderZ-MSFT's avatar
HaiderZ-MSFT
Icon for Microsoft rankMicrosoft
Oct 29, 2025

We encountered a support case involving Azure Database for PostgreSQL Flexible Server where the database unexpectedly switched to read-only mode, causing application write failures. This blog explains the root cause, resolution steps, and best practices to prevent similar issues.

Co-authored with angesalsaa​ 

The issue occurred when the server’s storage usage reached approximately 95% of the allocated capacity. Automatic storage scaling was disabled.

 

Symptoms included:

  • Server switching to read-only mode
  • Application errors indicating write failures
  • No prior alerts or warnings received by the customer

Example error:

ERROR: cannot execute %s in a read-only transaction

Root Cause

The root cause was the server hitting the configured storage usage threshold (95%), which triggered an automatic transition to read-only mode to prevent data corruption or loss.

Storage options - Azure Database for PostgreSQL | Microsoft Learn

If your Storage Usage is below 95% but you're still seeing the same error, please refer to this article for more information >

Azure PostgreSQL Lesson Learned#1:Fix Cannot Execute in a Read-Only Transaction After HA Failover​ 

Contributing factors:

  • Automatic storage scaling was disabled
  • Lack of proactive monitoring on storage usage
  • High data ingestion rate during peak hours

Specific conditions:

  • Customer had a custom workload with large batch inserts
  • No alerts configured for storage usage thresholds

Mitigation

To resolve the issue:

  • Increased the allocated storage manually via Azure Portal
  • No restart is needed after you scale up the storage because it is an online operation but make sure If you grow the disk from any size between 32 GiB and 4 TiB, to any other size in the same range, the operation is performed without causing any server downtime. It's also the case if you grow the disk from any size between 8 TiB and 32 TiB.
  • In all those cases, the operation is performed while the server is online. However, if you increase the size of disk from any value lower or equal to 4096 GiB, to any size higher than 4096 GiB, a server restart is required. In that case, you're required to confirm that you understand the consequences of performing the operation. Scale storage size - Azure Database for PostgreSQL | Microsoft Learn
  • Verified server returned to read-write mode

Steps:

  • Navigate to Azure Portal > PostgreSQL Flexible Server > Compute & Storage
  • Increase storage size (e.g., from 100 GB to 150 GB)

Post-resolution:

  • Server resumed normal operations
  • Write operations were successful

Prevention & Best Practices

Why This Matters

Failing to monitor storage and configure scaling can lead to:

  • Application downtime
  • Read-only errors impacting business-critical transactions

By following these practices, customers can ensure seamless operations and avoid unexpected read-only transitions.

Key Takeaways

  1. Symptom:
    • Server switched to read-only mode, causing write failures (ERROR: cannot execute INSERT in a read-only transaction).
  2. Root Cause:
    • Storage usage hit 95% threshold, triggering read-only mode to prevent corruption.
  3. Contributing Factors:
    • Automatic storage scaling disabled.
    • No alerts for storage thresholds.
    • High ingestion during peak hours with large batch inserts.
  4. Mitigation:
    • Increased storage manually via Azure Portal (online operation unless crossing 4 TiB → restart required).
    • Server returned to read-write mode.
  5. Prevention & Best Practices:
    • Enable automatic storage scaling.
    • Configure alerts for storage usage (e.g., 80%, 90%).
    • Monitor storage metrics regularly using Azure Monitor or dashboards.
Updated Oct 28, 2025
Version 1.0
No CommentsBe the first to comment