{"id":4318,"date":"2017-12-14T07:00:08","date_gmt":"2017-12-14T15:00:08","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=4318"},"modified":"2025-06-13T20:46:35","modified_gmt":"2025-06-14T03:46:35","slug":"replicate-nosql-data-between-datacenters-with-couchbase-xdcr","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/replicate-nosql-data-between-datacenters-with-couchbase-xdcr\/","title":{"rendered":"Replicate NoSQL Data between Data Centers with Couchbase XDCR"},"content":{"rendered":"<p>When it comes to databases, data safety and performance are incredibly important. As a business you want to make sure you have disaster recovery in place and you want to make sure your database is not a bottleneck on the rest of your applications and business needs.<\/p>\n<p>When it comes to performance, it makes sense to have users access applications and databases that are nearest to their location. In this scenario, how do you make sure the data exists where it needs to?<\/p>\n<p><a href=\"https:\/\/www.couchbase.com\" target=\"_blank\" rel=\"noopener\">Couchbase Server<\/a> is capable of replicating data between clusters, making a great disaster recovery scenario and aligning better for data locality. This is done through what&#8217;s called cross datacenter replication (XDCR) and it is actually quite easy to manage.<\/p>\n<p><!--more--><\/p>\n<p>For the sake of this example, we&#8217;re going to be using <a href=\"https:\/\/www.docker.com\/\" target=\"_blank\" rel=\"noopener\">Docker<\/a>. We need to be able to create multiple clusters of Couchbase, whether that be locally or remotely on a service like AWS. Since this is only an example, Docker made the most sense.<\/p>\n<h2>Creating Nodes of Couchbase Server as Docker Containers<\/h2>\n<p>To be minimalistic, we&#8217;re going to work towards creating two Couchbase Server clusters with two nodes in each cluster. This means we&#8217;re going to need four total containers.<\/p>\n<p>From the Docker CLI, execute the following commands:<\/p>\n<pre class=\"lang:default decode:true \">docker run -d -p 7091:8091 --name couchbase1 couchbase\/server\r\ndocker run -d -p 8091:8091 --name couchbase2 couchbase\/server\r\ndocker run -d -p 10091:8091 --name couchbase3 couchbase\/server\r\ndocker run -d -p 11091:8091 --name couchbase4 couchbase\/server<\/pre>\n<p>The above commands will use the official Couchbase Docker image found in the <a href=\"https:\/\/hub.docker.com\/r\/couchbase\/server\/\" target=\"_blank\" rel=\"noopener\">Docker Hub<\/a>.<\/p>\n<p>Notice that each container will have a unique name and a different port mapping. We&#8217;re only mapping the admin port to give us something to work with from the host machine. The containers will be able to communicate along the other ports as long as they&#8217;re within the same container network, which they are.<\/p>\n<p>For more information on using Couchbase with Docker, check out a previous article that I wrote titled,\u00a0<a href=\"https:\/\/www.thepolyglotdeveloper.com\/2017\/04\/using-couchbase-docker-deploying-containerized-nosql-cluster\/\" target=\"_blank\" rel=\"noopener\">Using Couchbase with Docker and Deploying a Containerized NoSQL Cluster<\/a>.<\/p>\n<p>Now we need to create two new clusters and add nodes to them.<\/p>\n<h2>Clustering the Nodes to Mimic Multiple Datacenters<\/h2>\n<p>Let&#8217;s start by creating two new clusters. From the web browser, navigate to https:\/\/localhost:7091 and choose to create a new cluster. Follow the wizard until you&#8217;re brought to the administrative dashboard.<\/p>\n<p>Now navigate to https:\/\/localhost:10091 from the web browser and choose to set up another new cluster. Again, follow the wizard until you&#8217;re brought to the administrative dashboard.<\/p>\n<p>At this point in time, you have two clusters both containing a single node.<\/p>\n<p>From the web browser, navigate to https:\/\/localhost:8091, but this time choose to join an existing cluster. Because we&#8217;re using Docker, you cannot use localhost when providing a host. Instead you need to use the host of your container.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-4319 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/12\/couchbase-docker-host-ip.png\" alt=\"Couchbase Docker Container IP\" width=\"1100\" height=\"348\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/couchbase-docker-host-ip.png 1100w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/couchbase-docker-host-ip-300x95.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/couchbase-docker-host-ip-1024x324.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/couchbase-docker-host-ip-768x243.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/couchbase-docker-host-ip-20x6.png 20w\" sizes=\"auto, (max-width: 1100px) 100vw, 1100px\" \/><\/p>\n<p>Typically, your IP would be something like 172.17.0.X, but it may vary by platform. Just make sure to join whatever cluster you created at https:\/\/localhost:7091.<\/p>\n<p>To add your final node to the last remaining cluster, follow the same steps. Navigate to https:\/\/localhost:11091 from your web browser and join the cluster found at https:\/\/localhost:10091, remembering to use the container IP, not the host IP.<\/p>\n<p>With two clusters available, we can worry about replicating between them with XDCR.<\/p>\n<h2>Configuring XDCR with Bucket Replication<\/h2>\n<p>The goal now is to replicate between our two data centers. Remember, we&#8217;re replicating between clusters, not nodes. Node replication within the cluster is a similar concept, but we&#8217;re interested in replicating outside the cluster.<\/p>\n<p>Pick a cluster and navigate to the XCDR section of the administrative dashboard.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-4320 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/12\/couchbase-xdcr-p1.png\" alt=\"Couchbase XDCR\" width=\"1100\" height=\"322\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/couchbase-xdcr-p1.png 1100w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/couchbase-xdcr-p1-300x88.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/couchbase-xdcr-p1-1024x300.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/couchbase-xdcr-p1-768x225.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/couchbase-xdcr-p1-20x6.png 20w\" sizes=\"auto, (max-width: 1100px) 100vw, 1100px\" \/><\/p>\n<p>Here you&#8217;ll be able to add remote clusters and define Bucket replications. Choose\u00a0<strong>Add Remote Cluster<\/strong> and enter the details of the cluster that you&#8217;re not currently exploring. So in my case, I&#8217;m working with my\u00a0<strong>USA-SF<\/strong> cluster and I want to add my remote\u00a0<strong>USA-NYC<\/strong> cluster. Remember, use the container IP, not localhost or your host IP.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-4321 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/12\/couchbase-xdcr-p2.png\" alt=\"Couchbase XDCR\" width=\"1100\" height=\"406\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/couchbase-xdcr-p2.png 1100w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/couchbase-xdcr-p2-300x111.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/couchbase-xdcr-p2-1024x378.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/couchbase-xdcr-p2-768x283.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/couchbase-xdcr-p2-20x7.png 20w\" sizes=\"auto, (max-width: 1100px) 100vw, 1100px\" \/><\/p>\n<p>After adding the remote cluster, you&#8217;ll still need to define what you want to replicate and to where. This is a one directional replication.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-4322 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/12\/couchbase-xdcr-p3.png\" alt=\"Couchbase XDCR\" width=\"1100\" height=\"373\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/couchbase-xdcr-p3.png 1100w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/couchbase-xdcr-p3-300x102.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/couchbase-xdcr-p3-1024x347.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/couchbase-xdcr-p3-768x260.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/couchbase-xdcr-p3-20x7.png 20w\" sizes=\"auto, (max-width: 1100px) 100vw, 1100px\" \/><\/p>\n<p>The Bucket that you wish to replicate must exist on both clusters. If the starting Bucket doesn&#8217;t exist on your destination cluster, go ahead and create it.<\/p>\n<p>Once the replication is added, any document change you make on the origin cluster, let&#8217;s say\u00a0<strong>USA-SF<\/strong>, it will show up on the remote cluster, let&#8217;s say\u00a0<strong>USA-NYC<\/strong>. If you wish to have changes go in the other direction, follow the same steps on the other cluster or any other cluster you wish to add into the mix.<\/p>\n<h2>Conclusion<\/h2>\n<p>You just saw how to create multiple clusters of <a href=\"https:\/\/www.couchbase.com\" target=\"_blank\" rel=\"noopener\">Couchbase<\/a> using Docker and enabling cross datacenter replication (XDCR) on them. By having XDCR in place, you now have a better shot at disaster recovery, in addition to data locality based on user region.<\/p>\n<p>For more information on XDCR with Couchbase, check out the <a href=\"https:\/\/developer.couchbase.com\" target=\"_blank\" rel=\"noopener\">Couchbase Developer Portal<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>When it comes to databases, data safety and performance are incredibly important. As a business you want to make sure you have disaster recovery in place and you want to make sure your database is not a bottleneck on the [&hellip;]<\/p>\n","protected":false},"author":63,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1815,1816,9415],"tags":[1562],"ppma_author":[9032],"class_list":["post-4318","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials","category-couchbase-server","category-xdcr","tag-replication"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.9 (Yoast SEO v25.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Replicate NoSQL Data Between Datacenters with Couchbase XDCR<\/title>\n<meta name=\"description\" content=\"Learn how to replicate NoSQL data between clusters or datacenters with Couchbase Server&#039;s cross datacenter replication (XDCR) tooling.\" \/>\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\/replicate-nosql-data-between-datacenters-with-couchbase-xdcr\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Replicate NoSQL Data between Data Centers with Couchbase XDCR\" \/>\n<meta property=\"og:description\" content=\"Learn how to replicate NoSQL data between clusters or datacenters with Couchbase Server&#039;s cross datacenter replication (XDCR) tooling.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/replicate-nosql-data-between-datacenters-with-couchbase-xdcr\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/thepolyglotdeveloper\" \/>\n<meta property=\"article:published_time\" content=\"2017-12-14T15:00:08+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T03:46:35+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/couchbase-docker-host-ip.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1100\" \/>\n\t<meta property=\"og:image:height\" content=\"348\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Nic Raboy, Developer Advocate, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@nraboy\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Nic Raboy, Developer Advocate, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/replicate-nosql-data-between-datacenters-with-couchbase-xdcr\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/replicate-nosql-data-between-datacenters-with-couchbase-xdcr\/\"},\"author\":{\"name\":\"Nic Raboy, Developer Advocate, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1\"},\"headline\":\"Replicate NoSQL Data between Data Centers with Couchbase XDCR\",\"datePublished\":\"2017-12-14T15:00:08+00:00\",\"dateModified\":\"2025-06-14T03:46:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/replicate-nosql-data-between-datacenters-with-couchbase-xdcr\/\"},\"wordCount\":824,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/replicate-nosql-data-between-datacenters-with-couchbase-xdcr\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"replication\"],\"articleSection\":[\"Best Practices and Tutorials\",\"Couchbase Server\",\"Cross Data Center Replication (XDCR)\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/replicate-nosql-data-between-datacenters-with-couchbase-xdcr\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/replicate-nosql-data-between-datacenters-with-couchbase-xdcr\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/replicate-nosql-data-between-datacenters-with-couchbase-xdcr\/\",\"name\":\"Replicate NoSQL Data Between Datacenters with Couchbase XDCR\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/replicate-nosql-data-between-datacenters-with-couchbase-xdcr\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/replicate-nosql-data-between-datacenters-with-couchbase-xdcr\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2017-12-14T15:00:08+00:00\",\"dateModified\":\"2025-06-14T03:46:35+00:00\",\"description\":\"Learn how to replicate NoSQL data between clusters or datacenters with Couchbase Server's cross datacenter replication (XDCR) tooling.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/replicate-nosql-data-between-datacenters-with-couchbase-xdcr\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/replicate-nosql-data-between-datacenters-with-couchbase-xdcr\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/replicate-nosql-data-between-datacenters-with-couchbase-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\/replicate-nosql-data-between-datacenters-with-couchbase-xdcr\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Replicate NoSQL Data between Data Centers with Couchbase 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\/bb545ebe83bb2d12f91095811d0a72e1\",\"name\":\"Nic Raboy, Developer Advocate, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/8863514d8bed0cf6080f23db40e00354\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g\",\"caption\":\"Nic Raboy, Developer Advocate, Couchbase\"},\"description\":\"Nic Raboy is an advocate of modern web and mobile development technologies. He has experience in Java, JavaScript, Golang and a variety of frameworks such as Angular, NativeScript, and Apache Cordova. Nic writes about his development experiences related to making web and mobile development easier to understand.\",\"sameAs\":[\"https:\/\/www.thepolyglotdeveloper.com\",\"https:\/\/www.facebook.com\/thepolyglotdeveloper\",\"https:\/\/x.com\/nraboy\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/author\/nic-raboy-2\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Replicate NoSQL Data Between Datacenters with Couchbase XDCR","description":"Learn how to replicate NoSQL data between clusters or datacenters with Couchbase Server's cross datacenter replication (XDCR) tooling.","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\/replicate-nosql-data-between-datacenters-with-couchbase-xdcr\/","og_locale":"en_US","og_type":"article","og_title":"Replicate NoSQL Data between Data Centers with Couchbase XDCR","og_description":"Learn how to replicate NoSQL data between clusters or datacenters with Couchbase Server's cross datacenter replication (XDCR) tooling.","og_url":"https:\/\/www.couchbase.com\/blog\/replicate-nosql-data-between-datacenters-with-couchbase-xdcr\/","og_site_name":"The Couchbase Blog","article_author":"https:\/\/www.facebook.com\/thepolyglotdeveloper","article_published_time":"2017-12-14T15:00:08+00:00","article_modified_time":"2025-06-14T03:46:35+00:00","og_image":[{"width":1100,"height":348,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/couchbase-docker-host-ip.png","type":"image\/png"}],"author":"Nic Raboy, Developer Advocate, Couchbase","twitter_card":"summary_large_image","twitter_creator":"@nraboy","twitter_misc":{"Written by":"Nic Raboy, Developer Advocate, Couchbase","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/replicate-nosql-data-between-datacenters-with-couchbase-xdcr\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/replicate-nosql-data-between-datacenters-with-couchbase-xdcr\/"},"author":{"name":"Nic Raboy, Developer Advocate, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1"},"headline":"Replicate NoSQL Data between Data Centers with Couchbase XDCR","datePublished":"2017-12-14T15:00:08+00:00","dateModified":"2025-06-14T03:46:35+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/replicate-nosql-data-between-datacenters-with-couchbase-xdcr\/"},"wordCount":824,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/replicate-nosql-data-between-datacenters-with-couchbase-xdcr\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["replication"],"articleSection":["Best Practices and Tutorials","Couchbase Server","Cross Data Center Replication (XDCR)"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/replicate-nosql-data-between-datacenters-with-couchbase-xdcr\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/replicate-nosql-data-between-datacenters-with-couchbase-xdcr\/","url":"https:\/\/www.couchbase.com\/blog\/replicate-nosql-data-between-datacenters-with-couchbase-xdcr\/","name":"Replicate NoSQL Data Between Datacenters with Couchbase XDCR","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/replicate-nosql-data-between-datacenters-with-couchbase-xdcr\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/replicate-nosql-data-between-datacenters-with-couchbase-xdcr\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2017-12-14T15:00:08+00:00","dateModified":"2025-06-14T03:46:35+00:00","description":"Learn how to replicate NoSQL data between clusters or datacenters with Couchbase Server's cross datacenter replication (XDCR) tooling.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/replicate-nosql-data-between-datacenters-with-couchbase-xdcr\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/replicate-nosql-data-between-datacenters-with-couchbase-xdcr\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/replicate-nosql-data-between-datacenters-with-couchbase-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\/replicate-nosql-data-between-datacenters-with-couchbase-xdcr\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Replicate NoSQL Data between Data Centers with Couchbase 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\/bb545ebe83bb2d12f91095811d0a72e1","name":"Nic Raboy, Developer Advocate, Couchbase","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/8863514d8bed0cf6080f23db40e00354","url":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","caption":"Nic Raboy, Developer Advocate, Couchbase"},"description":"Nic Raboy is an advocate of modern web and mobile development technologies. He has experience in Java, JavaScript, Golang and a variety of frameworks such as Angular, NativeScript, and Apache Cordova. Nic writes about his development experiences related to making web and mobile development easier to understand.","sameAs":["https:\/\/www.thepolyglotdeveloper.com","https:\/\/www.facebook.com\/thepolyglotdeveloper","https:\/\/x.com\/nraboy"],"url":"https:\/\/www.couchbase.com\/blog\/author\/nic-raboy-2\/"}]}},"authors":[{"term_id":9032,"user_id":63,"is_guest":0,"slug":"nic-raboy-2","display_name":"Nic Raboy, Developer Advocate, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","author_category":"","last_name":"Raboy","first_name":"Nic","job_title":"","user_url":"https:\/\/www.thepolyglotdeveloper.com","description":"Nic Raboy is an advocate of modern web and mobile development technologies. He has experience in Java, JavaScript, Golang and a variety of frameworks such as Angular, NativeScript, and Apache Cordova. Nic writes about his development experiences related to making web and mobile development easier to understand."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/4318","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\/63"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=4318"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/4318\/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=4318"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=4318"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=4318"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=4318"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}