Couchbase 数据迁移
总阅读 次
今日碰到需要迁移couchbase数据的需求,做了相关调研,记录如下:
方案1:备份与恢复
cbback
cbbackup 工具 是一个灵活的备份命令,使您可以备份本地数据和远程节点和涉及您的集群数据的不同组合:
单节点单buckets
单节点上所有buckets
整个群集上单个buckets
整个群集上所有buckets
cbbackup 命令参数选项:
1 | cbbackup [options] [source] [backup_dir] |
Options:用来配置连接群集的用户和密码信息,备份类型和bucket 选项
- –single-node:备份单节点
- –bucket-source or -b:备份特定名称的 bucket
Source:本地数据目录参考或者是远程 节点/群集规范
本地目录参考:本地目录规范是使用
couchstore-files
协议定义的 URL。举个栗子:
couchstore-files:///opt/couchbase/var/lib/couchbase/data/default- 使用这种方法,您只需在单个节点上备份指定 bucket 的数据。如果在群集上备份全部 bucket 数据 或是 备份单个节点上的所有数据,这时你必须使用群集节点规范。这种方法在 bucket 中定义的设计文档不支持。
群集 节点:这个一个节点或是群集中的一个节点,将 URL 指定为一个节点 或是 群集 服务。举个栗子:
1 | http://HOST:8091 |
Backup_dir:执行 cbbackup 命令保存备份数据的目录
- 这必须是一个绝对明确的目录,文件将直接存储在特定的目录;
下面提供一些不同数据组合的例子:
- 备份所有节点上的所有bucket
1 | cbbackup http://HOST:8091 /backups/backup-20120501 \ |
- 备份所有节点上的指定的bucket
1 | cbbackup http://HOST:8091 /backups/backup-20120501 \ |
- 备份单个节点 所有bucket
1 | cbbackup http://HOST:8091 /backups/backup-20120501 \ |
- 备份单个节点 单个bucket
1 | cbbackup http://HOST:8091 /backups/backup-20120501 \ |
5.在备份的时候过滤 Keys(以正则表达式的形式体现)
1 | cbbackup http://HOST:8091 /backups/backup-20120501 \ |
参考:https://blog.csdn.net/weixin_34161032/article/details/91728682
cbrestore
cbrestore 命令参数选项
1 | cbrestore [options] [source] [destination] |
cbrestore 命令一次只能恢复一个单独的bucket的数据。如果你备份了这个群集的bucket,则必须还原每个bucket到集群。所有目的bucket必须已经存在,因为 cbrestore 不会帮你要恢复的节点中创建配置bucket。
- 恢复一个单独的bucket 到群集中去:
1 | cbrestore \ |
- 恢复bucket 到 群集中不同的 bucket 中:
1 | cbrestore \ |
- 在恢复的时候过滤 key
将以object开头的key的数据还原到一个bucket中:1
2
3
4cbrestore /backups/backup-20120501 http://HOST:8091 \
-u Administrator -p password \
-b default \
-k '^object.*'
增量备份(亲测未达到预期)
1 | cbbackup -m diff |
参考:https://docs.couchbase.com/server/current/backup-restore/incremental-backup.html
方案2:XDCR跨集群复制
XDCR提供了多个有效vbucket的数据的复制,主要用于跨数据中心的多集群间的复制,可以跨版本复制。
couchbase 界面 XDCR下 创建集群引用和复制,操作如下: