Couchbase Bucket操作 #
一、Bucket概述 #
1.1 什么是Bucket #
Bucket(存储桶)是Couchbase中数据存储的顶层容器,类似于关系数据库中的数据库概念。每个Bucket都有独立的内存配额、副本配置和资源管理。
1.2 Bucket类型 #
| 类型 | 说明 | 适用场景 |
|---|---|---|
| Couchbase | 支持持久化、副本、索引 | 生产环境、需要高可用 |
| Memcached | 纯内存缓存,无持久化 | 缓存层、临时数据 |
| Ephemeral | 内存优先,可选持久化 | 高性能、可接受数据丢失 |
1.3 层级结构 #
text
Cluster(集群)
└── Bucket(存储桶)
├── Scope(作用域)
│ └── Collection(集合)
│ └── Document(文档)
│
├── _default Scope
│ └── _default Collection
└── ...
二、创建Bucket #
2.1 Web控制台创建 #
- 登录Couchbase Web控制台:http://localhost:8091
- 点击左侧菜单"Buckets"
- 点击"ADD BUCKET"按钮
- 配置Bucket参数:
| 参数 | 说明 | 示例值 |
|---|---|---|
| Name | Bucket名称 | my-bucket |
| Type | Bucket类型 | Couchbase |
| Memory Quota | 内存配额(MB) | 512 |
| Replicas | 副本数量 | 1 |
| Flush | 允许清空 | Enabled |
2.2 命令行创建 #
bash
/opt/couchbase/bin/couchbase-cli bucket-create \
--cluster localhost:8091 \
--username Administrator \
--password your-password \
--bucket my-bucket \
--bucket-type couchbase \
--bucket-ramsize 512 \
--bucket-replica 1 \
--bucket-eviction-policy valueOnly \
--enable-flush 1
2.3 REST API创建 #
bash
curl -X POST http://localhost:8091/pools/default/buckets \
-u Administrator:your-password \
-d name=my-bucket \
-d ramQuotaMB=512 \
-d replicaNumber=1 \
-d bucketType=couchbase \
-d flushEnabled=1
2.4 参数详解 #
内存配额计算:
text
总内存需求 = Bucket内存 + 索引内存 + 查询内存 + 系统预留
示例:
- 服务器总内存:16GB
- 系统预留:4GB
- 可用内存:12GB
- Data服务:8GB(可分配给多个Bucket)
- Index服务:2GB
- Query服务:2GB
副本配置:
bash
/opt/couchbase/bin/couchbase-cli bucket-create \
--cluster localhost:8091 \
--username Administrator \
--password your-password \
--bucket my-bucket \
--bucket-type couchbase \
--bucket-ramsize 512 \
--bucket-replica 2 \
--bucket-replica-index 1
三、查看Bucket #
3.1 查看所有Bucket #
命令行:
bash
/opt/couchbase/bin/couchbase-cli bucket-list \
--cluster localhost:8091 \
--username Administrator \
--password your-password
N1QL查询:
sql
SELECT * FROM system:buckets;
3.2 查看Bucket详情 #
命令行:
bash
/opt/couchbase/bin/couchbase-cli bucket-get \
--cluster localhost:8091 \
--username Administrator \
--password your-password \
--bucket my-bucket
REST API:
bash
curl -X GET http://localhost:8091/pools/default/buckets/my-bucket \
-u Administrator:your-password
3.3 查看Bucket统计信息 #
sql
SELECT
name,
quota,
ram,
ops,
itemCount,
dataUsed,
diskUsed
FROM system:buckets;
四、修改Bucket #
4.1 修改内存配额 #
bash
/opt/couchbase/bin/couchbase-cli bucket-edit \
--cluster localhost:8091 \
--username Administrator \
--password your-password \
--bucket my-bucket \
--bucket-ramsize 1024
4.2 修改副本数 #
bash
/opt/couchbase/bin/couchbase-cli bucket-edit \
--cluster localhost:8091 \
--username Administrator \
--password your-password \
--bucket my-bucket \
--bucket-replica 2
4.3 修改淘汰策略 #
bash
/opt/couchbase/bin/couchbase-cli bucket-edit \
--cluster localhost:8091 \
--username Administrator \
--password your-password \
--bucket my-bucket \
--bucket-eviction-policy fullEviction
淘汰策略选项:
| 策略 | 说明 | 适用场景 |
|---|---|---|
| valueOnly | 只淘汰值,保留元数据 | 默认策略 |
| fullEviction | 淘汰整个文档 | 内存紧张 |
| noEviction | 不淘汰 | 缓存场景 |
| nruEviction | 最近未使用淘汰 | Memcached类型 |
4.4 修改压缩设置 #
bash
/opt/couchbase/bin/couchbase-cli bucket-edit \
--cluster localhost:8091 \
--username Administrator \
--password your-password \
--bucket my-bucket \
--compaction-db-percentage 30 \
--compaction-view-percentage 30 \
--enable-compaction-parallel true
五、清空Bucket #
5.1 启用Flush #
创建Bucket时启用:
bash
/opt/couchbase/bin/couchbase-cli bucket-create \
--cluster localhost:8091 \
--username Administrator \
--password your-password \
--bucket my-bucket \
--enable-flush 1 \
...
修改已有Bucket:
bash
/opt/couchbase/bin/couchbase-cli bucket-edit \
--cluster localhost:8091 \
--username Administrator \
--password your-password \
--bucket my-bucket \
--enable-flush 1
5.2 执行Flush #
命令行:
bash
/opt/couchbase/bin/couchbase-cli bucket-flush \
--cluster localhost:8091 \
--username Administrator \
--password your-password \
--bucket my-bucket
REST API:
bash
curl -X POST http://localhost:8091/pools/default/buckets/my-bucket/controller/doFlush \
-u Administrator:your-password
N1QL删除所有文档:
sql
DELETE FROM `my-bucket`.`_default`.`_default`
WHERE type = 'user';
六、删除Bucket #
6.1 命令行删除 #
bash
/opt/couchbase/bin/couchbase-cli bucket-delete \
--cluster localhost:8091 \
--username Administrator \
--password your-password \
--bucket my-bucket
6.2 REST API删除 #
bash
curl -X DELETE http://localhost:8091/pools/default/buckets/my-bucket \
-u Administrator:your-password
6.3 注意事项 #
text
删除Bucket前请注意:
1. 删除操作不可恢复
2. 建议先备份重要数据
3. 删除后索引和视图也会被删除
4. 确保没有应用正在使用该Bucket
七、Bucket配置详解 #
7.1 内存配额规划 #
text
单节点配置示例(16GB内存):
┌────────────────────────────────────────┐
│ 16GB 总内存 │
├────────────────────────────────────────┤
│ 系统预留: 4GB │
├────────────────────────────────────────┤
│ Data服务: 8GB │
│ ├── Bucket A: 4GB │
│ └── Bucket B: 4GB │
├────────────────────────────────────────┤
│ Index服务: 2GB │
├────────────────────────────────────────┤
│ Query服务: 1GB │
├────────────────────────────────────────┤
│ 其他服务: 1GB │
└────────────────────────────────────────┘
7.2 副本配置 #
text
副本数量建议:
节点数 >= 3:副本数 = 1 或 2
节点数 = 2:副本数 = 1
节点数 = 1:副本数 = 0(开发环境)
注意:副本数不能超过节点数-1
7.3 淘汰策略选择 #
text
valueOnly(默认)
├── 保留文档Key在内存
├── 淘汰Value以释放内存
└── 适合:需要快速访问所有Key
fullEviction
├── 淘汰整个文档(Key+Value)
├── 最大化内存利用
└── 适合:内存紧张、数据量大
noEviction
├── 不淘汰任何数据
├── 内存满时拒绝写入
└── 适合:缓存场景、数据不能丢失
八、Bucket监控 #
8.1 Web控制台监控 #
访问 http://localhost:8091 -> Buckets -> 选择Bucket
监控指标:
| 指标 | 说明 |
|---|---|
| ops/sec | 每秒操作数 |
| memory used | 内存使用量 |
| disk used | 磁盘使用量 |
| items | 文档数量 |
| connections | 连接数 |
8.2 命令行监控 #
bash
/opt/couchbase/bin/couchbase-cli bucket-get \
--cluster localhost:8091 \
--username Administrator \
--password your-password \
--bucket my-bucket \
--json
8.3 REST API监控 #
bash
curl -X GET http://localhost:8091/pools/default/buckets/my-bucket/stats \
-u Administrator:your-password
8.4 关键指标 #
sql
SELECT
name,
ram/1024/1024 AS ram_mb,
quota/1024/1024 AS quota_mb,
ops,
itemCount,
dataUsed/1024/1024 AS data_mb,
diskUsed/1024/1024 AS disk_mb
FROM system:buckets;
九、Bucket最佳实践 #
9.1 命名规范 #
text
推荐命名:
- 使用小写字母
- 使用连字符分隔单词
- 语义化命名
示例:
my-app-data
user-profiles
product-catalog
session-cache
9.2 内存规划 #
text
内存配额建议:
1. 预留足够的内存给操作系统
2. 考虑工作集大小(活跃数据)
3. 预留增长空间
4. 考虑副本的内存开销
公式:
Bucket内存 >= 工作集大小 × 1.5
9.3 副本策略 #
text
生产环境:
- 至少3个节点
- 副本数 >= 1
- 启用自动故障转移
开发环境:
- 单节点即可
- 副本数 = 0
9.4 多Bucket设计 #
text
按业务分离:
Cluster
├── users-bucket(用户数据)
├── products-bucket(产品数据)
├── orders-bucket(订单数据)
└── cache-bucket(缓存数据)
优点:
- 独立资源配置
- 隔离故障影响
- 灵活的权限控制
十、常见问题 #
10.1 内存不足 #
bash
错误:RAM quota specified is greater than free RAM
解决方案:
1. 减少Bucket内存配额
2. 增加服务器内存
3. 调整其他服务内存配置
10.2 副本数超限 #
bash
错误:Number of replicas cannot be greater than number of nodes - 1
解决方案:
1. 减少副本数
2. 增加集群节点数
10.3 Bucket无法删除 #
bash
检查:
1. 是否有应用连接
2. 是否有正在进行的操作
3. 查看日志排查原因
强制删除:
/opt/couchbase/bin/couchbase-cli bucket-delete \
--cluster localhost:8091 \
--username Administrator \
--password your-password \
--bucket my-bucket \
--force
十一、总结 #
Bucket操作要点:
| 操作 | 命令/方法 |
|---|---|
| 创建 | bucket-create |
| 查看 | bucket-list, bucket-get |
| 修改 | bucket-edit |
| 清空 | bucket-flush |
| 删除 | bucket-delete |
最佳实践:
- 合理规划内存配额
- 生产环境配置副本
- 选择合适的淘汰策略
- 定期监控Bucket状态
- 按业务分离Bucket
下一步,让我们学习Scope与Collection操作!
最后更新:2026-03-27