For many data teams, migrating MySQL workloads to Azure Database for MySQL is a critical step in modernizing their data platform, but maintaining uptime, preserving data integrity, and validating performance during the process can be complex.
With Striim and Microsoft Azure, those challenges become manageable. Striim’s log-based Change Data Capture (CDC) continuously streams every MySQL transaction into Azure Database for MySQL, enabling zero-data-loss replication, real-time validation, and minimal impact on live applications.
As part of the Microsoft Unlimited Database Migration Program, this joint solution helps organizations accelerate and de-risk their path to Azure. By combining proven migration tooling, partner expertise, and architectural guidance, together, Striim and Microsoft simplify every stage of the move.
This tutorial walks through the key steps and configurations to successfully migrate from MySQL to Azure Database for MySQL using Striim.
Why Use Striim for Continuous Migration
Through the Unlimited Database Migration Program, Microsoft customers gain unlimited Striim licenses to migrate as many databases as they need at no additional cost. Highlights and benefits of the program include:
- Zero-downtime, zero-data-loss migrations. Supported sources include SQL Server, MongoDB, Oracle, MySQL, PostgreSQL, Sybase, and Cosmos. Supported targets include Azure Database for MySQL, Azure Database for PostgreSQL, Azure Database for CosmosDB, and Azure Database for MariaDB.
 - Mission-critical, heterogeneous workloads supported. Applies for SQL, Oracle, NoSQL, OSS.
 - Drives faster AI adoption. Once migrated, data is ready for real-time analytics & AI.
 
In this case, Striim enables continuous, log-based Change Data Capture (CDC) from MySQL to Azure Database for MySQL. Instead of relying on periodic batch jobs, Striim reads directly from MySQL binary logs (binlogs) and streams transactions to Azure in real time.
Using the architecture and configuration steps outlined below, this approach minimizes impact on production systems and ensures data consistency even as new transactions occur during migration.
Architecture Overview
This specific setup includes three components:
- Source: an existing MySQL database, hosted on-premises or in another cloud.
 - Processing layer: Striim, deployed in Azure for low-latency data movement.
 - Target: Azure Database for MySQL (Flexible Server recommended).
 
Data flows securely from MySQL → Striim → Azure Database for MySQL through ports 3306 and 5432. Private endpoints or Azure Private Link are recommended for production environments to avoid public internet exposure.
Preparing the MySQL Source
Before streaming can begin, enable binary logging and create a replication user with read access to those logs:
				
					GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'striim_user'@'%'; 
				
			
		Set the binlog format to ROW and ensure logs are retained long enough to handle any temporary network interruption.
In Striim, use the MySQL Reader component to connect to the source. This reader consumes binlogs directly, so overhead on the production system remains in the low single-digit percentage range.
You can find detailed configuration guidance in Striim’s MySQL setup documentation.
Configuring the Azure MySQL Target
Before starting the pipeline, make sure target tables exist in Azure Database for MySQL. Striim supports two methods:
- Schema Conversion Utility (CLI): automatically generates MySQL DDL statements.
 - Wizard-based creation: defines and creates tables directly through the Striim UI.
 
Create a MySQL user with appropriate privileges:
				
					CREATE USER striim_user WITH PASSWORD 'strongpassword';
GRANT CONNECT, CREATE, INSERT, UPDATE, DELETE ON DATABASE targetdb TO striim_user; 
				
			
		The Striim environment needs network access to the MySQL instance over port 5432. Using a private IP or Azure Private Endpoint helps maintain compliance and security best practices.
Building the Migration Pipeline
A complete Striim migration includes three coordinated stages:
- Schema Migration – creates tables and schemas in the target.
 - Initial Load – bulk-loads historical data from MySQL to Azure Database for MySQL.
 - Change Data Capture (CDC) – continuously streams live transactions to keep the systems in sync.
 
During the initial load, Striim copies historical data using a Database Reader and Database Writer. Once complete, you can start the CDC pipeline to apply real-time updates until MySQL and Azure Database for MySQL are fully synchronized. Note that Striim automatically maps compatible data types during initial load and continuous replication.
When ready, pause writes to MySQL, validate record counts, and cut over to Azure with zero data loss. Follow Striim’s switch-over guide for sequencing the transition safely.
Working in Striim
You can build pipelines in Striim using several methods:
- Wizards: pre-built templates that guide you through setup for common source/target pairs such as MySQL → Azure Database for MySQL.
 - Visual Designer: drag-and-drop components for custom data flows.
 - TQL scripts: Striim’s language for defining applications programmatically, suitable for CI/CD automation.
 
Each Striim application is backed by a TQL file, which can be version-controlled and deployed via REST API for repeatable infrastructure-as-code workflows. Below is a step-by-step demo of what you can expect.
Adding Transformations and Smart Pipelines
Beyond 1:1 replication, you can apply transformations to enrich or reshape data before writing to Azure. Striim supports in-memory processing through continuous SQL queries or custom Java functions.
For example, you can append operational metadata:
				
					SELECT *, CURRENT_TIMESTAMP() AS event_time, OpType() AS operation
FROM MySQLStream; 
				
			
		These Smart Data Pipelines allow teams to incorporate auditing, deduplication, or lightweight analytics without creating separate ETL jobs—streamlining modernization into a single migration flow.
Performance Expectations
In joint Striim and Microsoft testing, results typically show:
- 1 TB historical load: completed in 4–6 hours
 - Ongoing CDC latency: sub-second for inserts, updates, and deletes
 
Throughput depends on schema complexity, hardware configuration, and network performance. For best results, deploy Striim in the same Azure region as your Azure Database for MySQL target and allocate sufficient CPU and memory resources.
Support and Enablement
The Microsoft Unlimited Database Migration Program is designed specifically to provide customers direct access to Striim’s field expertise throughout the migration process.
From end-to-end, you can expect:
- Onboarding and ongoing support, including installation kits and walkthroughs.
 - Higher-tier service packages are available as well.
 - Direct escalation paths to Striim for issue resolution and continuous assistance during migration and replication.
 - Professional services and funding flexibility, such as ECIF coverage for partner engagements, cutover or weekend go-live standby, and pre-approved service blocks to simplify SOW approvals.
 
Together, these resources ensure migrations from MySQL to Azure Database for MySQL are fully supported from initial enablement through post-cutover operations, backed by Microsoft and Striim’s combined field teams.
Accelerate Your Migration Journey with Microsoft’s Unlimited Database Migration Program
With Striim and Microsoft, moving from MySQL to Azure Database for MySQL is no longer a complex, high-risk process—it’s an engineered pathway to modernization. Through the Microsoft Unlimited Database Migration Program, you can access partner expertise, joint tooling, and migration credits to move data workloads to Azure quickly and securely at no extra cost to you.
Whether your goal is one-time migration or continuous hybrid replication, Striim’s CDC engine, combined with Azure’s managed MySQL service, ensures every transaction lands with integrity. Start your modernization journey today by connecting with your Microsoft representative or visiting https://go2.striim.com/demo.


