License: Attribution-NonCommercial-ShareAlike 4.0 International
本文出自 Suzf Blog。 如未注明,均为 SUZF.NET 原创。
恢复使用 cbbackup 命令备份的 bucket 数据,使用 cbrestore 命令 恢复数据到一个 新的群集的bucket中。
当恢复数据的时候,你不得不根据你正在执行的还原类型选择一个合适的还原序列。恢复群集数据的方法 取决于备份群集的方式。
如果使用 cbbackup 备份 bucket 数据,你可以恢复数据到相同或者不同配置的群集中去。 这是因为cbbackup存储格式为bucket的数据的信息使其能够被恢复到新的群集上。
注意:如果数据是使用直接拷贝文件的方式备份的, 之后你恢复数据的时候必须恢复到相同群集中。
cbrestore 从使用 cbbackup 命令备份的数据中取信息存储到群集中。群集的配置不必匹配备份数据时所使用的。它可以在灾难恢复的情况下,将数据传送到一个新的群集中。或者是更新或者是扩展现有的群集版本。
因为数据可灵活恢复,它提供了许多不同的方案可以在已经备份的数据上执行:
恢复数据到不同大小和配置的群集中。
在相同 或不同配置的群集中 传输 或者 恢复数据到不同的 bucket。
恢复选定数据到 相同 或不同配置的群集一个不同的 bucket 中。
cbrestore 命令的基本用法:
cbrestore [options] [source] [destination] Where: [options] Options specifying how the information should be restored into the cluster. Common options include: --bucket-source Specify the name of the bucket data to be read from the backup data that will be restored. --bucket-destination Specify the name of the bucket the data will be written to. If this option is not specified, the data will be written to a bucket with the same name as the source bucket. --add Use --add instead of --set to avoid overwriting the existing items in the destination. [source] The backup directory specified to cbbackup where the backup data was stored. [destination] The REST API URL of a node within the cluster where the information will be restored.
cbrestore 命令一次只能恢复一个单独的bucket的数据。如果你备份了这个群集的bucket,则必须还原每个bucket到集群。所有目的bucket必须已经存在,因为 cbrestore 不会帮你要恢复的节点中创建配置bucket。
举个栗子
恢复一个单独的bucket 到群集中去:
cbrestore \ /backups/backup-2012-05-10 \ http://Administrator:password@HOST:8091 \ --bucket-source=XXX [####################] 100.0% (231726/231726 msgs) bucket: default, msgs transferred... : total | last | per sec batch : 232 | 232 | 33.1 byte : 10247683 | 10247683 | 1462020.7 msg : 231726 | 231726 | 33060.0 done
恢复bucket 到 群集中不同的 bucket 中:
cbrestore \ /backups/backup-2012-05-10 \ http://Administrator:password@HOST:8091 \ --bucket-source=XXX \ --bucket-destination=YYY [####################] 100.0% (231726/231726 msgs) bucket: default, msgs transferred... : total | last | per sec batch : 232 | 232 | 33.1 byte : 10247683 | 10247683 | 1462020.7 msg : 231726 | 231726 | 33060.0 done
上面 msg 行统计的信息是恢复到群集中bucket 中文档的数量。
在恢复的时候过滤 key
cbrestore命令包括对于在备份过程中创建的文件过滤 Key 还原到数据库。
这是除了在备份过程中可用的过滤支持的另一方面。
该规范是以一个正则表达式的形式在cbrestore命令提供的一个参数。
例如,将以object开头的key的数据还原到一个bucket中:
cbrestore /backups/backup-20120501 http://HOST:8091 \ -u Administrator -p password \ -b default \ -k '^object.*' 2013-02-18 10:39:09,476: w0 skipping msg with key: sales_7597_3783_6 ... 2013-02-18 10:39:09,476: w0 skipping msg with key: sales_5575_3699_6 2013-02-18 10:39:09,476: w0 skipping msg with key: sales_7597_3840_6 [ ] 0.0% (0/231726 msgs) bucket: default, msgs transferred... : total | last | per sec batch : 1 | 1 | 0.1 byte : 0 | 0 | 0.0 msg : 0 | 0 | 0.0 done
只复制匹配到特定前缀的 keys 到默认的 bucket 中。对于跳过的每个键,提供了一个信息消息。
其余的输出显示转移的记录和正常的摘要。
通过拷贝文件恢复数据
要将数据恢复到相同配置的群集中,需要先关闭整个群集。当你恢复完数据之后,你需要将整个群集启动。在这种情况下,您正在用备份的数据文件的备份版本替换整个群集数据和配置,
然后用保存的群集文件的版本重新启动群集。
重要提示: 确保任何恢复的文件数组指定了适当的Couchbase用户。
当在同一个群集中恢复数据时,验证以下过程:
备份和恢复必须使用相同版本的 Couchbase。
整个群集必须包含相同数量的节点。
每个节点必须有相同的IP 或者 在备份的时候配置相同的主机名。
所有的 config.dat 配置文件以及所有数据库文件必须恢复到原来的位置。
完成还原过程所需的步骤是:
在所有节点上停止couchbase服务。
在每个节点上,从你的备份的文件中恢复数据库,stats.json,配置文件config.dat。
在每个节点上重启服务。
Parent topic: Backup and restore