说明

由于目前工作中收到指示,需要把原始的仓库迁移到另外一台机器上,所以边做边记载了此篇文档,以便后续中有相同的工作时便于查找,另外,希望此篇文档可以帮助其他的一些人。

基于Docker运行环境

通过Docker可以很快进行搭建部署MYSQL与Phabricator,这样可以省下我们很多时间避免耗费在PHP环境或其他环境上,这样我们就只需要专注迁移的工作就可以了。

运行MySQL

由于Pharicator对MySQL的一些配置会有一些硬性要求,所以我这里设置的参数是根据要求进行设置的默认值。

docker run -d --name mysql -p 3306:3306  \
-e MYSQL_ROOT_PASSWORD=root -v mysql:/var/lib/mysql mysql:5.6 \
--innodb_buffer_pool_size=1600M \
--max_allowed_packet=33554432 \
--sql_mode=STRICT_ALL_TABLES

运行Phabricator

根据以下给出的示例,请把相应的参数更改成你环境相关的地址。

docker run -d --name phabricator \
    --rm -p 80:80 -p 443:443 \
    --env PHABRICATOR_HOST=phabricator.xxxx.com \
    --env MYSQL_HOST=172.16.1.10 \
    --env MYSQL_USER=root \
    --env MYSQL_PASS=root \
    --env PHABRICATOR_REPOSITORY_PATH=/repos \
    -v phabricator_repos:/repos \
    redpointgames/phabricator

注意:在访问仓库地址的时候务必需要使用域名进行访问,最简单的方式就是设置本地的hosts文件。

迁移Phabricator内容

概要

Phabricator目前并没有直接可以使用的备份功能,但是我们可以使用其提供的一些简单的工具来帮助我们进行合理的备份操作,在备份的时候需要注意以下四点:

  • MySQL数据库
  • 代码库目录
  • 上传的文件
  • Phabricator的配置文件

注意:数据恢复后记得重启Phabricator

备份:MySQL数据库

Phabricator的大部分数据都存在MySQL中,备份中这一步是重中之重. 你可使用 bin/storage dump 命令来获得所有的数据库结构与数据. 这个脚本可以让你能够使用 mysqldump来进行恢复. 但我们只需要导出Phabricator的那一部分.

自从大部分的数据是能够压缩的, 也许gzip是首选方式进行打包存储. 如:

phabricator/ $ ./bin/storage dump | gzip > backup.sql.gz

然后,把此文件存到比较安全的地方,只有超级管理员才能看到. 其他人没有权限也不让其知道。

恢复: MySQL

想要恢复MySQL的备份, 只需要通过mysql命令登录到一个干净的主机上.(如果你之前压缩过的话,首先你可能需要解压操作。)

$ gunzip -c backup.sql.gz | mysql

备份:代码库目录

如果你的仓库在Phabricator中, 有应该备份它们. 你可以使用 bin/repository list-paths 命令来找到每个仓库在本地的位置. 然后通过压缩命令进行打包,再然后把它们复制到某个地方.

tar -czvf repos.tar.gz ${phabricator}/repos/*

你也可以clone出来然后保证分支是最新的, 使用 Add Mirror 来自动同步。

恢复:代码库目录

想要恢复代码库,只需要把上述的文件目录复制到目标主机中相应的目录中即可。

tar -xzvf repos.tar.gz ${phabricator}/repos/

备份:上传的文件

上传的文件也许会存在多个不同的位置. 取决于文件保存位置最初的设置,默认情况下都会存在MySQL中. 更多文件存储位置查看:点击查看

恢复:上传的文件

如果你使用了本地磁盘存储或其他的方式,只需要把相应的文件拷贝即可。

备份:配置文件

Phabricator默认情况会把配置文件放在以下位置,你只需要对下面文件进行处理即可。

phabricator/conf/local/local.json

这个文件保存了所有的设置信息,包括了你使用 bin/config set key value 设置的属性。

恢复:配置文件

把之前备份的 local.json 文件放到 phabricator/conf/local/local.json 位置即可,或使用了Docker了的话,可以通过以上镜像在创建容器时在命令行上进行设置。

参考资料

https://secure.phabricator.com/book/phabricator/article/configuring_backups/

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐