couchbase入门篇
如下 couchbase 示例的服务器 ip 为 192.168.64.130,账号 Administrator,密码 Admin_147
基本操作
集群的管理
#.进入windows系统的安装目录
cd /d "C:\Program Files\Couchbase\Server\bin"
#.查看版本
couchbase-cli --version
#.查看帮助,命令行返回帮助信息
couchbase-cli bucket-flush -h
#.查看帮助,浏览器返回帮助信息
couchbase-cli bucket-flush --help
#.初始化集群
couchbase-cli cluster-init -c localhost:8091 --cluster-name=sqlfans \
--cluster-username Administrator --cluster-password Admin_147 --services data,index \
--cluster-ramsize 2048 --cluster-index-ramsize 1024 --index-storage-setting memopt
#.平衡集群
couchbase-cli rebalance -c localhost:8091 -u Administrator -p Admin_147
节点的管理
#.查看节点信息
couchbase-cli server-list -c localhost:8091 -u Administrator -p Admin_147
#.添加节点,示例添加 192.168.64.134
couchbase-cli server-add -c localhost:8091 -u Administrator -p Admin_147 --server-add 192.168.64.134:8091 --server-add-username Administrator --server-add-password Admin_147
存储桶的管理
- 利用 couchbase-cli user-manage 管理存储桶
注:memcached(纯内存)类型的存储桶,不支持备份、不支持调整最大内存、不支持 XDCR 同步
#.创建桶(区分大小写),初始内存100MB,未启用Flush
couchbase-cli bucket-create -c localhost:8091 -u Administrator -p Admin_147 --bucket bucket_couchbase --bucket-type couchbase --bucket-ramsize 100 --enable-flush 0
couchbase-cli bucket-create -c localhost:8091 -u Administrator -p Admin_147 --bucket bucket_memcached --bucket-type memcached --bucket-ramsize 100 --enable-flush 0
#.查看存储桶清单
couchbase-cli bucket-list -c localhost:8091 -u Administrator -p Admin_147
#.调整某个桶的内存
couchbase-cli bucket-edit -c 192.168.64.130:8091 -u Administrator -p Admin_147 --bucket bucket_couchbase --bucket-ramsize 101
#.调整某个桶是否启用flush,1启用/0禁用
couchbase-cli bucket-edit -c 192.168.64.130:8091 -u Administrator -p Admin_147 --bucket bucket_couchbase --enable-flush 1
#.flush某个存储桶,不添加--force则会提示是否继续
couchbase-cli bucket-flush -c 192.168.64.130:8091 -u Administrator -p Admin_147 --bucket bucket_couchbase
#.flush某个存储桶,添加--force则会强制静默
couchbase-cli bucket-flush -c 192.168.64.130:8091 -u Administrator -p Admin_147 --bucket bucket_couchbase --force
#.注意 couchbase(支持持久化)类型的存储桶,支持调整最大内存
couchbase-cli bucket-edit -c 192.168.64.130:8091 -u Administrator -p Admin_147 --bucket bucket_couchbase --bucket-ramsize 256
couchbase-cli bucket-edit -c 192.168.64.130:8091 -u Administrator -p Admin_147 --bucket bucket_couchbase --bucket-ramsize 128
#.注意 memcached(纯内存)类型的存储桶,不支持调整最大内存
couchbase-cli bucket-edit -c 192.168.64.130:8091 -u Administrator -p Admin_147 --bucket bucket_memcached --bucket-ramsize 256
couchbase-cli bucket-edit -c 192.168.64.130:8091 -u Administrator -p Admin_147 --bucket bucket_memcached --bucket-ramsize 128
#.删除桶
couchbase-cli bucket-delete -c localhost:8091 -u Administrator -p Admin_147 --bucket bucket_memcached
- 利用 API 管理存储桶
#.创建存储桶,名字testBucket,初始内存100MB,未启用 flush
curl -v -X POST http://192.168.64.130:8091/pools/default/buckets -u Administrator:Admin_147 -d name=testBucket -d bucketType=couchbase -d ramQuota=100 -d flushEnabled=0
#.调整某个桶的内存
curl -X POST -u Administrator:Admin_147 -d ramQuotaMB=102 http://192.168.64.130:8091/pools/default/buckets/testBucket
#.调整某个桶是否启用flush,1启用/0禁用
curl -X POST -u Administrator:Admin_147 -d flushEnabled=1 http://192.168.64.130:8091/pools/default/buckets/testBucket
#.flush某个存储桶
curl -v -X POST -u Administrator:Admin_147 http://192.168.64.130:8091/pools/default/buckets/testBucket/controller/doFlush
#.删除桶
curl -X DELETE -u Administrator:Admin_147 http://192.168.64.130:8091/pools/default/buckets/testBucket
数据的管理
- 加载测试存储桶
beer-sample(内含 7303 个 items),以供测试使用
- 利用 cbq 查询(等同在 Couchbase UI 的 Query 页面执行指令)
$ cbq -u Administrator -p Admin_147 -engine=http://127.0.0.1:8091
cbq> SELECT 'Hello World' AS Greeting;
cbq> SELECT * FROM `beer-sample` LIMIT 2;
cbq> SELECT brewery_id, name FROM `beer-sample` WHERE brewery_id IS NOT MISSING AND type="beer" LIMIT 5;
cbq> \quit;
- N1QL 提供插入(INSERT)、更新(UPDATE)、删除(DELETE)、更新插入(UPSERT)、合并(MERGE) 等操作语句,进行创建、删除和修改数据。
INSERT INTO bucket_couchbase (KEY, VALUE) VALUES ("user_101", {"name":"tom", "sex":"boy"});
INSERT INTO bucket_couchbase (KEY, VALUE) VALUES ("user_102", {"name":"sam", "sex":"boy"});
UPDATE bucket_couchbase USE KEYS "user_102" SET sex = "girl";
DELETE FROM bucket_couchbase USE KEYS "user_102";
账号的管理
- 利用 couchbase-cli user-manage 管理用户,注意部分功能需要企业版才支持
#.返回账号清单
couchbase-cli user-manage -c 127.0.0.1:8091 -u Administrator -p Admin_147 --list
#.创建账号,只能查看所有的桶
couchbase-cli user-manage -c 127.0.0.1:8091 -u Administrator -p Admin_147 --set --rbac-username test_01 --rbac-name "test" --roles views_admin[*] --auth-domain external
#.创建账号,并添加到管理组
couchbase-cli user-manage -c 127.0.0.1:8091 -u Administrator -p Admin_147 --rbac-username test_02 --rbac-password Admin_123 --auth-domain local --set --user-groups Admins
#.删除账号
couchbase-cli user-manage -c 127.0.0.1:8091 -u Administrator -p Admin_147 --rbac-username test_01 --auth-domain local --delete
#.新建一个组,示例名称 xdcrAdmin,角色 replication_admin
couchbase-cli user-manage -c 127.0.0.1:8091 -u Administrator -p Admin_147 --set-group --group-name xdcrAdmin --roles replication_admin
#.返回组清单
couchbase-cli user-manage -c 127.0.0.1:8091 -u Administrator -p Admin_147 --list-groups
#.删除一个组
couchbase-cli user-manage -c 127.0.0.1:8091 -u Administrator -p Admin_147 --delete-group --group-name xdcrAdmin
- 利用 API 管理用户,注意部分功能需要企业版才支持
#.通过api获取账号信息
curl -v -X GET -u Administrator:Admin_147 http://localhost:8091/settings/rbac/users
#.通过api创建账号
curl -v -X PUT -u Administrator:Admin_147 http://localhost:8091/settings/rbac/users/local/dgreen -d password=Admin_123 -d roles=ro_admin
curl -v -X PUT -u Administrator:Admin_147 http://localhost:8091/settings/rbac/users/local/sdavis -d groups=Admins -d password=Admin_123
#.通过api锁定/解锁账号
curl -X PATCH -u Administrator:Admin_147 http://localhost:8091/settings/rbac/users/local/dgreen -d locked=true
curl -X PATCH -u Administrator:Admin_147 http://localhost:8091/settings/rbac/users/local/dgreen -d locked=false
#.通过api删除账号
curl -v -X DELETE -u Administrator:Admin_147 http://localhost:8091/settings/rbac/users/local/dgreen
#.通过api创建组
curl -v -X PUT -u Administrator:Admin_147 http://localhost:8091/settings/rbac/groups/roAdminGroup -d roles=ro_admin
#.通过api获取组信息
curl -v -X GET -u Administrator:Admin_147 http://localhost:8091/settings/rbac/groups
#.通过api删除组
curl -v -X DELETE -u Administrator:Admin_147 http://localhost:8091/settings/rbac/groups/roAdminGroup
找回web登录密码
- 针对 Couchbase 4.6.2 版本,不知道密码的情况下重置web登录密码(-p和--new-password使用新密码),示例 新密码为
Admin_258
couchbase-cli reset-admin-password -c 192.168.64.130:8091 -u Administrator -p Admin_258 --new-password Admin_258
- 针对 Couchbase 4.6.2 版本,已知密码的情况下重置web登录密码(-p使用老密码,--new-password使用新密码),示例 新密码为
Admin_147
couchbase-cli reset-admin-password -c localhost:8091 -u Administrator -p Admin_258 --new-password Admin_147
- 针对 Couchbase 7.2.4 版本,重置web登录密码则更简单,示例 新密码为
Admin_147
couchbase-cli reset-admin-password --new-password Admin_147
数据迁移
1.利用 xdcr 实现跨数据中心复制
- CouchBase提供了XDCR(Xerocode Distributed Copy)功能,可以实现多集群间的数据复制,可以跨版本复制。这种复制主要以异步的方式通过XDCR协议同步数据到其它集群中备份,从而实现单集群或机房出现问题时的容灾
- 注1:XDCR 只能同步 Couchbase 类型的存储桶,不支持 Memcached 类型的存储桶
- 注2:XDCR 只同步任务创建之后的数据,任务创建之前的数据不会被同步到目的端
- 注3:若要配置从4.1到6.6版本的复制,则必须在4.1版本上配置,数据才能从4.1版本流向6.6版本
2.利用 cbtransfer 实现桶对桶的同步
- cbtransfer 非常适合执行一次性的数据迁移或备份任务,可以直接在服务器之间传输数据。
#.老节点:创建存储桶
couchbase-cli bucket-create -c 192.168.64.130:8091 -u Administrator -p Admin_147 --bucket bkt_001 --bucket-type couchbase --bucket-ramsize 100
#.老节点:准备测试数据
$ cbq -u Administrator -p Admin_147 -engine=http://192.168.64.130:8091
cbq> INSERT INTO bkt_001 (KEY, VALUE) VALUES ("user_101", {"name":"tom", "sex":"boy"});
cbq> \quit;
#.新节点:先创建空的存储桶
couchbase-cli bucket-create -c 192.168.64.134:8091 -u Administrator -p Admin_147 --bucket bkt_001 --bucket-type couchbase --bucket-ramsize 100
#.利用cbtransfer进行迁移,示例将存储桶 bkt_001 从 192.168.64.130 迁移到 192.168.64.134
cbtransfer -u Administrator -p Admin_147 http://192.168.64.130:8091 http://192.168.64.134:8091 --bucket-source=bkt_001 --bucket-destination=bkt_001
- 注1:cbtransfer 只能同步 Couchbase 类型的存储桶,不支持 Memcached 类型的存储桶
3.利用 cbbackup 与 cbrestore 进行桶对桶的备份与恢复
- 利用 cbbackup 与 cbrestore 进行桶对桶的备份与恢复
#.老节点:创建存储桶
couchbase-cli bucket-create -c 192.168.64.130:8091 -u Administrator -p Admin_147 --bucket bkt_002 --bucket-type couchbase --bucket-ramsize 100
#.老节点:准备测试数据
$ cbq -u Administrator -p Admin_147 -engine=http://192.168.64.130:8091
cbq> INSERT INTO bkt_002 (KEY, VALUE) VALUES ("user_101", {"name":"tom", "sex":"boy"});
cbq> \quit;
#.老节点:创建备份目录
rd /s /q d:\bkt_002 && mkdir d:\bkt_002
#.老节点:-m full 指定所有桶进行全量备份,--single-node指定单节点
cbbackup -u Administrator -p Admin_147 couchbase://192.168.64.130:8091 d:/bkt_002 -m full --single-node --threads=4
#.新节点:先创建空的存储桶
couchbase-cli bucket-create -c 192.168.64.134:8091 -u Administrator -p Admin_147 --bucket bkt_002 --bucket-type couchbase --bucket-ramsize 100
#.新节点:恢复指定的存储桶
cbrestore --bucket-source=bkt_002 --bucket-destination=bkt_002 --threads=4 d:/bkt_002 http://192.168.64.134:8091 -u Administrator -p Admin_147
- 注1:虽然是全量备份,但由于是端对端的恢复,所以只要目的端创建了空的指定桶,恢复任务就不会失败
4.利用 cbbackupmgr 进行所有桶的备份与恢复
- 利用 cbbackupmgr 进行所有桶的备份与恢复
#.老节点:创建存储桶
couchbase-cli bucket-create -c 192.168.64.130:8091 -u Administrator -p Admin_147 --bucket bkt_003 --bucket-type couchbase --bucket-ramsize 100
#.老节点:准备测试数据
$ cbq -u Administrator -p Admin_147 -engine=http://192.168.64.130:8091
cbq> INSERT INTO bkt_003 (KEY, VALUE) VALUES ("user_101", {"name":"tom", "sex":"boy"});
cbq> \quit;
#.老节点:创建备份目录
rd /s /q d:\bkt_003 && mkdir d:\bkt_003
#.配置备份仓库
cbbackupmgr config --archive d:/bkt_003 --repo cb_repo
#.老节点:--full-backup 指定所有桶进行全量备份,-a即--archive,-r即--repo,-c即--cluster
cbbackupmgr backup -a d:/bkt_003 -r cb_repo -c couchbase://192.168.64.130 -u Administrator -p Admin_147 --full-backup
#.查看备份信息
cbbackupmgr info -a d:/bkt_003 --all
#.新节点:先创建空的存储桶
couchbase-cli bucket-create -c 192.168.64.134:8091 -u Administrator -p Admin_147 --bucket bkt_003 --bucket-type couchbase --bucket-ramsize 100
#.新节点:恢复所有桶,所有桶都必须创建,且必须为空的桶
cbbackupmgr restore -a d:/bkt_003 -r cb_repo -c couchbase://192.168.64.134 -u Administrator -p Admin_147
- 注1:只能备份 Couchbase 类型的存储桶,不支持备份 Memcached 类型的存储桶
- 注2:因为是全量备份,只要目的端缺少任何一个桶都会导致恢复任务失败
- 注3:虽然是全量备份,若老的存储桶删除了数据,恢复的时候不会同步这个老桶已删除的数据,所以要创建空的桶

