{"id":4386,"date":"2017-12-22T08:24:26","date_gmt":"2017-12-22T16:24:26","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=4386"},"modified":"2025-06-13T20:46:34","modified_gmt":"2025-06-14T03:46:34","slug":"deep-dive-cross-data-center-replication-xdcr","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/deep-dive-cross-data-center-replication-xdcr\/","title":{"rendered":"Deep Dive on Cross Data Center Replication (XDCR)"},"content":{"rendered":"<p><span style=\"font-weight: 400\">We saw in a <a href=\"https:\/\/www.couchbase.com\/blog\/replicate-nosql-data-between-datacenters-with-couchbase-xdcr\/\">previous post<\/a> how easy is to set up a Cross Data Center Replication (<a href=\"https:\/\/www.couchbase.com\/products\/xdcr\/\">XDCR<\/a>), today let\u2019s go a little bit deeper to understand what makes XDCR such a great feature.<\/span><\/p>\n<p><span style=\"font-weight: 400\">First of all, XDCR allows you to replicate data between different-sized clusters, which makes it an excellent option for<\/span><a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/current\/ha-dr\/ha-dr-intro.html\"> <span style=\"font-weight: 400\">disaster and recovery<\/span><\/a><span style=\"font-weight: 400\"> plan. Apart from that, it is a simple yet powerful way to bring data closer to your users.<\/span><\/p>\n<p><span style=\"font-weight: 400\">The replication is made from Memory-to-Memory. Thus all writes are saved in the memory first and then put in a replication queue, which sends it over the network through multiple threads. So, the whole performance is only limited by your network speed.<\/span><\/p>\n<p><span style=\"font-weight: 400\">It is also topology-aware, and therefore whenever you add or remove nodes from the source cluster, no action needs to be taken on the destination cluster. It will re-establish the connection and handle everything automatically.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Moreover, it also provides rack zone awareness, which helps to protect against multi-node failure events by separating active data and its replicas across &#8220;groups&#8221; which can then be mapped such that they occupy different racks, zones, or VM hosts.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Replications are made on the bucket level (between buckets of two or more clusters), and can be configured as follows.<\/span><\/p>\n<ul>\n<li><b>Unidirectional:<\/b><span style=\"font-weight: 400\"> Only the data written in one of the clusters is replicated, it is used when you want to configure a standby cluster for example.<\/span><\/li>\n<li><b>Bidirectional:<\/b><span style=\"font-weight: 400\"> (also known as active-to-active deployment) where both clusters can write data and all changes are synchronized between them. In summary, a bidirectional mapping is just two unidirectional replications pointing to each other.<\/span><\/li>\n<li><b>Hybrid:<\/b><span style=\"font-weight: 400\"> A combination of Bidirectional and Unidirectional topologies.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400\">Thanks to DCP, you can also pause the replication at any time, and once you resume it, the recovery starts at the most recent checkpoint.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-4388\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/12\/Screen-Shot-2017-12-18-at-11.51.21-AM-300x121.png\" alt=\"\" width=\"899\" height=\"363\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/Screen-Shot-2017-12-18-at-11.51.21-AM-300x121.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/Screen-Shot-2017-12-18-at-11.51.21-AM-1024x413.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/Screen-Shot-2017-12-18-at-11.51.21-AM-768x310.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/Screen-Shot-2017-12-18-at-11.51.21-AM-1536x619.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/Screen-Shot-2017-12-18-at-11.51.21-AM-2048x825.png 2048w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/Screen-Shot-2017-12-18-at-11.51.21-AM-20x8.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/Screen-Shot-2017-12-18-at-11.51.21-AM-1320x532.png 1320w\" sizes=\"auto, (max-width: 899px) 100vw, 899px\" \/><\/p>\n<h3><span style=\"font-weight: 400\">Database Change Protocol<\/span><\/h3>\n<p><span style=\"font-weight: 400\">Database Change Protocol (DCP) is a high-performance streaming protocol we use internally to communicate the state of data using an ordered changelog. It is robust and resilient in the face of transitory errors, for example, if the communication is interrupted, DCP is capable of resuming from the exact point of the last successful update once the connectivity is back.<\/span><\/p>\n<p><span style=\"font-weight: 400\">It is also optimized to send only necessary data. For example, if there are several changes in a document, just the most recent version is marked to be replicated.<\/span><\/p>\n<p><span style=\"font-weight: 400\">XDCR relies on DCP to propagate changes. This way it guarantees the same document will be replicated among all clusters regardless of connectivity problems.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">Let\u2019s also highlight another two exciting features of XDCR: Conflict Resolution and Data Filtering:<\/span><\/p>\n<h3><b>Conflict Resolution<\/b><\/h3>\n<p><span style=\"font-weight: 400\">A conflict is where the same document is modified in two different locations before it has been synchronized between the locations. To maintain consistency, one version has to be chosen as the &#8216;correct&#8217; version. Conflict resolution provides a method to consistently and deterministically select which version of the document to use.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Couchbase\u2019s conflict resolution is set during the bucket creation and can\u2019t be changed later. Currently, two types of conflict resolutions are supported: Timestamp and Sequence Number.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-4387 \" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/12\/Screen-Shot-2017-12-18-at-5.39.52-PM-832x1024.png\" alt=\"\" width=\"551\" height=\"678\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/Screen-Shot-2017-12-18-at-5.39.52-PM-832x1024.png 832w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/Screen-Shot-2017-12-18-at-5.39.52-PM-244x300.png 244w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/Screen-Shot-2017-12-18-at-5.39.52-PM-768x945.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/Screen-Shot-2017-12-18-at-5.39.52-PM-300x369.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/Screen-Shot-2017-12-18-at-5.39.52-PM-16x20.png 16w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/Screen-Shot-2017-12-18-at-5.39.52-PM.png 1055w\" sizes=\"auto, (max-width: 551px) 100vw, 551px\" \/><\/p>\n<p>&nbsp;<\/p>\n<h4><b>Sequence Number<\/b><\/h4>\n<p><span style=\"font-weight: 400\">After every mutation in a document we increase a counter called <\/span><b>revision number<\/b><span style=\"font-weight: 400\">, so whenever there is a conflict between two documents, the one with the highest revision number will take precedence on both clusters.<\/span><\/p>\n<h4><b>Timestamp<\/b><\/h4>\n<p><span style=\"font-weight: 400\">Timestamp-based Conflict Resolution (TCR) is the most commonly supported conflict resolution mechanism in databases, TCR resolves conflicts by selecting the document with the most recent timestamp. To be able to perform this effectively it is essential that the time stamps created by each server are closely aligned.<\/span><\/p>\n<p><span style=\"font-weight: 400\">However, TCR might increase data loss, as it ignores how many times a document has been updated, and if one of the server\u2019s clock is fast\/slow you will end up with a messed up conflict resolution. That is why the default option in Couchbase is \u201cSequence Number\u201d.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h3><b>Data Filtering<\/b><\/h3>\n<p><span style=\"font-weight: 400\">By default, all documents within a target bucket will be replicated, but since Couchbase 6.5 you can use <a href=\"https:\/\/docs.couchbase.com\/server\/6.0\/learn\/clusters-and-availability\/xdcr-filtering.html\">Filtering Expressions<\/a> to filter which data you want to replicate.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-7436\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/12\/Screen-Shot-2019-08-07-at-3.28.31-PM.png\" alt=\"\" width=\"528\" height=\"786\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/Screen-Shot-2019-08-07-at-3.28.31-PM.png 528w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/Screen-Shot-2019-08-07-at-3.28.31-PM-202x300.png 202w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/Screen-Shot-2019-08-07-at-3.28.31-PM-300x447.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/Screen-Shot-2019-08-07-at-3.28.31-PM-13x20.png 13w\" sizes=\"auto, (max-width: 528px) 100vw, 528px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\"> Advanced filtering supports various language constructs to build filters such as regex, arithmetic, logical and relational operators, keywords, expressions, number Functions, date functions, negative lookahead, etc. You can apply those features on the document&#8217;s keys, values, metadata, and CAS. Just like predicate of N1QL queries, expressions can be constructed using the supported language constructs.<\/span><\/p>\n<p>In the <strong>Deletion Filters<\/strong> session, you can also choose to not replicate delete operations, document expirations <span style=\"font-weight: 400\">or remove <a href=\"https:\/\/www.couchbase.com\/blog\/how-to-manage-ttl-with-couchbase-n1ql\/\">TTL<\/a> and store it for archival purposes.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">The filters can also be edited on the fly and the replication will continue without any pause\/resume.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/08\/adv4-1-300x207.png\" width=\"436\" height=\"301\" \/><\/p>\n<p><span style=\"font-weight: 400\">XDCR, by default, will not flush any buckets when filters are modified. This step should be manually executed by the administrator if necessary.<\/span><\/p>\n<h3><b>Conclusion<\/b><\/h3>\n<p><span style=\"font-weight: 400\">If you need a Disaster &amp; Recovery plan or just would like to bring your data closer to the user, Cross Data Center Replication (XDCR) is a feature you should consider using, It is simple to set up, requires almost no maintenance and has been heavily tested in several high load use cases like Amadeus, eBay and Viber.<\/span><\/p>\n<p><span style=\"font-weight: 400\">For more information on XDCR with Couchbase, check out the <\/span><a href=\"https:\/\/www.couchbase.com\/developers\/\"><span style=\"font-weight: 400\">Couchbase Developer Portal<\/span><\/a><span style=\"font-weight: 400\"> or tweet me at <a href=\"https:\/\/twitter.com\/deniswsrosa\">@deniswsrosa<\/a><\/span><\/p>\n<p>&nbsp;<\/p>\n<p><strong>Updated on 08\/08\/19 &#8211; <\/strong>Adding new XDCR features for Couchbase 6.5<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>We saw in a previous post how easy is to set up a Cross Data Center Replication (XDCR), today let\u2019s go a little bit deeper to understand what makes XDCR such a great feature. First of all, XDCR allows you [&hellip;]<\/p>\n","protected":false},"author":8754,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1821,9415],"tags":[],"ppma_author":[9059],"class_list":["post-4386","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-architecture","category-xdcr"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.7.1 (Yoast SEO v25.7) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Deep Dive on Cross Data Center Replication - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"What makes XDCR such a great feature. If you need a Disaster &amp; Recovery plan or like to bring data closer to user, XDCR is a feature you must consider.\" \/>\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.couchbase.com\/blog\/deep-dive-cross-data-center-replication-xdcr\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Deep Dive on Cross Data Center Replication (XDCR)\" \/>\n<meta property=\"og:description\" content=\"What makes XDCR such a great feature. If you need a Disaster &amp; Recovery plan or like to bring data closer to user, XDCR is a feature you must consider.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/deep-dive-cross-data-center-replication-xdcr\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-12-22T16:24:26+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T03:46:34+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/Screen-Shot-2017-12-18-at-11.51.21-AM.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2268\" \/>\n\t<meta property=\"og:image:height\" content=\"914\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Denis Rosa, Developer Advocate, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@deniswsrosa\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Denis Rosa, Developer Advocate, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/deep-dive-cross-data-center-replication-xdcr\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/deep-dive-cross-data-center-replication-xdcr\/\"},\"author\":{\"name\":\"Denis Rosa, Developer Advocate, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/fe3c5273e805e72a5294611a48f62257\"},\"headline\":\"Deep Dive on Cross Data Center Replication (XDCR)\",\"datePublished\":\"2017-12-22T16:24:26+00:00\",\"dateModified\":\"2025-06-14T03:46:34+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/deep-dive-cross-data-center-replication-xdcr\/\"},\"wordCount\":898,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/deep-dive-cross-data-center-replication-xdcr\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Couchbase Architecture\",\"Cross Data Center Replication (XDCR)\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/deep-dive-cross-data-center-replication-xdcr\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/deep-dive-cross-data-center-replication-xdcr\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/deep-dive-cross-data-center-replication-xdcr\/\",\"name\":\"Deep Dive on Cross Data Center Replication - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/deep-dive-cross-data-center-replication-xdcr\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/deep-dive-cross-data-center-replication-xdcr\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2017-12-22T16:24:26+00:00\",\"dateModified\":\"2025-06-14T03:46:34+00:00\",\"description\":\"What makes XDCR such a great feature. If you need a Disaster & Recovery plan or like to bring data closer to user, XDCR is a feature you must consider.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/deep-dive-cross-data-center-replication-xdcr\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/deep-dive-cross-data-center-replication-xdcr\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/deep-dive-cross-data-center-replication-xdcr\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/deep-dive-cross-data-center-replication-xdcr\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Deep Dive on Cross Data Center Replication (XDCR)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/fe3c5273e805e72a5294611a48f62257\",\"name\":\"Denis Rosa, Developer Advocate, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/be0716f6199cfb09417c92cf7a8fa8d6\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f8d1f5c13115122cab89d0f229b904480bfe20d3dfbb093fe9734cda5235d419?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f8d1f5c13115122cab89d0f229b904480bfe20d3dfbb093fe9734cda5235d419?s=96&d=mm&r=g\",\"caption\":\"Denis Rosa, Developer Advocate, Couchbase\"},\"description\":\"Denis Rosa is a Developer Advocate for Couchbase and lives in Munich - Germany. He has a solid experience as a software engineer and speaks fluently Java, Python, Scala and Javascript. Denis likes to write about search, Big Data, AI, Microservices and everything else that would help developers to make a beautiful, faster, stable and scalable app.\",\"sameAs\":[\"https:\/\/x.com\/deniswsrosa\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/author\/denis-rosa\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Deep Dive on Cross Data Center Replication - The Couchbase Blog","description":"What makes XDCR such a great feature. If you need a Disaster & Recovery plan or like to bring data closer to user, XDCR is a feature you must consider.","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.couchbase.com\/blog\/deep-dive-cross-data-center-replication-xdcr\/","og_locale":"en_US","og_type":"article","og_title":"Deep Dive on Cross Data Center Replication (XDCR)","og_description":"What makes XDCR such a great feature. If you need a Disaster & Recovery plan or like to bring data closer to user, XDCR is a feature you must consider.","og_url":"https:\/\/www.couchbase.com\/blog\/deep-dive-cross-data-center-replication-xdcr\/","og_site_name":"The Couchbase Blog","article_published_time":"2017-12-22T16:24:26+00:00","article_modified_time":"2025-06-14T03:46:34+00:00","og_image":[{"width":2268,"height":914,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/Screen-Shot-2017-12-18-at-11.51.21-AM.png","type":"image\/png"}],"author":"Denis Rosa, Developer Advocate, Couchbase","twitter_card":"summary_large_image","twitter_creator":"@deniswsrosa","twitter_misc":{"Written by":"Denis Rosa, Developer Advocate, Couchbase","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/deep-dive-cross-data-center-replication-xdcr\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/deep-dive-cross-data-center-replication-xdcr\/"},"author":{"name":"Denis Rosa, Developer Advocate, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/fe3c5273e805e72a5294611a48f62257"},"headline":"Deep Dive on Cross Data Center Replication (XDCR)","datePublished":"2017-12-22T16:24:26+00:00","dateModified":"2025-06-14T03:46:34+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/deep-dive-cross-data-center-replication-xdcr\/"},"wordCount":898,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/deep-dive-cross-data-center-replication-xdcr\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Couchbase Architecture","Cross Data Center Replication (XDCR)"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/deep-dive-cross-data-center-replication-xdcr\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/deep-dive-cross-data-center-replication-xdcr\/","url":"https:\/\/www.couchbase.com\/blog\/deep-dive-cross-data-center-replication-xdcr\/","name":"Deep Dive on Cross Data Center Replication - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/deep-dive-cross-data-center-replication-xdcr\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/deep-dive-cross-data-center-replication-xdcr\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2017-12-22T16:24:26+00:00","dateModified":"2025-06-14T03:46:34+00:00","description":"What makes XDCR such a great feature. If you need a Disaster & Recovery plan or like to bring data closer to user, XDCR is a feature you must consider.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/deep-dive-cross-data-center-replication-xdcr\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/deep-dive-cross-data-center-replication-xdcr\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/deep-dive-cross-data-center-replication-xdcr\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/deep-dive-cross-data-center-replication-xdcr\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Deep Dive on Cross Data Center Replication (XDCR)"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"The Couchbase Blog","description":"Couchbase, the NoSQL Database","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/fe3c5273e805e72a5294611a48f62257","name":"Denis Rosa, Developer Advocate, Couchbase","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/be0716f6199cfb09417c92cf7a8fa8d6","url":"https:\/\/secure.gravatar.com\/avatar\/f8d1f5c13115122cab89d0f229b904480bfe20d3dfbb093fe9734cda5235d419?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f8d1f5c13115122cab89d0f229b904480bfe20d3dfbb093fe9734cda5235d419?s=96&d=mm&r=g","caption":"Denis Rosa, Developer Advocate, Couchbase"},"description":"Denis Rosa is a Developer Advocate for Couchbase and lives in Munich - Germany. He has a solid experience as a software engineer and speaks fluently Java, Python, Scala and Javascript. Denis likes to write about search, Big Data, AI, Microservices and everything else that would help developers to make a beautiful, faster, stable and scalable app.","sameAs":["https:\/\/x.com\/deniswsrosa"],"url":"https:\/\/www.couchbase.com\/blog\/author\/denis-rosa\/"}]}},"authors":[{"term_id":9059,"user_id":8754,"is_guest":0,"slug":"denis-rosa","display_name":"Denis Rosa, Developer Advocate, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/f8d1f5c13115122cab89d0f229b904480bfe20d3dfbb093fe9734cda5235d419?s=96&d=mm&r=g","author_category":"","last_name":"Rosa, Developer Advocate, Couchbase","first_name":"Denis","job_title":"","user_url":"","description":"Denis Rosa is a Developer Advocate for Couchbase and lives in Munich - Germany. He has a solid experience as a software engineer and speaks fluently Java, Python, Scala and Javascript. Denis likes to write about search, Big Data, AI, Microservices and everything else that would help developers to make a beautiful, faster, stable and scalable app."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/4386","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/users\/8754"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=4386"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/4386\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=4386"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=4386"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=4386"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=4386"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}