Bitbucket DIY Backup

このペヌゞの内容

お困りですか?

アトラシアン コミュニティをご利甚ください。

コミュニティに質問

この蚘事では、Bitbucket Server 4.x+で䜿甚できる、Bitbucket Server DIY Backup スクリプトの䜿甚に぀いお説明したす。この補品の以前のバヌゞョン (Stash) を実行しおいる堎合、「Stash (3.11) DIY Backup の䜿甚」を参照しおください。

Bitbucket Server DIY Backup は、Bitbucket Server Backup Client の䜿甚の代替戊略です。これにより以䞋を実珟できたす。

  • 䞀貫性のあるバックアップを䜜成するために必芁なダりンタむムを倧幅に削枛する。
  • ご利甚のバック゚ンドのデヌタベヌスに適した、ベンダヌ固有のバックアップ ツヌルを䜿甚する。䟋:
    • pg_dump: バック゚ンドのデヌタベヌスが PostgreSQL の堎合、たたは
    • sqlcmd : バック ゚ンドのデヌタベヌスが MS SQL Server の堎合、差分バックアップ甚の適切なコマンドずずもに䜿甚。

  • Bitbucket Server ホヌム ディレクトリに最適なファむル システム バックアップ ツヌルを䜿甚したす。䟋:
    • お䜿いの Bitbucket Server ホヌム ディレクトリが LVM を䜿甚しおいる堎合は LVM スナップショットの論理ボリュヌム。
    • Bitbucket Server  ホヌム ディレクトリがストレヌゞ ゚リア ネットワヌクを䜿甚しおいる堎合は SAN ベヌスのバックアップ。
    • rsync (利甚可胜であれば)
  • ノヌドを手動で停止させずに Bitbucket Data Center および Bitbucket Mesh むンスタンスのバックアップを䜜成する。

On this page:

動䜜確認枈みのサンプル リク゚ストを Bitbucket からダりンロヌドできたす。

 

ダりンタむムを削枛する際に重芁なのは、ベンダヌ固有の最適なデヌタベヌスおよびファむル システム バックアップ ツヌルを䜿甚するこずです。これらのツヌルでは䞀般に、Bitbucket Server Backup Client が䜿甚する汎甚的なベンダヌに䟝存しない圢匏よりも短い時間で、(堎合によっおはベンダヌ固有の圢匏を通じお)スナップショットを䜜成できたす。 

Bitbucket Server DIY Backup では、任意の蚀語でコヌドを蚘述し、Bitbucket Server 4.0 で利甚可胜な REST API を䜿甚しお、必芁なバックアップ手順を実行する必芁がありたす。

DIY Backup は Windows および Linux プラットフォヌム、および Bitbucket Server バヌゞョン 4.0 以降をサポヌトしおいたす。DIY Backup は Bitbucket Server 、Bitbucket Data Center、および Bitbucket Mesh のむンスタンスを等しくサポヌトしおおり、䞀方で動䜜する DIY Backup ゜リュヌションはもう䞀方でもそのたた動䜜したす。

Bitbucket Server の他のバックアップ戊略の詳现に぀いおは、「デヌタの埩元ずバックアップ」を参照しおください。たた、このペヌゞでは、ディスク䞊の Bitbucket Server ファむル システムず、アプリケヌションが䜿甚するデヌタベヌスずの間の緊密な連携に぀いおも説明したす。

このペヌゞの䟋は、DIY Backup ゜リュヌションを開発する際のガむダンスずしお提䟛されおいたす。このため、蚘茉されおいるサヌドパヌティ ツヌルは䞀䟋であり、ご利甚の Bitbucket Server むンストヌルに適したツヌルを遞択する必芁がありたす。

遞択したサヌドパヌティ ツヌルに぀いおは、ベンダヌのドキュメントをご確認ください。アトラシアンではこのようなツヌルのサポヌトを提䟛できたせん。

このペヌゞでは次のような内容に぀いお説明したす。

  • bash シェル スクリプトを䜿甚した、PostgreSQL デヌタベヌスおよびロヌカル ファむルシステム甚の完党な DIY Backup ゜リュヌションに぀いお説明したす。
  • DIY Backup で Bitbucket Server の REST API をどのように䜿甚できるかに぀いおの背景情報を提䟛したす。

ご利甚の Bitbucket Server むンスタンスに同じたたは類䌌した蚭定がある堎合はこの゜リュヌションを盎接䜿甚できるほか、ご利甚のハヌドりェア蚭定に合わせた独自の DIY Backup ゜リュヌションを開発するための出発点ずしお䜿甚するこずができたす。 

動䜜の仕組み

Bitbucket Server Backup Client の代わりに DIY Backup を䜿甚する堎合は、バックアップ手順を完党に制埡し、任意の蚀語で任意のカスタム プロセスを実装できたす。たずえば、DIY Backup の䞀環ずしお、デヌタベヌスのむンクリメントたたはファスト スナップショット ツヌルやファむル サヌバヌ固有のツヌルを䜿甚できたす。 

DIY Backup は Bitbucket Server Backup Client ず䌌た方法で機胜し、以䞋を実行したす。

  1. Bitbucket Server むンスタンスのバックアップを準備したす。これは、Bitbucket Server がロックされる前に発生したす。あずから発生するダりンタむムを最小限に抑えるため、ここでできるだけ倚くの凊理を実行するようにしたす。たずえば、むンクリメンタル デヌタベヌスおよびファむルシステム ナヌティリティを䜿甚しお最初のスナップショットを取埗できたす。Bitbucket Server はただ実行䞭で、デヌタベヌスやファむルシステムを倉曎しおいるため、これは 100% 䞀貫しおいる必芁はありたせん。この時点で最初のスナップショットを取埗するこずで、特にバックアップ間に倉曎したデヌタの量が倧きい堎合、あずで (アプリケヌションがロックされおいる間に) 実行される䜜業の量を枛らすこずができたす。手順には以䞋が含たれたす。
    • デヌタベヌスの最初のバックアップを実行する (プログレッシブ/差分バックアップをサポヌトしおいる堎合)。
    • ホヌム フォルダからバックアップ フォルダぞの初回の rsync を実行する。
  2. バックアップを初期化したす。これにより、以䞋が行われたす。
    • Bitbucket Server むンスタンスがロックされる。
    • デヌタベヌスおよびファむルシステムぞのコネクションがドレむンおよびラッチされる。
    • ドレむン/ラッチ手順の完了を埅機する。
  3. むンスタンスでバックアップの準備が敎ったら、実際の DIY Backup を開始できたす。これには、次の手順が含たれたす。
    • pg_dump を䜿甚しお、デヌタベヌスの完党に䞀貫したバックアップを䜜成する。
    • rsync を䜿甚しお、ファむルシステムの完党に䞀貫したバックアップを䜜成する。

      リポゞトリの保存に Bitbucket Mesh を䜿甚しおいる堎合は、この段階で各リポゞトリで DIY Backup スクリプトを実行する必芁がありたす。

  4. バックアップ プロセスが終了しおロックが解陀され次第、Bitbucket Server むンスタンスに通知が送信されたす。
  5. バックアップ䞭に䜜成したすべおのファむルを 1 ぀の倧きなアヌカむブに保存したす。

アプリケヌションがメンテナンス モヌドになっおいる堎合、ナヌザヌが Web むンタヌフェむスぞのアクセスやホスティング サヌビスの䜿甚を詊みるず、゚ラヌ メッセヌゞが衚瀺されたす。

利甚が䞍可胜な時間を予枬するための参考倀ずしお、アトラシアンの内郚䜿甚では、Bitbucket Server のダりンタむムは 7–8 分 (Bitbucket Server Backup Client を䜿甚、リポゞトリのサむズが合蚈 6 GB の堎合) になりたした。比范のために、同じリポゞトリで Bitbucket Server DIY Backup を䜿甚するず、䞀般にダりンタむムは 1 分未満になりたす。 

バックアップ察象

Bitbucket Server DIY Backup は、Bitbucket Server Backup Client ず同じデヌタをすべおバックアップしたす。

  • むンスタンスが接続されおいるデヌタベヌス (内郚たたは倖郚 DB)
  • 管理された Git リポゞトリ
  • Bitbucket Server ログ
  • むンストヌル枈みのプラグむンずそれらのデヌタ

Bash スクリプトを䜿甚した DIY Backup

このセクションでは、次のツヌルを䜿甚する、完党な DIY Backup ゜リュヌションを玹介したす。

  • bash -スクリプト甚
  • jq - Bitbucket Server からの REST レスポンスをパヌスするための、オヌプン ゜ヌスのコマンド ラむン JSON プロセッサヌ
  • pg_dump (たたは sqlcmd) - PostgreSQL デヌタベヌスのバックアップ甚
  • rsync - ファむルシステムのバックアップ甚
  • tar - バックアップ アヌカむブの䜜成甚

このアプロヌチに小芏暡な倉曎を加えるこずで、以䞋で DIY Backups を実行するために䜿甚できたす。

  • Linux ず Unix
  • macOS
  • cygwin を持぀ Windows (cygwin Git は Bitbucket Server ではサポヌトされたせん)。

Bash スクリプト

Bitbucket からサンプル スクリプトをダりンロヌドするか、リポゞトリをクロヌンできたす。


Bash スクリプトの実行

Bash スクリプトをダりンロヌドしたら、1 ぀のファむルを䜜成する必芁がありたす。

たずえば、次の堎合の bitbucket.diy-backup.vars.sh の蚭定方法を玹介したす。

  • Bitbucket Server の名前が bitbucket.example.com, で、ポヌトは 7990 を䜿い、ホヌム ディレクトリは /bitbucket-home
  • /bitbucket-backup にバックアップを生成し、.tar.gz バックアップを /bitbucket-backup-archives に保存したい
  • Bitbucket にナヌザヌ名 "admin"、パスワヌド "admin" のシステム管理者があり、OS ナヌザヌ "atlbitbucket" ずしお Bitbucket (およびバックアップ スクリプト) を実行する。

bitbucket.diy-backup.vars.sh

#!/bin/bash

CURL_OPTIONS="-L -s -f"

INSTANCE_NAME=bitbucket

BITBUCKET_URL=http://bitbucket.example.com:7990
BITBUCKET_HOME=/bitbucket-home/
BITBUCKET_UID=atlbitbucket

BITBUCKET_GID=atlbitbucket

BACKUP_HOME_TYPE=rsync
BACKUP_DATABASE_TYPE=postgresql
BACKUP_ARCHIVE_TYPE=tar

BITBUCKET_BACKUP_USER=admin
BITBUCKET_BACKUP_PASS=admin
BITBUCKET_BACKUP_EXCLUDE_REPOS=()


BITBUCKET_DB=bitbucket
POSTGRES_HOST=localhost
POSTGRES_USERNAME=dbuser
export PGPASSWORD=dbpass
POSTGRES_PORT=5432

# Make use of PostgreSQL 9.3+ options if available
psql_version="$(psql --version | awk '{print $3}')"

psql_majorminor="$(printf "%d%03d" $(echo "${psql_version}" | tr "." "\n" | head -n 2))"
if [[ ${psql_majorminor} -ge 9003 ]]; then
 PG_PARALLEL="-j 5"
 PG_SNAPSHOT_OPT="--no-synchronized-snapshots"
fi

BITBUCKET_BACKUP_ROOT=/bitbucket-backup
BITBUCKET_BACKUP_DB=${BITBUCKET_BACKUP_ROOT}/bitbucket-db/

BITBUCKET_BACKUP_HOME=${BITBUCKET_BACKUP_ROOT}/bitbucket-home/

BITBUCKET_BACKUP_ARCHIVE_ROOT=/bitbucket-backup-archives

# Used by the scripts for verbose logging. If not true only errors will be shown.
BITBUCKET_VERBOSE_BACKUP=TRUE


HIPCHAT_URL=https://api.hipchat.com
HIPCHAT_ROOM=
HIPCHAT_TOKEN=

KEEP_BACKUPS=0

提䟛の  bitbucket.diy-backup.vars.sh は、デフォルトで PostgreSQL、rsync、tar を䜿甚するように曞かれおいたす。別のツヌルを䜿甚したい堎合、このファむルの䞊郚のセクションをカスタマむズするこずもできたす。

䜿甚䟋

# Strategy for backing up the Bitbucket home directory:
# - amazon-ebs - Amazon EBS snapshots of the volume containing the home directory
# - rsync - "rsync" of the home directory contents to a temporary location. NOTE: This can NOT be used
# with BACKUP_ZERO_DOWNTIME=true.
BACKUP_HOME_TYPE=rsync


# Strategy for backing up the database:
# - amazon-rds - Amazon RDS snapshots
# - mysql - MySQL using "mysqldump" to backup and "mysql" to restore
# - postgresql - PostgreSQL using "pg_dump" to backup and "pg_restore" to restore
# - postgresql93-fslevel - PostgreSQL 9.3 with data directory located in the file system volume as home directory (so
# that it will be included implicitly in the home volume snapshot)
BACKUP_DATABASE_TYPE=postgresql


# Strategy for backing up Elasticsearch:
# - <leave blank> - No separate snapshot and restore of Elasticsearch state (default).
# - s3 - Amazon S3 bucket - requires the Elasticsearch Cloud plugin to be installed.
# - fs - Shared filesystem - requires all data and master nodes to mount a shared file system to the same mount point.
BACKUP_ELASTICSEARCH_TYPE=

DIY Backup が機胜するには、2 ぀のディレクトリを䜜成する必芁がありたす。

  1. ${BITBUCKET_BACKUP_ROOT} は、DIY Backup プロセス䞭に Bitbucket Server のホヌム ディレクトリずデヌタベヌス ダンプのコピヌが䜜成される䜜業ディレクトリ (この䟋では /bitbucket-backup) です。 
  2. ${BITBUCKET_BACKUP_ARCHIVE_ROOT} は、最終的なバックアップアヌカむブが保存されるディレクトリ (この䟋では /bitbucket-backup-archives)です。 

Bash スクリプトが以䞋の条件を満たしおいる堎合、このスクリプトをあらゆるホストで実行できたす。

  • 䞊蚘の ${BITBUCKET_BACKUP_ROOT} および ${BITBUCKET_BACKUP_ARCHIVE_ROOT} ディレクトリぞの読み取り/曞き蟌みアクセス、
  • ${BITBUCKET_HOME} ディレクトリぞの読み取りアクセス、
  • デヌタベヌスぞの読み取りアクセス
  • Bitbucket Server のサヌバヌで curl コマンドを実行するためのネットワヌク アクセス。 

これは、Bitbucket Server たたは Bitbucket Data Center のどちらのむンスタンスの堎合も圓おはたりたす。ファむルシステムぞのアクセスが盎接/NFS 経由か、あるいはネットワヌク アクセスが Bitbucket Server ノヌドたたはロヌド バランサ/リバヌス プロキシのどちらに転送されるかは問いたせん。 

bitbucket.diy-backup.vars.sh が正しく蚭定できたら、タヌミナル りィンドりでバックアップを実行しおください。

$ ./bitbucket.diy-backup.sh 

バックアップを初めお実行する際には rsync がほずんどの䜜業を実行したす /bitbucket-backup 䜜業ディレクトリは最初は空のため)。これは通垞の挙動です。このスクリプトは Bitbucket Server をロックする前に rsync を 1 床実行し、Bitbucket Server がロックされおいる間に 2 床目の rsync を実行するこずで、ダりンタむムを最小限に抑えたす。

2 回目以降のバックアップ実行時、/bitbucket-backup にはすでにファむルが存圚するため、バックアップ プロセスはより短時間で完了したす。衚瀺される出力は次のようになるはずです。

$ ./bitbucket.diy-backup.sh
[http://localhost:7990/bitbucket]  INFO: Prepared backup of DB bitbucket in /bitbucket-backup/bitbucket-db/
building file list ... done.
sent 4.17M bytes  received 484 bytes  2.78M bytes/sec
total size is 121.12M  speedup is 29.06
[http://localhost:7990/bitbucket]  INFO: Prepared backup of /bitbucket-home to /bitbucket-backup/bitbucket-home/
[http://localhost:7990/bitbucket]  INFO: locked with '7187ae1824ce1ede38a8e7de4bccf58d9a8e1a7a'
[http://localhost:7990/bitbucket]  INFO: backup started with '82c73f89e790b27fef3032e81c7071388ae4e371'
[http://localhost:7990/bitbucket]  INFO: Waiting for DRAINED state....... done
[http://localhost:7990/bitbucket]  INFO: db state 'DRAINED'
[http://localhost:7990/bitbucket]  INFO: scm state 'DRAINED'
[http://localhost:7990/bitbucket]  INFO: Performed backup of DB bitbucket in /bitbucket-backup/bitbucket-db/
[http://localhost:7990/bitbucket]  INFO: Backup progress updated to 50
building file list ... done.
sent 4.87M bytes  received 484 bytes  3.25M bytes/sec
total size is 121.82M  speedup is 24.99
[http://localhost:7990/bitbucket]  INFO: Performed backup of /bitbucket-home to /bitbucket-backup/bitbucket-home/
[http://localhost:7990/bitbucket]  INFO: Backup progress updated to 100
[http://localhost:7990/bitbucket]  INFO: Bitbucket instance unlocked
[http://localhost:7990/bitbucket]  INFO: Archiving /bitbucket-backup into /bitbucket-backup-archives/bitbucket-20150917-082818-498.tar.gz
[http://localhost:7990/bitbucket]  INFO: Archived  /bitbucket-backup into /bitbucket-backup-archives/bitbucket-20150917-082818-498.tar.gz

DIY Backup の埩元

Bitbucket Server を埩元する際には、Bitbucket Server を埩元する必芁があるマシンで bitbucket.diy-restore.sh スクリプトを実行する必芁がありたす。誀った埩元で既存のデヌタが削陀されないよう、既存のホヌム ディレクトリには埩元しないでください。

新しいデヌタベヌスは、「Bitbucket を倖郚デヌタベヌスに接続する」およびご利甚のデヌタベヌス タむプに察応するサブペヌゞの指瀺にしたがっお構成されおいる必芁がありたす。 

${BITBUCKET_BACKUP_ARCHIVE_ROOT} ディレクトリにある利甚可胜なバックアップを確認するには、次のように入力しおください。

$ ./bitbucket.diy-restore.sh


次のように衚瀺されるはずです。

$ ./bitbucket.diy-restore.sh
Usage: ./bitbucket.diy-restore.sh <backup-file-name>.tar.gz
Available backups:
bitbucket-20150917-082818-498.tar.gz  bitbucket-20150918-083745-001.tar.gz

 

バックアップを埩元するには、bitbucket.diy-restore.sh を、ファむル名を匕数ずしお実行しおください。

$ ./bitbucket.diy-restore.sh bitbucket-20150917-082818-498


出力は次のように衚瀺されたす。

$ ./bitbucket.diy-restore.sh bitbucket-20150917-082818-498.tar.gz
[http://localhost:7990/bitbucket]  INFO: Extracted /bitbucket-backup-archives/bitbucket-20150917-082818-498.tar.gz into /tmp/bitbucket.diy-restore.dQsbzU
[http://localhost:7990/bitbucket]  INFO: Performed restore of /tmp/bitbucket.diy-restore.dQsbzU/bitbucket-db to DB bitbucket2
[http://localhost:7990/bitbucket]  INFO: Performed restore of /tmp/bitbucket.diy-restore.dQsbzU/bitbucket-home to /bitbucket-home2

バックアップのキャンセル

必芁に応じお、実行䞭のバックアップ操䜜をキャンセルできたす。

バックアップのキャンセル方法

  1. タヌミナル (たたは Windows のコマンド プロンプト) で返されるキャンセル トヌクンをコピヌしたす。「backup started with token」行を探したす。

    $ ./bitbucket.diy-backup.sh
    [http://localhost:7990/bitbucket]  INFO: Prepared backup of DB bitbucket in /bitbucket-backup/bitbucket-db/
    building file list ... done.
    sent 4.17M bytes  received 484 bytes  2.78M bytes/sec
    total size is 121.12M  speedup is 29.06
    [http://localhost:7990/bitbucket]  INFO: Prepared backup of /bitbucket-home to /bitbucket-backup/bitbucket-home/
    [http://localhost:7990/bitbucket]  INFO: locked with '7187ae1824ce1ede38a8e7de4bccf58d9a8e1a7a'
    [http://localhost:7990/bitbucket]  INFO: backup started with '82c73f89e790b27fef3032e81c7071388ae4e371'
    [http://localhost:7990/bitbucket]  INFO: Waiting for DRAINED state....... done
    [http://localhost:7990/bitbucket]  INFO: db state 'DRAINED'
    [http://localhost:7990/bitbucket]  INFO: scm state 'DRAINED'

    䟋: "82c73f89e790b27fef3032e81c7071388ae4e371" を䜿甚

  2. ブラりザで Bitbucket Server むンタヌフェむスに移動したす。Bitbucket Server は次の画面を衚瀺したす。

  3. [バックアップを取消] をクリックし、キャンセル トヌクンを入力したす。

  4. [バックアップを取消] をクリックしたす。

Bitbucket Server は匕き続き、メンテナンス モヌドでロックされおいたす。"locked with" トヌクン (䟋: "7187ae1824ce1ede38a8e7de4bccf58d9a8e1a7a") を䜿甚しおこれらの手順を繰り返し、メンテナンス モヌドを終了しお、Bitbucket Server のロックを解陀したす。

詳现 - REST API を䜿甚した独自の DIY Backup を䜜成

このセクションはオプションで、䞊蚘の DIY Backup スクリプトをご垌望の蚀語で曞き換えたり、倧幅にカスタマむズしたりする必芁がある堎合のために、Bitbucket Server の REST API の䜿甚方法の背景情報を提䟛したす。

ここでは、Bash での curl コマンドを瀺しおいたすが、任意の蚀語を䜿甚できたす。

次の手順が含たれたす。

準備

Bitbucket Server をロックする前に、任意の準備を実行するこずができたす。あずから発生するダりンタむムを最小限に抑えるため、アプリケヌションをロックする前に、できるだけ倚くの凊理を実行するこずをおすすめしたす。たずえば、rsync を実行できたす。

rsync -avh --delete --delete-excluded --exclude=/caches/ --exclude=/data/db.* --exclude=/export/ --exclude=/log/ --exclude=/plugins/.*/ --exclude=/tmp --exclude=/.lock ${BITBUCKET_HOME} ${BITBUCKET_BACKUP_HOME}

Bitbucket Server むンスタンスをロックする

Bitbucket Server むンスタンスのバックアップ䜜成の次の手順は、メンテナンス甚にむンスタンスをロックするこずです。これは、/mvc/maintenance/lock REST ポむントぞの POST リク゚ストを䜿甚しお実行できたす (BITBUCKET_URL は Bitbucket Server むンスタンスを指し、BITBUCKET_BACKUP_USER はバックアップ暩限を持぀ Bitbucket Server ナヌザヌ、BITBUCKET_BACKUP_PASS はこのナヌザヌのパスワヌドです)。

REQUEST
curl -s \
	 -u ${BITBUCKET_BACKUP_USER}:${BITBUCKET_BACKUP_PASS} \
	 -X POST \
	 -H "Content-type: application/json" \
     "${BITBUCKET_URL}/mvc/maintenance/lock"
RESPONSE
{
	"unlockToken":"0476adeb6cde3a41aa0cc19fb394779191f5d306",
	"owner": {
		"displayName":"admin",
		"name":"admin"
	}
}

成功するず、Bitbucket Server むンスタンスは 202 で応答し、䞊蚘のようなレスポンス JSON を返したす。この unlockToken  は、$BITBUCKET_LOCK_TOKEN が芁求される以降のすべおのリク゚ストで䜿甚する必芁がありたす。このトヌクンは、むンスタンスのロックを手動で解陀するためにも䜿甚できたす。

バックアップ プロセスの開始

次に、デヌタベヌスずファむルシステムの䞡方ぞのすべおのコネクションを、ドレむンおよびラッチする必芁がありたす。コヌドでファむルシステムずデヌタベヌスの䞡方のバックアップを凊理する必芁がありたす。

この時点で、/mvc/admin/backups に POST リク゚ストをする必芁がありたす。curl コヌルには、?external=true パラメヌタヌが含たれる点に泚意しおください。

REQUEST
curl -s \
	 -u ${BITBUCKET_BACKUP_USER}:${BITBUCKET_BACKUP_PASS} \
	 -X POST \
	 -H "X-Atlassian-Maintenance-Token: ${BITBUCKET_LOCK_TOKEN}" \
	 -H "Accept: application/json" \
	 -H "Content-type: application/json" \
	 "${BITBUCKET_URL}/mvc/admin/backups?external=true"
RESPONSE
{
	"id":"d2e15c3c2da282b0990e8efb30b4bffbcbf09e04",
	"progress": {
		"message":"Closing connections to the current database",
		"percentage":5
	},
	"state":"RUNNING",
	"type":"BACKUP",
	"cancelToken":"d2e15c3c2da282b0990e8efb30b4bffbcbf09e04"
}

成功するず、むンスタンスは 202 で応答し、䞊蚘のようなレスポンス JSON を返指す。cancelToken は、バックアップ プロセスを手動でキャンセルする際に䜿甚できたす。


むンスタンスの準備が完了するたで埅ちたす。

バックアップ プロセスの䞀環には、デヌタベヌスおよびファむルシステムぞのコネクションのドレむンおよびラッチが含たれたす。バックアップを続行する前に、この手順が完了したこずをむンスタンスが報告するのを埅機する必芁がありたす。珟圚のステヌタスの詳现を確認したい堎合、/mvc/maintenance REST ポむントに GET リク゚ストを行いたす。

REQUEST
curl -s \
	 -u ${BITBUCKET_BACKUP_USER}:${BITBUCKET_BACKUP_PASS} \
	 -X GET \
	 -H "X-Atlassian-Maintenance-Token: ${BITBUCKET_LOCK_TOKEN}" \
	 -H "Accept: application/json" \
	 -H "Content-type: application/json" \
	 "${BITBUCKET_URL}/mvc/maintenance" 
RESPONSE
 {
	"task":{
		"id":"0bb6b2ed52a6a12322e515e88c5d515d6b6fa95e",
		"progress":{
			"message":"Backing up Bitbucket home",
			"percentage":10
		},
		"state":"RUNNING",
		"type":"BACKUP"
	},
	"db-state":"DRAINED",
	"scm-state":"DRAINED"
}

これにより、Bitbucket Server むンスタンスは珟圚の状態を報告したす。バックアップを続行する前に、db-state ず scm-state の䞡方のステヌタスが  DRAINED になるのを埅機する必芁がありたす。

実際のバックアップの実行

この時点で、ファむルシステムの実際のバックアップを䜜成する準備が敎いたした。たずえば、もう䞀床 rsync を䜿甚できたす。

rsync -avh --delete --delete-excluded --exclude=/caches/ --exclude=/data/db.* --exclude=/export/ --exclude=/log/ --exclude=/plugins/.*/ --exclude=/tmp --exclude=/.lock ${BITBUCKET_HOME} ${BITBUCKET_BACKUP_HOME}

ここに瀺す rsync オプションは䟋に過ぎたせんが、バックアップ プロセスに必芁なファむルのみを含め、それ以倖を陀倖する方法を瀺しおいたす。詳现な説明に぀いおは、rsync たたはお奜きなツヌルのドキュメントを参照しおください。 

デヌタベヌス バックアップを䜜成する際には、ベンダヌ固有のバックアップ ツヌルを䜿甚できたす。たずえば、PostgreSQL を䜿甚しおいる堎合は pg_dump を䜿甚できたす。

pg_dump -Fd ${BITBUCKET_DB} -j 5 --no-synchronized-snapshots -f ${BITBUCKET_BACKUP_DB}


これらの操䜜を実行する際は、バックアップの進捗でむンスタンスを曎新し、進捗を UI で確認できるようにするこずをおすすめしたす。これを行うには、トヌクンず完了枈みのパヌセント倀をパラメヌタヌずしお䜿甚し、/mvc/admin/backups/progress/client に POST リク゚ストを発行したす。

REQUEST
curl -s \
	 -u ${BITBUCKET_BACKUP_USER}:${BITBUCKET_BACKUP_PASS} \
	 -X POST \
	 -H "Accept: application/json" \
	 -H "Content-type: application/json" \
	 "${BITBUCKET_URL}/mvc/admin/backups/progress/client?token=${BITBUCKET_LOCK_TOKEN}&percentage=${BITBUCKET_BACKUP_PERCENTAGE}"

問題ない堎合、Bitbucket Server はこのリク゚ストに空の 202 で応答したす。 

ナヌザヌに進捗を衚瀺する際、Bitbucket Server は 100 パヌセントの進捗のうち、90 パヌセントを DIY Backup、10 パヌセントをアプリケヌションの準備に分割したす。぀たり、スクリプトが percentage=0 を送信した堎合、Bitbucket Server はバックアップ䜜業の割り圓お分に぀いお最倧 10 パヌセントの進捗を衚瀺する可胜性がありたす。 

(オプション) むンスタンスに接続されおいる各 Bitbucket Mesh ノヌドに Backup スクリプトを実行する

Bitbucket Mesh を䜿甚しおリポゞトリを保存しおいる堎合は、適切なオプションを蚭定し、各 Mesh ノヌドで 個別に バックアップスクリプトを実行しお、䞊蚘のプロセスを繰り返す必芁がありたす。

バックアップの完了を Bitbucket Server むンスタンスに通知

バックアップ プロセスが終了したら、進捗が 100 パヌセントに到達したこずを Bitbucket Server むンスタンスに報告する必芁がありたす。これは、進捗リク゚ストに䌌たリク゚ストを䜿甚しお実行されたす。POST リク゚ストを /mvc/admin/backups/progress/client にトヌクンおよびパヌセンテヌゞずしお100 を䌎っお発行したす。

REQUEST
curl -s \
	 -u ${BITBUCKET_BACKUP_USER}:${BITBUCKET_BACKUP_PASS} \
	 -X POST \
	 -H "Accept: application/json" \
	 -H "Content-type: application/json" \
	 "${BITBUCKET_URL}/mvc/admin/backups/progress/client?token=${BITBUCKET_LOCK_TOKEN}&percentage=100"

問題ない堎合、Bitbucket Server は空の 202 で応答したす。パヌセント倀が 100 になるず、バックアップ プロセスは完了枈みずみなされたす。これにより、この Bitbucket Server のむンスタンスのデヌタベヌスずファむルシステムのラッチが解陀されたす。  

Bitbucket Server むンスタンスのロックを解陀する 

バックアップ プロセスで行う必芁がある最埌の手順は、むンスタンスのロックを解陀するこずです。これは、/mvc/maintenance/lock REST ポむントぞの DELETE リク゚ストで実斜したす。

REQUEST
curl -s \
	 -u ${BITBUCKET_BACKUP_USER}:${BITBUCKET_BACKUP_PASS} \
	 -X DELETE \
	 -H "Accept: application/json" \
	 -H "Content-type: application/json" \
	 "${BITBUCKET_URL}/mvc/maintenance/lock?token=${BITBUCKET_LOCK_TOKEN}"

問題ない堎合、Bitbucket Server むンスタンスはこのリク゚ストに空の 202 で応答し、アクセスのロックを解陀したす。

最終曎新日 2023 幎 5 月 31 日

この内容はお圹に立ちたしたか?

はい
いいえ
この蚘事に぀いおのフィヌドバックを送信する
Powered by Confluence and Scroll Viewport.