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