跳转到主要内容

备份、加载和恢复CouchDB集群

项目描述

创建一个正在运行的CouchDB节点的存档,保存CouchDB文件 data/.shardsdata/_dbs.couchdata/shards,顺序如下。为了允许备份正在运行的CouchDB,在创建存档之前会复制文件。

将CouchDB节点的存档恢复到新的CouchDB。新的CouchDB可以是一个由多个节点组成的集群。在使用Couchcopy之前,应该已经完成了新的CouchDB配置,但是所有现有数据将被删除。在恢复过程中,CouchDB将在每个集群节点上停止并重新启动。

限制

至少测试过CouchDB 3.1.1和3.3.3。

为了恢复存档,Couchcopy需要停止和启动CouchDB。它假设CouchDB由systemd控制。如果您不使用systemd,可以更改参数 --couchdb-start--couchdb-stop

您的CouchDB n 值应高于或等于您的CouchDB集群中的节点数。否则,从一个节点保存的碎片不足以保存和恢复所有数据库。有关副本和节点的更多详细信息,请参阅CouchDB文档

每个数据库的碎片数,即 q 的值,应该与源CouchDB和目标CouchDB相同。否则,tree /data/shards 将不同。

Couchcopy 假设您有对 CouchDB 数据目录的读写权限。如果没有,可以尝试使用 --use-sudo 选项。

开始使用

安装 Couchcopy

pip install --user couchcopy

从机器 old-server(CouchDB 数据在 /var/lib/couchdb)备份到 backup.tar.gz

couchcopy backup old-server,/var/lib/couchdb backup.tar.gz

将备份 backup.tar.gz 恢复到3节点 CouchDB 集群,机器可通过 SSH 访问 cluster_vm1cluster_vm2cluster_vm3

couchcopy restore backup.tar.gz admin:password@cluster_vm1,/var/lib/couchdb \
    admin:password@cluster_vm2,/var/lib/couchdb \
    admin:password@cluster_vm3,/var/lib/couchdb

通过启动 CouchDB 实例快速访问备份中的数据

couchcopy load backup.tar.gz

通过预配置 CouchDB 元数据,提高 couchcopy load 加载时间,因此不需要执行 Updating CouchDB metadata... 步骤

couchcopy unbrand slow_backup.tar.gz quick_backup.tar.gz

更多选项

couchcopy -h
couchcopy backup -h
couchcopy unbrand -h
couchcopy load -h
couchcopy restore -h

在 Fedora 上,可以使用以下命令安装和配置 CouchDB

sudo dnf copr enable -y adrienverge/couchdb
sudo dnf install couchdb
sudo sh -c 'echo "admin = password" >> /etc/couchdb/local.ini'
sudo systemctl restart couchdb

如果您与远程机器一起工作,CouchDB 需要监听每台机器上的远程 IP。您可以使用以下命令启用它(出于安全考虑,之后应将其禁用)

sudo sed -i 's/;bind_address = 127.0.0.1/bind_address = 0.0.0.0/g' /etc/couchdb/local.ini

实现细节

在恢复过程中,如果新 CouchDB 节点的名称与旧 CouchDB 不同,则使用 CouchDB /_node/_local/_dbs 端点更新节点名称。请参阅 CouchDB /_node/_local/_dbs 端点文档

在恢复过程中,Couchcopy 首先更新一个 CouchDB 节点的元数据(即节点名称列表),然后允许 CouchDB 本身将元数据同步到其他节点。所有节点的同步完成后,Couchcopy 退出,使用非官方的 CouchDB /_dbs 端点来监控 CouchDB 节点的同步。如果您想跳过这部分,例如,当出现以下日志跟踪时可以安全退出 Couchcopy [等待 CouchDB 集群 同步...]。对于有 10^5 个数据库的 CouchDB,更新第一个节点的元数据需要 35 分钟,然后将元数据同步到其他节点需要 6 分钟。对于只有 100 个数据库的 CouchDB,这两个操作几乎是瞬时的。

开发者说明

为了加快 CouchDB 节点的同步,可以执行以下操作

构建和发布

python setup.py sdist
twine upload dist/*

许可协议

本程序依据 GNU 通用公共许可证版本 3 许可。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

couchcopy-0.2.4.tar.gz (24.6 kB 查看哈希值)

上传时间 源代码

支持