How to Sync MySQL Data to Elasticsearch: 4 Practical Strategies

This article explores four common approaches for synchronizing product data from MySQL to Elasticsearch—including synchronous dual writes, asynchronous messaging, scheduled jobs, and binlog‑based data subscription—detailing their advantages, drawbacks, and implementation considerations for e‑commerce search systems.

macrozheng
macrozheng
macrozheng
How to Sync MySQL Data to Elasticsearch: 4 Practical Strategies

1. Synchronous Dual Write

Write to MySQL and simultaneously write the same data to Elasticsearch. Advantages: simple implementation. Disadvantages: tight coupling, performance impact, and limited extensibility for aggregation or personalized search.

Pros: simple implementation

Cons:

Business coupling – synchronization code embedded in product management

Performance impact – writing to two stores increases latency

Hard to extend – aggregation or personalized queries are difficult

2. Asynchronous Dual Write

Publish product data to a message queue (MQ) when a product is listed, and let a dedicated search service subscribe to these messages to sync data to Elasticsearch. This allows building a wide‑table structure in ES for efficient multi‑dimensional queries, though fallback queries (re‑checks) may still be needed.

Pros:

Decouples product service from synchronization logic

Good real‑time performance – typically seconds

Cons:

Introduces additional components and complexity

3. Scheduled Tasks

Periodically run a job to copy data from MySQL to Elasticsearch. Choosing the right frequency is critical: high frequency can cause resource spikes, while low frequency reduces freshness.

Pros: simple to implement

Cons: real‑time guarantees are weak and it can stress storage resources

4. Data Subscription (Binlog)

Use MySQL binlog‑based subscription frameworks (e.g., Canal) to capture changes. Canal‑adapter provides an ES adapter that can sync data with zero custom code, but complex aggregation still requires custom client logic and possible re‑checks.

Pros:

Minimal intrusion into business code

Better real‑time performance

Common open‑source subscription tools include Canal (Java/Go/PHP/Python/Rust), Maxwell (Java), and Python‑Mysql‑Replication (Python), each offering different client languages, high‑availability support, and message delivery mechanisms.

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

ElasticsearchmysqlMessage Queuedata synchronization
macrozheng
Written by

macrozheng

Dedicated to Java tech sharing and dissecting top open-source projects. Topics include Spring Boot, Spring Cloud, Docker, Kubernetes and more. Author’s GitHub project “mall” has 50K+ stars.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.