{"id":31291,"date":"2026-01-12T07:12:18","date_gmt":"2026-01-12T15:12:18","guid":{"rendered":"https:\/\/www.pingcap.com\/?p=31291"},"modified":"2026-01-15T06:54:44","modified_gmt":"2026-01-15T14:54:44","slug":"mysql-to-tidb-migration-how-bling-scaled-25tb-database","status":"publish","type":"post","link":"https:\/\/www.pingcap.com\/ko\/blog\/mysql-to-tidb-migration-how-bling-scaled-25tb-database\/","title":{"rendered":"How Bling Migrated a Mission-Critical 25TB MySQL Database to TiDB"},"content":{"rendered":"<p>Every fast-growing SaaS platform eventually faces the same reality: scaling a single massive database becomes increasingly risky and expensive.<\/p>\n\n\n\n<p>At <a href=\"https:\/\/www.bling.com.br\/\">Bling<\/a> (Part of the LWSA Group), a leading SaaS ERP platform serving the e-commerce markets in Brazil and Mexico, we hit this ceiling hard. Founded in 2009, Bling powers over 300,000 daily active users and integrates with major players like Amazon, Shopee, and Mercado Livre. With our tables doubling in size annually, simply adding bigger servers was no longer an option. We needed a fundamentally new approach.<\/p>\n\n\n\n<p>This is the story of how we migrated a 25TB mission-critical database to <a href=\"https:\/\/www.pingcap.com\/ko\/tidb\/\">\ud2f0DB<\/a>, and the key lessons we learned along the way.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"The_Breaking_Point\"><\/span><strong>The Breaking Point<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>We were operating at a scale that pushed our traditional architecture to its practical limits for our growth trajectory. Our <a href=\"https:\/\/www.pingcap.com\/ko\/ebook-whitepaper\/scaling-saas-platforms-real-world-strategies-high-growth-resilience\/\">multi-tenant SaaS platform<\/a> ran on AWS, powered by massive MariaDB\/MySQL instances\u2014some with over 190 vCPUs and 1 TB of RAM. Yet, even with this infrastructure, we were facing:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Database size:<\/strong> ~25 TB per instance with tables containing <strong>2\u20135 billion rows<\/strong>.<\/li>\n\n\n\n<li><strong>Replication strain:<\/strong> 15 replicas (8 full, 7 partial) managing peaks of <strong>350,000 QPS<\/strong>.<\/li>\n\n\n\n<li><strong>Operational drag:<\/strong> Routine schema changes on large tables took <strong>over 50 hours<\/strong> to complete, even using &#8220;online&#8221; tools like <em>gh-ost<\/em>.<\/li>\n<\/ul>\n\n\n\n<p>We were experiencing the well-known limitations of a monolithic architecture: centralized write contention, architectural bottlenecks, and increasing costs with diminishing performance gains. At that stage, incremental scaling was no longer sufficient to support our growth.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Evaluating_Alternatives\"><\/span><strong>Evaluating Alternatives<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Once we decided to move, we established a dedicated team to evaluate the best technologies in the MySQL ecosystem.<\/p>\n\n\n\n<p>Amazon Aurora was our first consideration due to its managed nature. However, it was quickly ruled out because it couldn&#8217;t scale writes horizontally, the very bottleneck we needed to solve.<\/p>\n\n\n\n<p>Vitess was a stronger contender. We invested six months exploring it as a sharding layer. While powerful, the &#8220;deal-breakers&#8221; became evident:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>It required disruptive data modeling changes and significant application rewrites.<\/li>\n\n\n\n<li>Its reliance on eventual consistency posed unacceptable risks to our business logic.<\/li>\n\n\n\n<li>There was no safe rollback path to a traditional MySQL setup.<\/li>\n<\/ul>\n\n\n\n<p>The combination of operational complexity and high migration risk meant that Vitess did not align with our goals.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Discovering_TiDB\"><\/span><strong>Discovering TiDB<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Our breakthrough came from an unexpected experiment. On a rainy Saturday afternoon, one of our engineers, frustrated with the complexity and limitations of Vitess, decided to dig deeper into alternative solutions for <a href=\"https:\/\/www.pingcap.com\/ko\/solutions\/modernize-mysql-workloads\/\">scaling MySQL<\/a>. Eventually, he came across TiDB, an open-source, distributed SQL database.<\/p>\n\n\n\n<p>He spun up a local cluster, connected our application, and to our surprise, it worked almost immediately without extensive rewrites. This highlighted TiDB\u2019s key advantages:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>MySQL protocol compatibility:<\/strong> A drop-in replacement for the application layer.<\/li>\n\n\n\n<li><strong><a href=\"https:\/\/www.pingcap.com\/ko\/horizontal-scaling-vs-vertical-scaling\/\">Horizontal scalability<\/a>:<\/strong> Scaling both reads and writes by adding nodes.<\/li>\n\n\n\n<li><strong><a href=\"https:\/\/www.pingcap.com\/ko\/blog\/distributed-transactions-tidb\/\">Strong consistency<\/a>:<\/strong> ACID compliance across distributed nodes.<\/li>\n\n\n\n<li><strong>HTAP capabilities:<\/strong> Handling OLTP and OLAP workloads on the same data.<\/li>\n<\/ul>\n\n\n\n<p>What started as a weekend experiment quickly became a turning point, and our first tests were remarkably promising. TiDB\u2019s compatibility wasn&#8217;t just a convenience; it was <strong>our migration superpower<\/strong>. It allowed us to adopt a modern, cloud-native platform without rewriting our entire application.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Turning_Decision_into_Action\"><\/span><strong>Turning Decision into Action<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>With the results of our initial tests in hand, the next question was inevitable: Should we move to TiDB? The answer came quickly: Yes!<\/p>\n\n\n\n<p>However, what truly solidified our choice wasn\u2019t just the raw technology, but the ecosystem surrounding it. The comprehensive documentation, rich library of tutorials, and the <a href=\"http:\/\/tidb.ai\"><strong>TiDB.ai<\/strong><\/a> assistant significantly accelerated our learning curve. Equally important was the vibrant community and the wealth of case studies from other companies that had solved similar scaling challenges. These factors gave us the confidence that we weren&#8217;t just adopting a database, but joining a mature ecosystem.<\/p>\n\n\n\n<p>We translated this decision into a four-phase execution roadmap designed to minimize risk:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>1. Prepare &amp; Validate<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Provisioned a self-hosted TiDB cluster.<\/li>\n\n\n\n<li>Ran a 3 TB POC with 100+ critical queries to verify compatibility (requiring only minor adaptations).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>2. Bulk Load &amp; Sync<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Executed export\/import via <a href=\"https:\/\/docs.pingcap.com\/tidb\/stable\/dumpling-overview\/\"><strong>Dumpling<\/strong><\/a> \uadf8\ub9ac\uace0 <a href=\"https:\/\/docs.pingcap.com\/tidb\/stable\/tidb-lightning-overview\/\"><strong>TiDB Lightning<\/strong><\/a>.<\/li>\n\n\n\n<li>Established continuous synchronization using <a href=\"https:\/\/docs.pingcap.com\/tidb\/stable\/dm-overview\/\"><strong>TiDB Data Migration (DM)<\/strong><\/a>.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>3. Read-First Rollout<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Introduced TiDB as a read replica to gradually shift production traffic.<\/li>\n\n\n\n<li>Leveraged TiDB Operator on Kubernetes for elastic, zero-downtime scaling.<\/li>\n\n\n\n<li>Decommissioned legacy MySQL replicas as confidence grew.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>4. Write Cutover &amp; Hypercare<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Executed the full write-traffic cutover with a verified rollback plan.<\/li>\n\n\n\n<li>Entered a two-month hypercare period for intensive monitoring, tuning, and stability assurance.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Scaling_Redefined\"><\/span><strong>Scaling Redefined<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>The migration marked a fundamental shift from a &#8220;scale-up&#8221; ceiling to a &#8220;scale-out&#8221; distributed model.<\/p>\n\n\n\n<p>Our legacy setup consisted of a few, massive instances. In contrast, the new TiDB topology is composed of many smaller, distributed nodes, introducing one of TiDB\u2019s core strengths: the separation of compute and storage.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"546\" src=\"https:\/\/static.pingcap.com\/files\/2026\/01\/09135026\/image-1024x546.png\" alt=\"TiDB's architecture broken down by compute, storage, and metadata layers.\" class=\"wp-image-31293\" srcset=\"https:\/\/static.pingcap.com\/files\/2026\/01\/09135026\/image-1024x546.png 1024w, https:\/\/static.pingcap.com\/files\/2026\/01\/09135026\/image-300x160.png 300w, https:\/\/static.pingcap.com\/files\/2026\/01\/09135026\/image-768x409.png 768w, https:\/\/static.pingcap.com\/files\/2026\/01\/09135026\/image-1536x819.png 1536w, https:\/\/static.pingcap.com\/files\/2026\/01\/09135026\/image.png 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><em>Figure 1. TiDB&#8217;s architecture broken down by compute, storage, and metadata layers.<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\ud2f0DB<\/strong> layer acts as a stateless SQL processing engine, responsible for parsing, optimizing, and executing queries.<\/li>\n\n\n\n<li><strong><a href=\"https:\/\/docs.pingcap.com\/tidb\/stable\/tikv-overview\/\">TiKV<\/a><\/strong> provides the distributed key-value storage layer, handling replication, fault tolerance, and transactional consistency across nodes.<\/li>\n\n\n\n<li><strong><a href=\"https:\/\/docs.pingcap.com\/tidb\/stable\/tidb-scheduling\/\">Placement Driver (PD)<\/a><\/strong> acts as the cluster\u2019s control plane, maintaining global metadata, handling leader election, and orchestrating data placement. It continuously monitors the cluster to balance regions and leaders across TiKV nodes, ensuring high availability, fault tolerance, and efficient resource utilization.<\/li>\n<\/ul>\n\n\n\n<p>We deployed TiDB on Kubernetes using <a href=\"https:\/\/docs.pingcap.com\/tidb\/stable\/tidb-operator-overview\/#tidb-operator\"><strong>TiDB Operator<\/strong><\/a>, separating compute and storage across TiDB, TiKV, and PD. A parallel Dumpling + Lightning pipeline imported 25 TB of data into TiDB in <strong>12 hours,<\/strong> landing at <strong>~16 TB<\/strong> logical size thanks to compression, with DM keeping MySQL and TiDB in sync.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Production_Tuning_The_Final_Cutover\"><\/span><strong>Production Tuning &amp; The Final Cutover<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Introducing TiDB into production required a shift in mindset regarding optimization.<\/p>\n\n\n\n<p><strong>Key Technical Adjustments:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Storage I\/O:<\/strong> Unlike MySQL\u2019s reliance on memory buffers, TiDB relies heavily on disk reads, so we tuned our storage volumes for higher throughput and IOPS.<\/li>\n\n\n\n<li><strong>Resource groups:<\/strong> Solved the &#8220;noisy neighbor&#8221; problem by prioritizing critical workloads.<\/li>\n\n\n\n<li><strong>Compatibility tweaks:<\/strong> Applied settings like auto_id_cache=1 for sequential IDs and added explicit ORDER BY clauses to handle distributed non-determinism.<\/li>\n<\/ul>\n\n\n\n<p>Observability tools like <a href=\"https:\/\/docs.pingcap.com\/tidb\/stable\/dashboard-intro\/\"><strong>TiDB Dashboard<\/strong><\/a> \uadf8\ub9ac\uace0 <strong>Grafana<\/strong> were game-changers, allowing us to spot slow queries instantly. They offered deep, real-time insights into cluster health, query behavior, and execution details, enabling our team to quickly identify bottlenecks and performance opportunities.&nbsp;<\/p>\n\n\n\n<p>With these optimizations, queries that previously took <strong>tens of minutes on MySQL <\/strong>were executed<strong> in seconds on TiDB<\/strong> in several cases.<\/p>\n\n\n\n<p>TiDB was initially introduced as a read replica to serve less critical workloads. As confidence grew and more queries were optimized, we progressively shifted more read traffic to TiDB while decommissioning MySQL replicas.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1952\" height=\"2176\" src=\"https:\/\/static.pingcap.com\/files\/2026\/01\/14160907\/Bling-Databases.png\" alt=\"\" class=\"wp-image-31329\" srcset=\"https:\/\/static.pingcap.com\/files\/2026\/01\/14160907\/Bling-Databases.png 1952w, https:\/\/static.pingcap.com\/files\/2026\/01\/14160907\/Bling-Databases-269x300.png 269w, https:\/\/static.pingcap.com\/files\/2026\/01\/14160907\/Bling-Databases-919x1024.png 919w, https:\/\/static.pingcap.com\/files\/2026\/01\/14160907\/Bling-Databases-768x856.png 768w, https:\/\/static.pingcap.com\/files\/2026\/01\/14160907\/Bling-Databases-1378x1536.png 1378w, https:\/\/static.pingcap.com\/files\/2026\/01\/14160907\/Bling-Databases-1837x2048.png 1837w\" sizes=\"auto, (max-width: 1952px) 100vw, 1952px\" \/><figcaption class=\"wp-element-caption\"><em>Figure 2. A diagram representing Bling&#8217;s database migration process.<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<p>The migration project concluded with a critical cutover operation involving over 50 engineers. During a planned five-hour maintenance window, we successfully switched write traffic to TiDB and reversed the replication flow (making MySQL the downstream backup).<\/p>\n\n\n\n<p>Following the switch, we continued to closely monitor the cluster, achieving excellent results during subsequent &#8216;trials by fire.&#8217; Notably, during the Black Friday period\u2014our <strong>highest operational volume of the year<\/strong>\u2014TiDB proved to be incredibly robust and resilient, handling the massive load with stability.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Results_Blings_Migration_by_the_Numbers\"><\/span><strong>Results: Bling\u2019s Migration by the Numbers<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Here\u2019s a quick snapshot of what it took to get our migration over the finish line:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Duration:<\/strong> 10 months end-to-end execution.<\/li>\n\n\n\n<li><strong>Scale:<\/strong> 50 TiKV nodes and 15 TiDB instances at peak.<\/li>\n\n\n\n<li><strong>Effort:<\/strong> Over 300 pull requests and 1,000+ optimized queries.<\/li>\n\n\n\n<li><strong>Data:<\/strong> 25 TB migrated and compressed into 16 TB.<\/li>\n<\/ul>\n\n\n\n<p>TiDB significantly improved our operational efficiency. We can now scale nodes and adjust disk configurations<strong> <\/strong>without service interruptions or downtime, giving us far greater flexibility in production.<\/p>\n\n\n\n<p>Schema changes saw substantial gains: index creation dropped from hours to minutes, and most ALTER operations now complete in seconds, enabling faster and safer database evolution.<\/p>\n\n\n\n<p>TiDB also proved highly resilient under load, sustaining over 50,000 concurrent connections during peak traffic \u2014 a dramatic increase compared to the ~12,000 supported by our previous write database. This removed a recurring source of application instability and strengthened overall platform reliability.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Final_Thoughts\"><\/span><strong>Final Thoughts<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Migrating to TiDB didn\u2019t just modernize our infrastructure; it reshaped how we build and operate Bling at scale. By moving from a monolithic database to a distributed architecture with MySQL compatibility at its core, we unlocked predictable growth, faster operations, and a sustainable path forward for our platform.&nbsp;<\/p>\n\n\n\n<p>Throughout this journey, the TiDB community played a critical role, providing guidance, sharing real-world experiences, and collaborating closely with our team. This engagement was so impactful that one of our engineers was recognized as a <a href=\"https:\/\/www.pingcap.com\/ko\/tidb-champion\/\"><strong>TiDB Champion<\/strong><\/a> for actively contributing across community channels.<\/p>\n\n\n\n<p>Looking ahead, we still have work to do. A small subset of workloads is still in the process of being migrated, and we continue refining our approach to fully integrate these use cases into the new architecture. In parallel, we are actively exploring strategies for automatic compute autoscaling, aiming to dynamically adjust the SQL layer capacity based on real-time workload patterns.<\/p>\n\n\n\n<p>As TiDB continues to evolve, we remain closely aligned with new releases, continuously evaluating enhancements and optimizations that can further strengthen our platform. One development that has particularly caught our attention is <a href=\"https:\/\/www.pingcap.com\/ko\/blog\/introducing-tidb-x-a-new-foundation-distributed-sql-ai-era\/\"><strong>TiDB X<\/strong><\/a>, the latest version of TiDB that promises a significant leap forward in performance, scalability, and architectural capabilities.<\/p>\n\n\n\n<p><em>Ready to stop scaling up and start scaling out?<\/em> <em><a href=\"https:\/\/www.pingcap.com\/ko\/demo\/#meeting\">Book a 30-minute architecture review<\/a> to migrate large MySQL and MariaDB workloads with minimal rewrites, a clear rollback path, and predictable scale-out performance.<\/em><\/p>","protected":false},"excerpt":{"rendered":"<p>Every fast-growing SaaS platform eventually faces the same reality: scaling a single massive database becomes increasingly risky and expensive. At Bling (Part of the LWSA Group), a leading SaaS ERP platform serving the e-commerce markets in Brazil and Mexico, we hit this ceiling hard. Founded in 2009, Bling powers over 300,000 daily active users and [&hellip;]<\/p>\n","protected":false},"author":327,"featured_media":31332,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ub_ctt_via":"","footnotes":""},"categories":[199],"tags":[443,147,14,9,111],"class_list":["post-31291","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-customer-stories","tag-database-migration","tag-distributed-sql","tag-mysql","tag-scalability","tag-tidb"],"acf":[],"featured_image_src":"https:\/\/static.pingcap.com\/files\/2026\/01\/14162757\/tidb_feature_1800x600-1-1.png","author_info":{"display_name":"Cassio Perin","author_link":"https:\/\/www.pingcap.com\/ko\/blog\/author\/cperin\/"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>MySQL to TiDB Migration: How Bling Scaled a 25TB Database<\/title>\n<meta name=\"description\" content=\"Learn how Bling executed a 25TB MySQL to TiDB migration. Discover their 4-phase roadmap to horizontal scaling without app rewrites.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.pingcap.com\/ko\/blog\/mysql-to-tidb-migration-how-bling-scaled-25tb-database\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"MySQL to TiDB Migration: How Bling Scaled a 25TB Database\" \/>\n<meta property=\"og:description\" content=\"Learn how Bling executed a 25TB MySQL to TiDB migration. Discover their 4-phase roadmap to horizontal scaling without app rewrites.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.pingcap.com\/ko\/blog\/mysql-to-tidb-migration-how-bling-scaled-25tb-database\/\" \/>\n<meta property=\"og:site_name\" content=\"TiDB\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/facebook.com\/pingcap2015\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-12T15:12:18+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-01-15T14:54:44+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/static.pingcap.com\/files\/2026\/01\/14065027\/tidb_1200x627-2.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2400\" \/>\n\t<meta property=\"og:image:height\" content=\"1254\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Cassio Perin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/static.pingcap.com\/files\/2026\/01\/14065040\/tidb_twitter_1600x900-3.png\" \/>\n<meta name=\"twitter:creator\" content=\"@PingCAP\" \/>\n<meta name=\"twitter:site\" content=\"@PingCAP\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Cassio Perin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.pingcap.com\/blog\/mysql-to-tidb-migration-how-bling-scaled-25tb-database\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/mysql-to-tidb-migration-how-bling-scaled-25tb-database\/\"},\"author\":{\"name\":\"Cassio Perin\",\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/person\/b5c34ba977faf836d28707894eb59953\"},\"headline\":\"How Bling Migrated a Mission-Critical 25TB MySQL Database to TiDB\",\"datePublished\":\"2026-01-12T15:12:18+00:00\",\"dateModified\":\"2026-01-15T14:54:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/mysql-to-tidb-migration-how-bling-scaled-25tb-database\/\"},\"wordCount\":1560,\"publisher\":{\"@id\":\"https:\/\/www.pingcap.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/mysql-to-tidb-migration-how-bling-scaled-25tb-database\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/static.pingcap.com\/files\/2026\/01\/14162757\/tidb_feature_1800x600-1-1.png\",\"keywords\":[\"Database Migration\",\"Distributed SQL\",\"MySQL\",\"Scalability\",\"TiDB\"],\"articleSection\":[\"Customer Story\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.pingcap.com\/blog\/mysql-to-tidb-migration-how-bling-scaled-25tb-database\/\",\"url\":\"https:\/\/www.pingcap.com\/blog\/mysql-to-tidb-migration-how-bling-scaled-25tb-database\/\",\"name\":\"MySQL to TiDB Migration: How Bling Scaled a 25TB Database\",\"isPartOf\":{\"@id\":\"https:\/\/www.pingcap.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/mysql-to-tidb-migration-how-bling-scaled-25tb-database\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/mysql-to-tidb-migration-how-bling-scaled-25tb-database\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/static.pingcap.com\/files\/2026\/01\/14162757\/tidb_feature_1800x600-1-1.png\",\"datePublished\":\"2026-01-12T15:12:18+00:00\",\"dateModified\":\"2026-01-15T14:54:44+00:00\",\"description\":\"Learn how Bling executed a 25TB MySQL to TiDB migration. Discover their 4-phase roadmap to horizontal scaling without app rewrites.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/mysql-to-tidb-migration-how-bling-scaled-25tb-database\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.pingcap.com\/blog\/mysql-to-tidb-migration-how-bling-scaled-25tb-database\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.pingcap.com\/blog\/mysql-to-tidb-migration-how-bling-scaled-25tb-database\/#primaryimage\",\"url\":\"https:\/\/static.pingcap.com\/files\/2026\/01\/14162757\/tidb_feature_1800x600-1-1.png\",\"contentUrl\":\"https:\/\/static.pingcap.com\/files\/2026\/01\/14162757\/tidb_feature_1800x600-1-1.png\",\"width\":3600,\"height\":1200},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.pingcap.com\/blog\/mysql-to-tidb-migration-how-bling-scaled-25tb-database\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.pingcap.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How Bling Migrated a Mission-Critical 25TB MySQL Database to TiDB\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.pingcap.com\/#website\",\"url\":\"https:\/\/www.pingcap.com\/\",\"name\":\"TiDB\",\"description\":\"TiDB | SQL at Scale\",\"publisher\":{\"@id\":\"https:\/\/www.pingcap.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.pingcap.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.pingcap.com\/#organization\",\"name\":\"PingCAP\",\"url\":\"https:\/\/www.pingcap.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/static.pingcap.com\/files\/2021\/11\/pingcap-logo.png\",\"contentUrl\":\"https:\/\/static.pingcap.com\/files\/2021\/11\/pingcap-logo.png\",\"width\":811,\"height\":232,\"caption\":\"PingCAP\"},\"image\":{\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/facebook.com\/pingcap2015\",\"https:\/\/x.com\/PingCAP\",\"https:\/\/linkedin.com\/company\/pingcap\",\"https:\/\/youtube.com\/channel\/UCuq4puT32DzHKT5rU1IZpIA\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/person\/b5c34ba977faf836d28707894eb59953\",\"name\":\"Cassio Perin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/static.pingcap.com\/files\/2022\/10\/17234942\/avatar.jpg\",\"contentUrl\":\"https:\/\/static.pingcap.com\/files\/2022\/10\/17234942\/avatar.jpg\",\"caption\":\"Cassio Perin\"},\"description\":\"Infrastructure Specialist at Bling\",\"url\":\"https:\/\/www.pingcap.com\/ko\/blog\/author\/cperin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"MySQL to TiDB Migration: How Bling Scaled a 25TB Database","description":"Learn how Bling executed a 25TB MySQL to TiDB migration. Discover their 4-phase roadmap to horizontal scaling without app rewrites.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.pingcap.com\/ko\/blog\/mysql-to-tidb-migration-how-bling-scaled-25tb-database\/","og_locale":"ko_KR","og_type":"article","og_title":"MySQL to TiDB Migration: How Bling Scaled a 25TB Database","og_description":"Learn how Bling executed a 25TB MySQL to TiDB migration. Discover their 4-phase roadmap to horizontal scaling without app rewrites.","og_url":"https:\/\/www.pingcap.com\/ko\/blog\/mysql-to-tidb-migration-how-bling-scaled-25tb-database\/","og_site_name":"TiDB","article_publisher":"https:\/\/facebook.com\/pingcap2015","article_published_time":"2026-01-12T15:12:18+00:00","article_modified_time":"2026-01-15T14:54:44+00:00","og_image":[{"width":2400,"height":1254,"url":"https:\/\/static.pingcap.com\/files\/2026\/01\/14065027\/tidb_1200x627-2.png","type":"image\/png"}],"author":"Cassio Perin","twitter_card":"summary_large_image","twitter_image":"https:\/\/static.pingcap.com\/files\/2026\/01\/14065040\/tidb_twitter_1600x900-3.png","twitter_creator":"@PingCAP","twitter_site":"@PingCAP","twitter_misc":{"Written by":"Cassio Perin","Est. reading time":"8\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.pingcap.com\/blog\/mysql-to-tidb-migration-how-bling-scaled-25tb-database\/#article","isPartOf":{"@id":"https:\/\/www.pingcap.com\/blog\/mysql-to-tidb-migration-how-bling-scaled-25tb-database\/"},"author":{"name":"Cassio Perin","@id":"https:\/\/www.pingcap.com\/#\/schema\/person\/b5c34ba977faf836d28707894eb59953"},"headline":"How Bling Migrated a Mission-Critical 25TB MySQL Database to TiDB","datePublished":"2026-01-12T15:12:18+00:00","dateModified":"2026-01-15T14:54:44+00:00","mainEntityOfPage":{"@id":"https:\/\/www.pingcap.com\/blog\/mysql-to-tidb-migration-how-bling-scaled-25tb-database\/"},"wordCount":1560,"publisher":{"@id":"https:\/\/www.pingcap.com\/#organization"},"image":{"@id":"https:\/\/www.pingcap.com\/blog\/mysql-to-tidb-migration-how-bling-scaled-25tb-database\/#primaryimage"},"thumbnailUrl":"https:\/\/static.pingcap.com\/files\/2026\/01\/14162757\/tidb_feature_1800x600-1-1.png","keywords":["Database Migration","Distributed SQL","MySQL","Scalability","TiDB"],"articleSection":["Customer Story"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/www.pingcap.com\/blog\/mysql-to-tidb-migration-how-bling-scaled-25tb-database\/","url":"https:\/\/www.pingcap.com\/blog\/mysql-to-tidb-migration-how-bling-scaled-25tb-database\/","name":"MySQL to TiDB Migration: How Bling Scaled a 25TB Database","isPartOf":{"@id":"https:\/\/www.pingcap.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.pingcap.com\/blog\/mysql-to-tidb-migration-how-bling-scaled-25tb-database\/#primaryimage"},"image":{"@id":"https:\/\/www.pingcap.com\/blog\/mysql-to-tidb-migration-how-bling-scaled-25tb-database\/#primaryimage"},"thumbnailUrl":"https:\/\/static.pingcap.com\/files\/2026\/01\/14162757\/tidb_feature_1800x600-1-1.png","datePublished":"2026-01-12T15:12:18+00:00","dateModified":"2026-01-15T14:54:44+00:00","description":"Learn how Bling executed a 25TB MySQL to TiDB migration. Discover their 4-phase roadmap to horizontal scaling without app rewrites.","breadcrumb":{"@id":"https:\/\/www.pingcap.com\/blog\/mysql-to-tidb-migration-how-bling-scaled-25tb-database\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.pingcap.com\/blog\/mysql-to-tidb-migration-how-bling-scaled-25tb-database\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.pingcap.com\/blog\/mysql-to-tidb-migration-how-bling-scaled-25tb-database\/#primaryimage","url":"https:\/\/static.pingcap.com\/files\/2026\/01\/14162757\/tidb_feature_1800x600-1-1.png","contentUrl":"https:\/\/static.pingcap.com\/files\/2026\/01\/14162757\/tidb_feature_1800x600-1-1.png","width":3600,"height":1200},{"@type":"BreadcrumbList","@id":"https:\/\/www.pingcap.com\/blog\/mysql-to-tidb-migration-how-bling-scaled-25tb-database\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.pingcap.com\/"},{"@type":"ListItem","position":2,"name":"How Bling Migrated a Mission-Critical 25TB MySQL Database to TiDB"}]},{"@type":"WebSite","@id":"https:\/\/www.pingcap.com\/#website","url":"https:\/\/www.pingcap.com\/","name":"\ud2f0DB","description":"TiDB | SQL at Scale","publisher":{"@id":"https:\/\/www.pingcap.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.pingcap.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/www.pingcap.com\/#organization","name":"PingCAP","url":"https:\/\/www.pingcap.com\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.pingcap.com\/#\/schema\/logo\/image\/","url":"https:\/\/static.pingcap.com\/files\/2021\/11\/pingcap-logo.png","contentUrl":"https:\/\/static.pingcap.com\/files\/2021\/11\/pingcap-logo.png","width":811,"height":232,"caption":"PingCAP"},"image":{"@id":"https:\/\/www.pingcap.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/facebook.com\/pingcap2015","https:\/\/x.com\/PingCAP","https:\/\/linkedin.com\/company\/pingcap","https:\/\/youtube.com\/channel\/UCuq4puT32DzHKT5rU1IZpIA"]},{"@type":"Person","@id":"https:\/\/www.pingcap.com\/#\/schema\/person\/b5c34ba977faf836d28707894eb59953","name":"Cassio Perin","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.pingcap.com\/#\/schema\/person\/image\/","url":"https:\/\/static.pingcap.com\/files\/2022\/10\/17234942\/avatar.jpg","contentUrl":"https:\/\/static.pingcap.com\/files\/2022\/10\/17234942\/avatar.jpg","caption":"Cassio Perin"},"description":"Infrastructure Specialist at Bling","url":"https:\/\/www.pingcap.com\/ko\/blog\/author\/cperin\/"}]}},"grav_blocks":false,"card_markup":"<a class=\"card-resource bg-white\" href=\"https:\/\/www.pingcap.com\/ko\/blog\/mysql-to-tidb-migration-how-bling-scaled-25tb-database\/\"><div class=\"card-resource__image-container\"><img class=\"card-resource__image\" alt=\"tidb_feature_1800x600 (1)\" src=\"https:\/\/static.pingcap.com\/files\/2026\/01\/14162757\/tidb_feature_1800x600-1-1.png\" loading=\"lazy\" width=3600 height=1200 \/><\/div><div class=\"card-resource__content-container\"><div class=\"card-resource__content-head\"><div class=\"card-resource__category\">Customer Story<\/div><\/div><h5 class=\"card-resource__title\">How Bling Migrated a Mission-Critical 25TB MySQL Database to TiDB<\/h5><\/div><\/a>","_links":{"self":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/posts\/31291","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/users\/327"}],"replies":[{"embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/comments?post=31291"}],"version-history":[{"count":17,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/posts\/31291\/revisions"}],"predecessor-version":[{"id":31331,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/posts\/31291\/revisions\/31331"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/media\/31332"}],"wp:attachment":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/media?parent=31291"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/categories?post=31291"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/tags?post=31291"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}