How we migrated a Qatar government entity's 50 TB EDB PostgreSQL database, TimescaleDB included, to community PostgreSQL: live replication, content-level data validation, and a near-zero-downtime cutover.
We are excited to share one of the HexaRocket’s success stories involving a migration of a 50 TB - EDB PostgreSQL database with TimescaleDB, to Community PostgreSQL with TimescaleDB. Mannai, our Partner from Qatar, reached out to us about this migration for a government entity in Qatar (Confidential), with a challenge that the migration must be executed faster and online, without impacting the business operations.
Before we begin, we sincerely want to acknowledge the efforts and expertise by Mannai, especially, the Service Delivery Manager, Satish Kumar Sadhu, and his team, who have ensured an efficient planning, communication and the execution of this Project. Mannai served as the prime implementation and delivery partner for this migration, leading the overall project planning, architecture assessment, customer coordination, validation, testing, and production cutover. HexaCluster provided the HexaRocket migration platform and worked closely with the Mannai team to address the specialized migration requirements of this large-scale PostgreSQL environment.

The project that was originally considered easily achievable was understood as challenging. The scale explains why – 50 TB of data, 1 to 3 TB of write-ahead log (WAL) generated every day, nearly 300 GB of WAL segments generated during Peak, and Millions of events are ingested per hour. An additional requirement was to perform the entire migration from a Standby database, but not from Primary.
Before engaging HexaCluster, Mannai conducted a comprehensive technical evaluation and solution assessment for the PostgreSQL migration. This included evaluating PostgreSQL native logical replication, open-source replication tools, and approaches from multiple PostgreSQL technology providers. Based on this assessment, it was determined that the project’s scale, performance requirements, and near-zero downtime objectives required a specialized migration tool. HexaCluster was then engaged to complement Mannai’s implementation expertise with its advanced migration technology, ensuring the successful delivery of the migration.
Following the technical evaluation, Mannai selected HexaRocket as the migration platform best suited to meet the project's scale, performance, and near-zero downtime requirements. Together, Mannai and HexaCluster completed multiple dry runs and successfully executed the production migration with zero data loss and live replication. Within 3 weeks, we were able to complete multiple dry runs, and also complete the Production database cutover, with zero data loss, and live replication.
In this article, we are going to share some details on the complexity and the approach and how HexaRocket made it seamless.

On paper, this migration is routine. EDB PostgreSQL and community PostgreSQL may be similar engines at heart, and TimescaleDB runs happily on both. What changes everything is the write volume - this database ingested millions of events per hour, around the clock, producing 1 to 3 TB of WAL on an ordinary day and more on a busy one. During the peak hours, the workload does generate between 150 GB to 300 GB of WAL segments per hour.
Near 100% automated conversion for enterprise databases including Oracle, SQL Server, MySQL, MariaDB, DB2, Cassandra and PostgreSQL.
Explore HexaRocketZero-lag CDC replication with better visibility, simplified configuration, and enterprise-grade monitoring.
Learn MoreAssessment, schema conversion, replication, rollback, and migration visibility - all from one platform.
Explore HexaCluster ProductsThe customer also required a live, continuous replication into the new environment before cutover, not a dump-and-restore weekend. The textbook answer would be PostgreSQL's native logical replication, but at this change rate it becomes nearly impossible to operate. The initial synchronization of 50 TB has to complete while the replication slot forces the source to retain days of WAL. The subscriber must then keep pace with terabytes of daily change or fall ever further behind. And, critically, logical replication does not replicate DDL: schema changes simply do not flow.
That last restriction collides head-on with TimescaleDB. If you have not tried it before, TimescaleDB is an extension that turns large tables into hypertables, automatically partitioning them into many smaller chunk tables. It is built exactly for heavy streams of timestamped data - IoT device telemetry, financial ticks, application metrics. Our customer used it on their busiest tables, which means the database was creating new chunk tables on the fly as data for new time ranges arrived. A replication approach that cannot carry DDL falls apart when the schema itself changes many times a day.
One more constraint shaped the whole design - the source system was already fighting disk I/O (IOPS) saturation at peak. Whatever we did, we could not add heavy read pressure to the production primary.
We began with a deliberately unoptimized, single-pass full load of the entire dataset using HexaRocket. We can apply Parallel workers to migrate multiple tables in parallel. It took about 3 days. Remember that this was the first dry-run. We are aware that this number was never going to survive with a real cutover plan, but it gave us exactly what we needed: per-table load timings and a clear picture of the kind of data each table held. From there, we knew where the time was going and what to parallelize.
HexaRocket is built exactly for this situation. It parallelizes data migration across many tables at once and, more importantly here, it parallelizes within a single table - multiple worker processes copy disjoint slices of the same large table (including individual timescaledb chunks) concurrently, so even the biggest hypertables load at full speed.
After configuring parallel workers based on the baseline analysis, we sustained roughly 1.5 TB per hour, bringing the initial load of the full 50 TB down from about 3 days to 28 hours in repeated dry-runs. Three more decisions made that number, and the system around it, hold up -

HexaRocket reads from the EDB standby (initial parallel load, then ongoing changes) and writes to community PostgreSQL with TimescaleDB, with data spread across multiple tablespaces. Applications keep writing to EDB PostgreSQL until cutover day.
The destination was never meant to be a single server. We built the target as a Patroni-managed high-availability cluster - a primary with a synchronized standby and automated failover - so the customer inherited resilience, not just a copy of their data. Bootstrapping Patroni across a 50 TB dataset is itself a serious undertaking; the initial cluster build takes real time at that scale. We completed it successfully, and the applications cut over onto an HA platform from their very first transaction, rather than waiting for high availability to arrive as a later project.
With 1-3 TB of change flowing through the system daily, keeping every table on a real-time pipeline would have been the hard way for no benefit. HexaRocket provided a detailed clarity in its Monitoring Dashboards, on the type of DMLs observed per table, during our dry runs. So, we sat down with the customer's application teams and categorized the tables into two pools.
The effect was that the real-time pipeline stayed lean and fast for the tables that genuinely needed it, while the heavy analytical tables synced efficiently in batches.
A migration is only as good as your proof that nothing was lost. Counting rows is necessary (HexaRocker supports row count validation), but nowhere near sufficient, so we ran HexaRocket's data validation, which compares the actual data between source and target and reports every inconsistency it finds, not just mismatched counts.
We enabled the built-in Validation during data migration. Additionally, using the HexaRocket’s offline data validation feature, these checks ran continuously against the replicated tables. This is what moved the customer from hopeful to confident - they could see, table by table, that the migrated data was complete and correct, with no silent corruption. Only then did we rebuild the indexes on the target, by pausing the replication only for the specific tables on which we were rebuilding Indexes and start preparing for cutover.
We designed the switchover in two phases so the final day would be as small and boring as possible.
Phase 1: hand the OLAP tables over early. A few days before the main switchover, the analytical tables were handed to the customer's ETL team, who began running their ETL jobs against both EDB PostgreSQL and community PostgreSQL in parallel. By cutover day, analytics was already living on the new platform.
Phase 2: converge the OLTP tables. With analytics out of the way, we focused entirely on the transactional tables under live CDC, running data validation and count checks continuously to confirm that source and target matched in real time.
On switchover day the sequence was short and rehearsed: the application teams paused traffic to EDB PostgreSQL, we let the remaining changes drain to the target, ran a final count validation across all tables, synchronized the sequence values, and pointed the applications at community PostgreSQL. Writes resumed on the new platform after a pause, not an outage.
The full 50 TB estate now runs on community PostgreSQL with the open-source TimescaleDB extension, migrated without a single data issue and cut over with near-zero downtime.
What made this work was not one trick. It was a baseline measured honestly, parallelism applied where the data said it would pay off, a replication strategy shaped with the application teams rather than imposed on them, validation the customer could verify for themselves, and a cutover runbook detailed enough that the day itself held no surprises. Our thanks to Mannai for the partnership throughout the engagement.
If you are weighing a move from EDB PostgreSQL, Oracle, or another commercial database to PostgreSQL, this is exactly what we do. HexaRocket handles parallel initial loads, live CDC, scheduled batch sync, and content-level data validation at terabyte scale, and our engineers have run it against production systems that cannot afford to stop. Explore our database migration to PostgreSQL services or talk to our team.
HexaCluster provides end-to-end migration and modernization services, including application migration and modernization, database migration, and PostgreSQL consulting such as performance tuning, health audits, managed DBA services, and 24/7/365 support.
To start a conversation or explore how we can support your migration journey, please contact us at connect@hexacluster.ai
Subscribe to our Newsletters and Stay tuned for more interesting topics.

Manisankar is the Director of Database Operations at HexaCluster. Before joining HexaCluster, he worked as a Senior Database Manager at MigOps and as a Database Consultant at HCL. As a PostgreSQL expert, Mani has supported numerous customers in deploying PostgreSQL and published a number of technical articles in his free time. In addition to PostgreSQL, he is also skilled in other database technologies such as MySQL, Oracle, Cassandra and more. Manisankar is also well-versed in development languages such as Python, Groovy, and Perl, empowering him to create solutions that automate complex operations for Customers.

Goutham is a Senior Database Developer and Administrator, who graduated from one of the reputed universities like IIIT. He is passionate about Open Source and building solutions for Highly Available and Scalable PostgreSQL clusters. Goutham has supported several Customers in deploying PostgreSQL efficiently and migrating from Oracle, SQL Server and MongoDB to PostgreSQL.
Srikanth Kolli serves as an Oracle and PostgreSQL Database Administrator at Mannai, our Partner. Srikanth works collaborates with partners of Mannai, like HexaCluster in delivering complex migration engagements.
Start your migration journey 🚀
start your migration journey with our expert team
Database & Application Migration Assessment Tool
End-to-End Database Migration & Modernization Tool
Database Code Object Conversion to PostgreSQL
MyBatis Mapper Conversion to PostgreSQL
Enterprise Data Replication & Live CDC
Oracle Compatibility Layer for PostgreSQL