Bitbucket Server Backup Client
Backup Client に Bitbucket Data Center との互換性はありません
Bitbucket Server Backup Client には、クラスタ化された Bitbucket Data Center インスタンスとの互換性はありません (シングル ノードに切り替えた場合も同様)。
To back up a clustered Bitbucket Data Center instance, you need to use the Bitbucket Server DIY Backup instead.
このページでは Bitbucket Server Backup Client の使用について説明します。会社のポリシーに沿ったデータ復旧計画を確立することを強く推奨します。
Backup Client の使用開始方法
- Bitbucket Server Backup Client をダウンロードします。
- クライアントを、サーバー上の Bitbucket Server インスタンスが存在するディレクトリに展開します。
ご質問がある場合は、「FAQ - データの復元とバックアップ」を参照してください。
On this page:
動作の仕組み
Backup Client は、Bitbucket Server インスタンスをバックアップするための一般的かつユニバーサルな処理を含み、次の内容を実行します。
- Bitbucket Server アプリケーションへのアクセス、Bitbucket Server によって管理されているリポジトリ、および Bitbucket Server データベースを確認して、バックアップの全体的な時間を確認します。この状態は "メンテナンス モード" と呼ばれます。
- すべての Git およびデータベース操作が完了したことを確認します。
- ホーム ディレクトリと Bitbucket Server データベースのアプリケーション固有のバックアップを実行します。バックアップは汎用的なものであり、サーバーまたはデータベース構成に依存しません。
- バックアップ ファイルをローカル ファイルシステムの指定された場所に、1 つの tar ファイルして保管します。
- Bitbucket Server のメンテナンス モードのロックを解除します。
Bitbucket Server がメンテナンス モードのときに、Bitbucket Server の web インターフェイスにアクセスしようとしたり、Bitbucket Server のホスティング サーバーを使用しようとしたりすると、エラー メッセージが表示されます。
クライアントは Windows および Linux プラットフォームと Bitbucket Server バージョン 4.0 以降をサポートしていますが、個々の組織の IT ポリシーやプロセスに連携するような機能は提供していません。
Bitbucket Server Backup Client の使用時に利用が不可能になる時間を予測するための参考値として、弊社の内部使用では、Bitbucket Server のダウンタイムは 7–8 分 (リポジトリのサイズが合計 6 GB の場合) になりました。比較のために、同じリポジトリで Bitbucket Server DIY Backup を使用すると、一般にダウンタイムは 1 分未満になります。
バックアップ対象
Backup Client は次のすべてのデータをバックアップします。
- Bitbucket Server が接続されているデータベース (内部または外部 DB)
- 管理された Git リポジトリ
- Bitbucket Server の監査ログ
- インストール済みのプラグインとそれらのデータ
バックアップには次のファイルおよびディレクトリは含まれません。
export/*
log/*
(監査ログを除く)shared/data/db*
(DB 内の HSQL データはバックアップされますが、ディスクのファイルはバックアップされません)tmp
plugins
ディレクトリ (installed-plugins
ディレクトリを除く)
クライアントを使用した Bitbucket Server のバックアップ
クライアントを使用して Bitbucket Server をバックアップする前に、ご使用の Bitbucket Server インスタンスと互換性のある Bitbucket Server Backup Client のリリースを使用していることを確認します。
Backup Client はコマンド ライン ツールであり、プラグインではない (アプリケーションの UI はない) ため、Bitbucket Server のホーム ディレクトリにアクセス可能な外部のどこかから実行する必要があります。通常、Backup Client は Bitbucket Server で直接実行します。次のコマンドでクライアントを実行します。
cd <path/to/backup-config.properties file>
java -jar <path/to/bitbucket-backup-client.jar>
構成オプションは、クライアントに含まれるサンプルである backup-config.properties
ファイルに保持されます。このファイルは、bitbucket-backup-client の実行時にいたディレクトリから自動的に読み取られます。プロパティは backup-config.properties
ファイルに完全に文書化されていますが、次のものが含まれます。
bitbucket.home
バックアップまたは復元先にする、Bitbucket Server インスタンスのホーム ディレクトリの場所を指定します。必須
ここで省略した場合、BITBUCKET_HOME
環境変数、または同じ名前の Java システム プロパティ (コマンド ラインで Backup および Restore Client に指定していた場合) から取得されます。これは必須の値であるため、これらのメカニズムのいずれかで指定されていない場合は、バックアップおよび復元が失敗します。
bitbucket.user
バックアップを実行する、管理権限を持つ Bitbucket Server ユーザーのユーザー名を定義します。必須
ここで省略した場合、同じ名前の Java システム プロパティから取得されます (コマンド ラインで Backup Client に指定していた場合)。これは必須の値であるため、これらのメカニズムのいずれかで指定されていない場合は、バックアップが失敗します。
bitbucket.password
バックアップを実行する、管理権限を持つ Bitbucket Server ユーザーのパスワードを定義します。必須
ここで省略した場合、同じ名前の Java システム プロパティから取得されます (コマンド ラインで Backup Client に指定していた場合)。これは必須の値であるため、これらのメカニズムのいずれかで指定されていない場合は、バックアップが失敗します。
bitbucket.baseUrl
バックアップを行う Bitbucket Server インスタンスのベース URL を定義します。必須
例:
http://localhost:7990/bitbucket
または http://bitbucketserver/
ここで省略した場合、同じ名前の Java システム プロパティから取得されます (コマンド ラインで Backup Client に指定していた場合)。これは必須の値であるため、これらのメカニズムのいずれかで指定されていない場合は、バックアップが失敗します。
backup.home
Backup Client がバックアップ アーカイブなどの自身のファイルを保存する場所を定義します。
指定しない場合、これらのファイルは Backup Client の作業ディレクトリの配下に保存されます。バックアップ ファイルは backup
サブディレクトリに、ログは logs
サブディレクトリに保存されます。
Windows の場合、パスの間に 2 つのバックスラッシュを使用する必要がある点にご注意ください。例: C:\\path\\to\\folder
または代わりにフォワード スラッシュを使用してください。例: C:/path/to/folder
backup.home
で定義される場所は、bitbucket.home
で定義されるディレクトリの外部にある必要があります。ディレクトリの内部にある場合、Backup Client は失敗します。
あるいは、次のプロパティをコマンドラインで指定できます。これらは "-D
" プレフィックスを持ち、"-jar" パラメーターの前に配置する必要があります。次に例を示します。
java -Dbitbucket.password="admin" -Dbitbucket.user="admin" -Dbitbucket.baseUrl="http://localhost:7990" -Dbitbucket.home=path/to/bitbucket/home -Dbackup.home=path/to/backup-home -jar bitbucket-backup-client.jar
クライアントのバックアップのキャンセル
必要に応じて、実行中のクライアント バックアップ操作をキャンセルできます。
バックアップのキャンセル方法
ターミナル (または Windows のコマンド プロンプト) でクライアントによって返されるキャンセル トークンをコピーします。
$ ./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'
- ブラウザで Bitbucket Server インターフェイスに移動します。Bitbucket Server は次の画面を表示します。
- Click Cancel backup, and enter the cancel token:
- [バックアップを取消] をクリックします。
既存の DB を使用するように Bitbucket Server を復元
このセクションは、インストールの破損を修復するために Bitbucket Server を復元しているが、Bitbucket Server のバックアップ元の既存の DB を使用可能な場合に適用されます。このシナリオでは、Bitbucket Server は元のバックアップ元と同じサーバーに Bitbucket Server を復元しようとしていると見なします。
Restore Client は、Bitbucket Server の復元先と同じマシンで実行されている必要があります。復元で既存のデータを意図せず削除してしまうことがないよう、Restore Client は空白のホーム ディレクトリと空白のデータベースにのみ復元を行います。
Restore Client は復元元のバックアップに含まれる JDBC 接続構成を使用します。
次のプロセスに従います。
- Bitbucket Server インスタンスを停止します。
- 現在のホーム ディレクトリのコンテンツを削除し、空にします。
- データベースの既存のテーブルをドロップし、空にします。データベースは引き続き同じユーザー/パスワードで存在していて、次の関連ページの「Bitbucket Server データベースの作成」セクションで説明されている構成を持っている必要があります。
次のコマンドを使用して Restore Client を実行します (「
path/to/bitbucket/home
」と「/path/to/original/backup/file
」の値を自身のものに置き換えてください)。java -Dbitbucket.home="path/to/bitbucket/home" -jar bitbucket-restore-client.jar /path/to/original/backup/file
破損したインストールを修正するために Bitbucket Server を復元する場合、「Bitbucket Server アップグレード ガイド」のステップ 4 から 6 に従います。Bitbucket Server のバックアップに使用された Bitbucket Server バージョンと同じものを使用する必要があります。
新しく作成された DB を使用するように Bitbucket Server を復元
新しく作成したデータベースに Bitbucket Server を復元する場合は、このセクションの説明に従ってください。このシナリオは、Bitbucket Server をバックアップ元とは異なるサーバーに復元することを前提としています。
復元プロセスはデータベースを問いません。つまり、バックアップの復元先のデータベースは、元のバックアップされたデータベースと異なる構成やタイプでもかまいません。
Bitbucket Server を復元する際には、Bitbucket Server の復元先のマシンで Restore Client が実行されている必要があります。復元で既存のデータを意図せず削除してしまうことがないよう、Restore Client は空白のホーム ディレクトリと空白のデータベースにのみ復元を行います。
次のプロセスに従います。
- Bitbucket Server の実行に使用するユーザー アカウントを使用して、新しい空のホーム ディレクトリを作成します。
- データベースを作成します。次の関連ページの「Bitbucket Server データベースの作成」セクションで説明されている構成を持っている必要があります。
- Restore Client を実行します。 詳細については、以下のセクションをご確認ください。
- 「Run the Bitbucket installer」の手順に従い、新しいサーバーに Bitbucket Server をインストールします。インストール先を空白のディレクトリにし、製品を以前のサーバーでサービスとして実行していた場合は同様にサービスとしてインストールします。
- 新しいインストールが正常に実行されていることを確認します。「Start and stop Bitbucket」をご確認ください。この段階では、Bitbucket Server によるゼロからの構成のためのガイド (ライセンスの詳細や管理者ユーザーの確認など) が表示されます。これは予期される挙動です。
- 新しくインストールしたインスタンスを停止します。
- 新しくインストールした
BITBUCKET_HOME
からコンテンツを削除してください。 - 復元された
BITBUCKET_HOME
の内容を、新たにインストールされたBITBUCKET_HOME
にコピーします。 - 新しくインストールされた Bitbucket Server を開始します。
- この段階で、次のようになります。
- 以前のサーバーと同じリリースのバイナリをインストールした場合、すべてが以前と同じようになり、個別のステップでアップグレードを行う必要があります。これは推奨アプローチです。
- 以前のリリースにインストールされていたリリースよりもあとのリリースのバイナリをインストールした場合、この段階でアップグレードが実行されます。
コマンド ラインから Restore Client を実行する
Restore Client をコマンド ラインから実行することもできます。このシナリオでは、新しいデータベースを作成済みであるため、使用すべき JDBC 接続を指定する必要があります。
Restore Client は、Restore Client を実行するコマンドで使用される jdbc.driver
、jdbc.url
、 jdbc.user
および jdbc.password
パラメーターで指定された JDBC 接続構成を使用します (以下を参照)。データベースのバックアップが正常に復元されると、クライアントは指定されたパラメーターを新しく復元された Bitbucket Server ホーム ディレクトリ内の bitbucket-config.properties
ファイルに書き込み、以下に概説する手順に従うと、新しいインスタンスが復元されたデータベースに接続できるようになります。
MySQL データベースへの復元を実行する前に、MySQL 用の JDBC はバンドルされていない点にご注意ください (ライセンス上の制限のため)。ドライバを自身でダウンロードおよびインストールする必要があります。
MySQL Connector/J JDBC ドライバをダウンロード サイトからダウンロードします。
ダウンロードした zip/tar.gz ファイルを解凍します。
抽出したディレクトリから mysql-connector-java-5.1.XX-bin.jar ファイルを
<path/to/backup/client>/jdbc
ディレクトリにコピーします。
この例では、新しく作成された PostgreSQL への復元を行っています。
java -Djdbc.override=true -Djdbc.driver=org.postgresql.Driver -Djdbc.url=jdbc:postgresql://HOSTNAME:PORT/DATABASE -Djdbc.user=bitbucketuser -Djdbc.password=password -Dbitbucket.home="path/to/bitbucket/home" -jar /path/to/bitbucket-restore-client.jar /path/to/original/backup/file
あるいは、backup-config.properties
ファイルでこれらのパラメータを構成することもできます。ファイルが現在のワーキング ディレクトリに存在することを確認してください。サンプル ファイルはクライアントに同梱されます。プロパティは、backup-config.properties
ファイルに完全に文書化されており、詳細は以下で説明されています。
bitbucket.home
The full path to a directory that the Restore Client will populate with the Bitbucket Server home data. This directory must be empty.
On Windows, you must use two backslashes ( \\
) or a single forward slash ( /
) to separate paths.
jdbc.override
デフォルトでは、Restore Client はバックアップされたデータベースと同じデータベースにリストアします。jdbc.override
が true
に設定されている場合、Restore Client は、以下の表の jdbc
プロパティで指定されたデータベースにリストアします。データベースは空でなければなりません。
jdbc.driver
Bitbucket Server が新しいデータベースへのログインに使用すべきドライバ クラスです。以降の例をご確認ください。
jdbc.url
新しいデータベースの接続の詳細です。JDBC URL の形式を持ちます。以降の例をご確認ください。
jdbc.user
Bitbucket Server が新しいデータベースへのログインに使用すべきユーザー名です。
jdbc.password
Bitbucket Server が新しいデータベースへのログインに使用すべきユーザー名です。
bitbucket.home.restore.whitelist
バックアップの復元時にターゲットのホームと共有ディレクトリに存在する可能性があるファイルとディレクトリの、コンマ区切りの一覧を定義します。これらのエントリに一致しないファイルがあった場合、処理に失敗します。
既定では、.snapshot、lost+found、.DS_Store がホワイトリストに追加されています。
JDBC プロパティの使用例
jdbc.driver
および jdbc.url
プロパティの例を以下に示します。
データベース | jdbc.driver | jdbc.url |
---|---|---|
MySQL | com.mysql.jdbc.Driver | jdbc:mysql://HOSTNAME:PORT/DATABASE?autoReconnect=true&characterEncoding=utf8&useUnicode=true&sessionVariables=storage_engine%3DInnoDB |
Oracle | oracle.jdbc.driver.OracleDriver | jdbc:oracle:thin:@//HOSTNAME:PORT/SERVICE |
PostgreSQL | org.postgresql.Driver | jdbc:postgresql://HOSTNAME:PORT/DATABASE |
SQL Server | com.microsoft.sqlserver.jdbc.SQLServerDriver | jdbc:sqlserver://HOSTNAME:PORT;databaseName=DATABASE; |
デバッグ ロギング
バックアップ クライアントを実行しているワーキング ディレクトリで logback.xml
ファイルに次の情報を追加することで、デバッグ ロギングを有効化できます。このファイルが存在しない場合は作成します。
<included><logger name="com.atlassian.bitbucket" level="DEBUG"/></included>