分布式数据库Couchbase 集群迁移

简介: CouchBase是一款开源的、分布式的nosql数据库,主要用于分布式缓存和数据存储领域。能够通过manage cache提供快速的亚毫米级别的k-v存储操作,并且提供快速的查询和其功能强大的能够指定SQL-like查询的查询引擎。

     

  CouchBase是一款开源的、分布式的nosql数据库,主要用于分布式缓存和数据存储领域。能够通过manage cache提供快速的亚毫米级别的k-v存储操作,并且提供快速的查询和其功能强大的能够指定SQL-like查询的查询引擎

       Couchbase是一个较新的、发展迅速的nosql数据库技术。2014年,viber宣布使用couchbase替换mongodb,以适应10亿级的用户量,目前,couchbase已大量运用于生产环境,国内使用的公司主要有新浪,腾讯等。

       Couchbase是CouchDB和MemBase的合并。而memBase是基于Memcached的。因此Couchbase联合了couchbase的简单可靠和memcached的高性能,以及membase的可扩展性。灵活的数据模型:couchbase中使用json格式存储对象和对象之间的关系。
       Nosql数据库的一个特性是不需要定义数据结构,在Couchbase中,数据可以存储为key-value对或者json文档,不需要预先定义严格的格式,由于这种特性,Couchbase支持以 scale out(水平扩展)方式扩展数据量,提升io性能,只需要在集群中添加更多的服务器就行了。相反,关系数据库管理系统scale up(纵向扩展),通过加更多的CPU,内存和硬盘以扩展容量。

本文主要介绍分布式数据库Couchbase 集群迁移方案之CBBACK/CBRESTORE


---环境描述: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版本


1、CBBACK

      命令行操作方式:cbbackup [options] [source] [backup-dir] -u [admin] -p [password]


[administrator@JavaLangOutOfMemory ~ ]% ./cbbackup -m full http://10.10.10.10:8091 /home/ubunt
//-m full参数表明:执行全集群节点备份操作,基于-m参数:full、diff及accu
.
bucket: did_devices, msgs transferred...
       :                total |       last |    per sec
 byte  :                    0 |          0 |        0.0
.
bucket: xwf_events, msgs transferred...
       :                total |       last |    per sec
 byte  :                    0 |          0 |        0.0
.
bucket: xwf_main, msgs transferred...
       :                total |       last |    per sec
 byte  :                    0 |          0 |        0.0
done
[administrator@JavaLangOutOfMemory ~ ]% ./cbbackup -m full --single-node -t 3 http://10.10.10.10:8091 /home/ubuntu/ -u Administrator -p passwor
//--single-node 参数表明:执行单节点的备份操作
//-t 3参数表明:当前执行备份的线程个数为3
.
bucket: did_devices, msgs transferred...
       :                total |       last |    per sec
 byte  :                    0 |          0 |        0.0
.
bucket: xwf_events, msgs transferred...
       :                total |       last |    per sec
 byte  :                    0 |          0 |        0.0
.
bucket: xwf_main, msgs transferred...
       :                total |       last |    per sec
 byte  :                    0 |          0 |        0.0
done
[administrator@JavaLangOutOfMemory ~ ]% ./cbbackup -m full -v http://10.10.10.10:8091 /home/ubuntu/ -u Administrator -p password   
//-v参数表明:执行过程中相关log的输出
2016-01-03 11:10:39,380: mt cbbackup...
2016-01-03 11:10:39,380: mt  source : http://10.10.10.10:8091
2016-01-03 11:10:39,380: mt  sink   : /home/ubuntu/
2016-01-03 11:10:39,380: mt  opts   : {'username': '<xxx>', '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, 'bucket_source': None, 'silent': False, 'dry_run': False, 'single_node': False, 
'vbucket_list': None, 'separator': '::', 'mode': 'full'}
2016-01-03 11:10:39,393: mt Starting new HTTP connection (1): 10.10.10.10
2016-01-03 11:10:39,500: mt bucket: did_devices
2016-01-03 11:10:39,818: w0   source : http://10.10.10.10:8091(did_devices@10.10.10.10:8091)
2016-01-03 11:10:39,818: w0   sink   : /home/ubuntu/(did_devices@10.10.10.10:8091)
2016-01-03 11:10:39,819: w0          :                total |       last |    per sec
.
bucket: did_devices, msgs transferred...
        :                total |       last |    per sec
  batch :                    0 |          0 |        0.0
  byte  :                    0 |          0 |        0.0
  msg   :                    0 |          0 |        0.0
2016-01-03 11:10:39,902: mt Starting new HTTP connection (1): 10.10.10.10
2016-01-03 11:10:39,907: mt Starting new HTTP connection (1): 10.10.10.10
2016-01-03 11:10:39,962: mt Starting new HTTP connection (1): 10.10.10.10
2016-01-03 11:10:39,968: mt Starting new HTTP connection (1): 10.10.10.10
2016-01-03 11:10:39,973: mt bucket: xwf_events
2016-01-03 11:10:40,252: w1   source : http://10.10.10.10:8091(xwf_events@10.10.10.10:8091)
2016-01-03 11:10:40,252: w1   sink   : /home/ubuntu/(xwf_events@10.10.10.10:8091)
2016-01-03 11:10:40,252: w1          :                total |       last |    per sec
.
bucket: xwf_events, msgs transferred...
        :                total |       last |    per sec
  batch :                    0 |          0 |        0.0
  byte  :                    0 |          0 |        0.0
  msg   :                    0 |          0 |        0.0
.
... ...
done


2、CBRESTORE

       命令操作方式:cbrestore [options] [backup-dir] [destination]


[administrator@JavaLangOutOfMemory ~ ]% ./cbrestore -b xwf_events -B xwf_events --from-date=2014-08-
 .
 bucket: xwf_events, msgs transferred...
        :                total |       last |    per sec
  byte  :                    0 |          0 |        0.0
 done
 [administrator@JavaLangOutOfMemory ~ ]%./cbrestore -b xwf_events -B xwf_events --from-date=2014-08-01 --to-date=2015-08-01 -t 3 -v /home/ubuntu/ http://11.11.11.11:8091 -u Administrator -p password
 // -b 参数表明源buckets名称,即source_bucket
 // -B 参数表明目标buckets名称,即destiant_bucket
 // --from-date 参数表明从具体的某一日开始
 // --to-date 参数表明截止到具体的某一日
  2016-01-03 11:46:39,408: mt cbrestore...
  2016-01-03 11:46:39,408: mt  source : /home/ubuntu/
  2016-01-03 11:46:39,408: mt  sink   : http://11.11.11.11:8091
  2016-01-03 11:46:39,408: mt  opts   : {'username': '<xxx>', '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': 3, 'to_date': '2015-08-01', 'key': None, 'password': '<xxx>', 'id': None, 'bucket_source': 'xwf_events', 'silent': False, 'dry_run':
  False, 'from_date': '2014-08-01', 'bucket_destination': 'xwf_events', 'add': False, 'vbucket_list': None, 'separator': '::'}
  2016-01-03 11:46:39,423: mt Starting new HTTP connection (1): 11.11.11.11
  2016-01-03 11:46:39,522: mt bucket: xwf_events
  2016-01-03 11:46:39,543: w0   source : /home/ubuntu/(xwf_events@11.11.11.11:8091)
  2016-01-03 11:46:39,544: w0   sink   : http://11.11.11.11:8091(xwf_events@11.11.11.11:8091)
  2016-01-03 11:46:39,544: w0          :                total |       last |    per sec
  2016-01-03 11:46:39,544: w0    batch :                    1 |          1 |       54.1
  2016-01-03 11:46:39,544: w0    byte  :                    0 |          0 |        0.0
  2019-01-03 11:46:39,544: w0    msg   :                    0 |          0 |        0.0
  .
  bucket: xwf_events, msgs transferred...
          :                total |       last |    per sec
    batch :                    1 |          1 |       14.3
    byte  :                    0 |          0 |        0.0
    msg   :                    0 |          0 |        0.0
  2016-01-03 11:46:39,595: mt Starting new HTTP connection (1): 11.11.11.11
  2016-01-03 11:46:39,602: mt Starting new HTTP connection (1): 11.11.11.11
  done
相关文章
|
21天前
|
SQL 关系型数据库 MySQL
乐观锁在分布式数据库中如何与事务隔离级别结合使用
乐观锁在分布式数据库中如何与事务隔离级别结合使用
|
20天前
|
存储 SQL 分布式数据库
OceanBase 入门:分布式数据库的基础概念
【8月更文第31天】在当今的大数据时代,随着业务规模的不断扩大,传统的单机数据库已经难以满足高并发、大数据量的应用需求。分布式数据库应运而生,成为解决这一问题的有效方案之一。本文将介绍一款由阿里巴巴集团自主研发的分布式数据库——OceanBase,并通过一些基础概念和实际代码示例来帮助读者理解其工作原理。
69 0
|
24天前
|
弹性计算 关系型数据库 数据库
手把手带你从自建 MySQL 迁移到云数据库,一步就能脱胎换骨
阿里云瑶池数据库来开课啦!自建数据库迁移至云数据库 RDS原来只要一步操作就能搞定!点击阅读原文完成实验就可获得一本日历哦~
|
9天前
|
存储 缓存 关系型数据库
阿里云数据库 SelectDB 多计算集群核心设计要点揭秘与场景应用
在云原生存算分离架构下,多计算集群的实现从技术方案上看似乎并不存在过多难题。但从产品的角度而言,具备成熟易用的多计算集群能力且能运用于用户实际业务场景中,还有较多核心要点需要深度设计
阿里云数据库 SelectDB 多计算集群核心设计要点揭秘与场景应用
|
6天前
|
存储 SQL 关系型数据库
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
MySQL如何进行分库分表、数据迁移?从相关概念、使用场景、拆分方式、分表字段选择、数据一致性校验等角度阐述MySQL数据库的分库分表方案。
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
|
17天前
|
存储 Kubernetes 数据安全/隐私保护
k8s对接ceph集群的分布式文件系统CephFS
文章介绍了如何在Kubernetes集群中使用CephFS作为持久化存储,包括通过secretFile和secretRef两种方式进行认证和配置。
25 5
|
17天前
|
SQL Java 数据库连接
数据库迁移不再难:Flyway 与 Liquibase 大比拼,哪个才是你的真命天子?
【9月更文挑战第3天】数据库迁移在软件开发中至关重要,尤其在使用 ORM 框架如 Hibernate 时。为确保部署时能顺利应用最新的数据库变更,开发者常使用自动化工具。Flyway 和 Liquibase 是当前流行的两种选择,均能有效管理数据库版本控制。Flyway 采用 SQL 脚本表示变更,简单易用;Liquibase 支持多种脚本格式,功能更强大,适合复杂项目。本文将对比这两种工具的特点,并通过示例展示各自的优缺点,帮助开发者根据项目需求做出合适的选择。
19 1
|
22天前
|
数据采集 分布式计算 并行计算
Dask与Pandas:无缝迁移至分布式数据框架
【8月更文第29天】Pandas 是 Python 社区中最受欢迎的数据分析库之一,它提供了高效且易于使用的数据结构,如 DataFrame 和 Series,以及大量的数据分析功能。然而,随着数据集规模的增大,单机上的 Pandas 开始显现出性能瓶颈。这时,Dask 就成为了一个很好的解决方案,它能够利用多核 CPU 和多台机器进行分布式计算,从而有效地处理大规模数据集。
46 1
|
17天前
|
分布式计算 资源调度 Hadoop
在YARN集群上运行部署MapReduce分布式计算框架
主要介绍了如何在YARN集群上配置和运行MapReduce分布式计算框架,包括准备数据、运行MapReduce任务、查看任务日志,并启动HistoryServer服务以便于日志查看。
31 0
|
19天前
|
C# UED 定位技术
WPF控件大全:初学者必读,掌握控件使用技巧,让你的应用程序更上一层楼!
【8月更文挑战第31天】在WPF应用程序开发中,控件是实现用户界面交互的关键元素。WPF提供了丰富的控件库,包括基础控件(如`Button`、`TextBox`)、布局控件(如`StackPanel`、`Grid`)、数据绑定控件(如`ListBox`、`DataGrid`)等。本文将介绍这些控件的基本分类及使用技巧,并通过示例代码展示如何在项目中应用。合理选择控件并利用布局控件和数据绑定功能,可以提升用户体验和程序性能。
37 0