Anaconda Enterprise 4 仓库备份和恢复流程#
本指南适用于备份和恢复使用本地文件系统存储的Anaconda Enterprise 4 Repository实例。如果您的实例使用Amazon S3或任何其他存储提供商,请查阅其关于备份和恢复程序的具体文档。
开始之前#
这些说明适用于以下类型的仓库:
按照安装指南的建议,安装在目录
/home/anaconda-server/repo
中。由
anaconda-server
用户拥有。使用存储目录
/opt/anaconda-server/package-storage
。将配置文件存储在
/etc/anaconda-server
中。
如果您的实例中这些项目有任何不同,请相应地修改这些说明。
除非另有说明,否则在登录为
anaconda-server
用户时运行所有shell命令。使用sudo
权限,通过以下命令登录为anaconda-server
用户:sudo su - anaconda-server
在工作目录
/home/anaconda-server
中执行所有命令:$ pwd /home/anaconda-server
备份#
在开始备份过程之前,使用supervisorctl
关闭服务:
$ supervisorctl stop all
anaconda-server: stopped
$ supervisorctl status
anaconda-server STOPPED Jul 6 05:05 PM
创建一个 $VERSION
环境变量,并将其设置为当前安装的 Anaconda Enterprise 4 Repository 的版本:
$ VERSION=`conda list anaconda-server --json | python -c 'import sys, json; print json.load(sys.stdin)[0]["version"]'`
$ echo $VERSION
2.33.27
此版本字符串将用于所有备份文件名中。
给文件添加时间戳也很有用,所以现在生成一个:
$ TIMESTAMP=`date +%Y-%m-%d`
$ echo $TIMESTAMP
2018-07-30
代码/二进制文件#
生成一个包含已安装代码、二进制文件和任何依赖项的tarfile存档:
$ tar -cpsf anaconda-server-repo-$VERSION-$TIMESTAMP.tar --exclude var/run -C /home/anaconda-server repo/
$ sha1sum anaconda-server-repo-$VERSION-$TIMESTAMP.tar > anaconda-server-repo-$VERSION-$TIMESTAMP.tar.sha1
请注意,这也生成了一个SHA1校验和。此校验和将在您恢复存档时用于验证。
配置#
仅当您将Anaconda Enterprise 4 Repository的配置存储在实例安装文件夹之外的自定义位置时,此步骤才是必要的
(通常为/home/anaconda-server/etc/
)。
这些命令展示了如果配置存储在/etc/anaconda-server
中,如何生成tar文件。
生成带有SHA1校验和的tar文件:
$ tar -cpsf anaconda-server-etc-$VERSION-$TIMESTAMP.tar /etc/anaconda-server
$ sha1sum anaconda-server-etc-$VERSION-$TIMESTAMP.tar > anaconda-server-etc-$VERSION-$TIMESTAMP.tar.sha1
存储#
和之前一样,使用包存储位置的内容创建一个tarfile存档及其校验和:
$ tar -cpsf anaconda-server-package-storage-$VERSION-$TIMESTAMP.tar -C /opt/anaconda-server/ package-storage
$ sha1sum anaconda-server-package-storage-$VERSION-$TIMESTAMP.tar > anaconda-server-package-storage-$VERSION-$TIMESTAMP.tar.sha1
数据库#
生成Anaconda Enterprise 4 Repository的MongoDB数据库的转储。Anaconda建议您遵循MongoDB的 备份和恢复指南。本指南使用 MongoDB工具:
$ mongodump --host=127.0.0.1 --port=27017 --archive=anaconda-server-mongodb-$VERSION-$TIMESTAMP.archive
$ sha1sum anaconda-server-mongodb-$VERSION-$TIMESTAMP.archive > anaconda-server-mongodb-$VERSION-$TIMESTAMP.archive.sha1
.bashrc#
如果您选择让Anaconda Enterprise 4 Repository安装程序更新用户anaconda-server
的.bashrc
文件,请备份它:
$ cp /home/anaconda-server/.bashrc anaconda-server-bashrc-$VERSION-$TIMESTAMP.sh
$ sha1sum anaconda-server-bashrc-$VERSION-$TIMESTAMP.sh > anaconda-server-bashrc-$VERSION-$TIMESTAMP.sh.sha1
恢复#
在开始之前#
验证恢复环境是否符合Anaconda Enterprise 4 Repository的安装指南中列出的要求。您将需要:
已安装MongoDB(任何支持的版本)
一个用户账户(通常是
anaconda-server
)一个存储目录(通常为
/opt/anaconda-server/package-storage
),由Anaconda Enterprise 4 Repository用户账户拥有。只有在使用本地文件系统作为存储后端时才需要此目录。
以
anaconda-server
用户身份登录时运行所有shell命令,就像你在备份Anaconda Enterprise 4 Repository时所做的那样。使用sudo
权限,通过以下命令以anaconda-server
用户身份登录:sudo su - anaconda-server
在工作目录
/home/anaconda-server
中执行所有命令。
验证校验和#
验证备份文件的完整性:
$ sha1sum --check *.sha1
anaconda-server-bashrc-2.33.27-2018-07-30.sh: OK
anaconda-server-mongodb-2.33.27-2018-07-30.archive: OK
anaconda-server-package-storage-2.33.27-2018-07-30.tar: OK
anaconda-server-repo-2.33.27-2018-07-30.tar: OK
.bashrc#
如果您备份了用户 anaconda-server
的 .bashrc
文件,请恢复它:
cp anaconda-server-bashrc-$VERSION-$TIMESTAMP.sh /home/anaconda-server/.bashrc
恢复此文件后,注销并再次以anaconda-server
身份登录以使更改生效。
数据库#
如果您遵循了Anaconda Enterprise 4 仓库
安装指南,MongoDB 已经启动并运行,您可以使用 mongorestore
来恢复数据库存档:
mongorestore --host=127.0.0.1 --port=27017 --db=binstar --archive=anaconda-server-mongodb-$VERSION-$TIMESTAMP.archive
存储#
假设存储目录是 /opt/anaconda-server/package-storage
,请使用以下命令恢复:
tar -xpsf anaconda-server-package-storage-$VERSION-$TIMESTAMP.tar -C /opt/anaconda-server/
代码/二进制文件#
恢复代码和二进制文件:
tar -xpsf anaconda-server-repo-$VERSION-$TIMESTAMP.tar -C /home/anaconda-server
恢复supervisord
配置:
repo/bin/anaconda-server-install-supervisord-config.sh
服务器现在应该已经启动并运行。使用supervisorctl
检查状态:
$ repo/bin/supervisorctl status
anaconda-server RUNNING pid 8446, uptime 0:03:18