分布式数据库Couchbase 集群迁移-2

简介: 在之前的文章中,我们介绍了基于 CBBACK 以及 CBRESTORE 等操作方式进行的分布式数据库 Couchbase 集群迁移方案,具体可参考链接:分布式数据库Couchbase 集群迁移。其实,在基于不同的业务场景以及架构方案,针对分布式数据库 Couchbase 集群迁移有多种不同的实现策略,只有能够达到高效、稳定及安全,才是最优选择。


    在之前的文章中,我们介绍了基于 CBBACK 以及 CBRESTORE 等操作方式进行的分布式数据库 Couchbase 集群迁移方案,具体可参考链接:分布式数据库Couchbase 集群迁移。其实,在基于不同的业务场景以及架构方案,针对分布式数据库 Couchbase 集群迁移有多种不同的实现策略,只有能够达到高效、稳定及安全,才是最优选择。

    在进行主题之前先补充一下分布式数据库 Couchbase 一些基本概念:在 Couchbase 的集群架构中,没有中心节点和 Router 的概念,这些工作是由 Smartclient 完成的,在客户端与 Couchbase Server 交互时,Couchbase 集群是作为一个黑匣子存在的。客户端负责客户程序与群集里独立节点的通信,首次连接的那个节点并不会充当代理或者分发的角色。Smartclient 或 Moxi( Couchbase Server 端的 Proxy组件)会加载 vBucket 映射表,并决定连接到集群里的哪个节点去获取和存储数据。如果集群的拓扑图改变了(比如执行 Rebalance 或者 Ffailover 操作),客户端库会自动处理任何会话错误。可以这样理解,集群的配置和结构,对应用程序是透明的,我们无需去过多关注。

     什么是 Buckets,Buckets 是独立的虚拟的数据容器,一个 Bucket 就是 Couchbase服务器集群中的一个逻辑组,可以被集群中的多个客户端应用使用。它提供安全的机制来组织、管理、分析数据存储资源。

     什么是 vBuckets,一个 vBucket 定义为 Couchbase 集群里 Key 空间的一个子集的拥有者。通过使用 vBuckets,信息在集群里分发更有效。vBucket 系统被用于分布式数据,以及支持多节点间的数据复制。

    在 Couchbase 中 Bucket有两种类型,一种是 Couchbase 类型,另一种是 Memcache类型,Couchbase 类型 Bucket 支持数据的持久化,因为它的数据是存储在磁盘上,把活跃的数据读取到内存中供客户端使用(后续的备份和Failover也仅是针对这种类型的 Bucket),而 Memcache 类型的 Bucket 是内存级别的,所有的数据均保存在内存中。现在我们开始切入主题,我们老的 Couchbase 服务器,使用了这两种类型的 Bucket,我们使用 Couchbase 类型的 Bucket存储的是持久化的数据,供我们的客户端调用,这部分数据相当重要且不能丢失。

    基本思路:

    1、备份老的 Couchbase 服务数据

   2、将新 Couchbase 服务器加入到老服务器集群中,并通过 Rebalance 同步两台服务器 Cache 数据

    3、修改客户端 Couchbase 配置节点

    4、Failover 老服务器进行升级

   本文主要基于 CBTRANSFER 操作方案以实现 Couchbase 集群迁移。具体如下所示:

    我们先描述当前的环境信息,具体如下所示:

    --- 环境描述:CentOS release 6.7 (Final)

    --- 源主机IP:10.10.10.10(此处真实地址已xx)

    --- 目标主机IP:11.11.11.11(此处真实地址已xx)

    --- 应用服务:Couchbase-server-enterprise-5.5.2-centos6.x86_64.rpm版本

     CBTRANSFER

     基于集群之间或者数据文件进行转换以实现无缝迁移。其语法为:


cbtransfer [options] source destination

       具体如下所示:


[root@testserver bin]# ./cbtransfer -u Administrator -p password http://10.10.10.10:8091 http://11.11.11.11:8091 -b xwf_main --bucket-destination xwf_main
  //  http://10.10.10.10:8091 参数为源主机
  //  http://11.11.11.11:8091 参数为目标主机
  //  -b 参数为源主机对应的bucket信息
  //  --bucket-destination 参数为目标主机对应的bucket信息
  .
  bucket: xwf_main, msgs transferred...
          :                total |       last |    per sec
    byte  :                    0 |          0 |        0.0
    done

[root@testserver bin]#./cbtransfer -v -u Administrator -p password http:/10.10.10.10:8091 http://11.11.11.11:8091 -b xwf_main --bucket-destination xwf_main

2016-01-03 14:55:17,477: mt cbtransfer...

2016-01-03 14:55:17,478: mt  source : http://10.10.10.10:8091

2016-01-03 14:55:17,478: mt  sink   : http://11.11.11.11:8091

2016-01-03 14:55:17,478: mt  opts   : {'username': '<xxx>', 'destination_vbucket_state': 'active', 'verbose': 1, 'extra': {'max_retry': 10.0, 'rehash': 0.0,'dcp_consumer_queue_length': 1000.0, 'data_only': 0.0, 'uncompress': 0.0, 'nmv_retry': 1.0, 'conflict_resolve': 1.0, 'cbb_max_mb': 100000.0, 'report': 5.0, 'mcd_compatible': 1.0, 'try_xwm': 1.0, 'backoff_cap': 10.0, 'batch_max_bytes': 400000.0, 'report_full': 2000.0, 'flow_control': 1.0, 'batch_max_size': 1000.0,'seqno': 0.0, 'design_doc_only': 0.0, 'allow_recovery_vb_remap': 0.0, 'recv_min_bytes': 4096.0}, 'collection': None, 'ssl': False, 'threads': 4, 'key': None,'password': '<xxx>', 'id': None, 'destination_operation': None, 'source_vbucket_state': 'active', 'silent': False, 'dry_run': False, 'single_node': False, 'bucket_destination': 'xwf_main', 'vbucket_list': None, 'separator': '::', 'bucket_source': 'xwf_main'}

2016-01-03 14:55:17,492: mt Starting new HTTP connection (1): 10.10.10.10

2016-01-03 14:55:17,604: mt Starting new HTTP connection (1): 11.11.11.11

2016-01-03 14:55:17,697: mt bucket: xwf_main

2016-01-

03 14:55:17,940: w0 source: http://10.10.10.10:8091(xwf_main@10.10.10.10:8091)

2016-01-

03 14:55:17,940: w0 sink: http://11.11.11.11:8091(xwf_main@10.10.10.10:8091)

2016-01-03 14:55:17,941: w0 :                total |       last |    per sec

 .

 bucket: xwf_main, msgs transferred...

         :                total |       last |    per sec

   batch :                    0 |          0 |        0.0

   byte  :                    0 |          0 |        0.0

   msg   :                    0 |          0 |        0.0

2016-01-03 14:55:17,998: mt Starting new HTTP connection (1): 10.10.10.10

2016-01-03 14:55:18,003: mt Starting new HTTP connection (1): 10.10.10.10

2016-01-03 14:55:18,054: mt Starting new HTTP connection (1): 11.11.11.11

2016-01-03 14:55:18,061: mt Starting new HTTP connection (1): 11.11.11.11

2016-01-03 14:55:18,103: mt Starting new HTTP connection (1): 10.10.10.10

2016-01-03 14:55:18,110: mt Starting new HTTP connection (1): 10.10.10.10

done

     至此,一个简单的关于 Couchbase 集群迁移操作轻松搞定,后续仅需要对新的集群进行 Rebalancing 操作即可。


相关文章
|
21天前
|
SQL 关系型数据库 MySQL
乐观锁在分布式数据库中如何与事务隔离级别结合使用
乐观锁在分布式数据库中如何与事务隔离级别结合使用
|
19天前
|
存储 SQL 分布式数据库
OceanBase 入门:分布式数据库的基础概念
【8月更文第31天】在当今的大数据时代,随着业务规模的不断扩大,传统的单机数据库已经难以满足高并发、大数据量的应用需求。分布式数据库应运而生,成为解决这一问题的有效方案之一。本文将介绍一款由阿里巴巴集团自主研发的分布式数据库——OceanBase,并通过一些基础概念和实际代码示例来帮助读者理解其工作原理。
69 0
|
25天前
|
存储 缓存 负载均衡
【PolarDB-X 技术揭秘】Lizard B+tree:揭秘分布式数据库索引优化的终极奥秘!
【8月更文挑战第25天】PolarDB-X是阿里云的一款分布式数据库产品,其核心组件Lizard B+tree针对分布式环境优化,解决了传统B+tree面临的数据分片与跨节点查询等问题。Lizard B+tree通过一致性哈希实现数据分片,确保分布式一致性;智能分区实现了负载均衡;高效的搜索算法与缓存机制降低了查询延迟;副本机制确保了系统的高可用性。此外,PolarDB-X通过自适应分支因子、缓存优化、异步写入、数据压缩和智能分片等策略进一步提升了Lizard B+tree的性能,使其能够在分布式环境下提供高性能的索引服务。这些优化不仅提高了查询速度,还确保了系统的稳定性和可靠性。
53 5
|
26天前
|
运维 安全 Cloud Native
核心系统转型问题之分布式数据库和数据访问中间件协作如何解决
核心系统转型问题之分布式数据库和数据访问中间件协作如何解决
|
19天前
|
C# UED 定位技术
WPF控件大全:初学者必读,掌握控件使用技巧,让你的应用程序更上一层楼!
【8月更文挑战第31天】在WPF应用程序开发中,控件是实现用户界面交互的关键元素。WPF提供了丰富的控件库,包括基础控件(如`Button`、`TextBox`)、布局控件(如`StackPanel`、`Grid`)、数据绑定控件(如`ListBox`、`DataGrid`)等。本文将介绍这些控件的基本分类及使用技巧,并通过示例代码展示如何在项目中应用。合理选择控件并利用布局控件和数据绑定功能,可以提升用户体验和程序性能。
36 0
|
1月前
|
存储 SQL 运维
“震撼发布!PolarDB-X:云原生分布式数据库巨擘,超高并发、海量存储、复杂查询,一网打尽!错过等哭!”
【8月更文挑战第7天】PolarDB-X 是面向超高并发、海量存储和复杂查询场景设计的云原生分布式数据库系统
87 1
|
2月前
|
Cloud Native 关系型数据库 分布式数据库
中国金融分布式数据库,双料冠军!
中国金融分布式数据库同比增长12.1%,阿里云绝对优势夺得公有云市场冠军
|
1月前
|
存储 负载均衡 中间件
构建可扩展的分布式数据库:技术策略与实践
【8月更文挑战第3天】构建可扩展的分布式数据库是一个复杂而具有挑战性的任务。通过采用数据分片、复制与一致性模型、分布式事务管理和负载均衡与自动扩展等关键技术策略,并合理设计节点、架构模式和网络拓扑等关键组件,可以构建出高可用性、高性能和可扩展的分布式数据库系统。然而,在实际应用中还需要注意解决数据一致性、故障恢复与容错性以及分布式事务的复杂性等挑战。随着技术的不断发展和创新,相信分布式数据库系统将在未来发挥更加重要的作用。
|
1月前
|
Cloud Native 关系型数据库 分布式数据库
中国金融分布式数据库,阿里云双料冠军!
中国金融分布式数据库,阿里云双料冠军!
47 1
|
2月前
|
存储 关系型数据库 MySQL
深度评测:PolarDB-X 开源分布式数据库的优势与实践
本文对阿里云开源分布式数据库 PolarDB-X 进行了详细评测。PolarDB-X 以其高性能、强可用性和出色的扩展能力在云原生数据库市场中脱颖而出。文章首先介绍了 PolarDB-X 的核心产品优势,包括金融级高可靠性、海量数据处理能力和高效的混合负载处理能力。随后,分析了其分布式架构设计,包括计算节点、存储节点、元数据服务和日志节点的功能分工。评测还涵盖了在 Windows 平台通过 WSL 环境部署 PolarDB-X 的过程,强调了环境准备和工具安装的关键步骤。使用体验方面,PolarDB-X 在处理分布式事务和实时分析时表现稳定,但在网络问题和性能瓶颈上仍需优化。最后,提出了改进建
6739 2