SlideShare a Scribd company logo
第18回Alfresco勉強会
Alfrescoのバックアップとリストア
2013/09/25
@_tasky
自己紹介
 私は…
◦ @_tasky
 平日は…
◦ 株式会社イージフでAlfrescoやLiferayをいじってます
 休日は…
◦ 1児(2歳♀)の父親業やってます
Contents
 はじめに
 バックアップ/リストア対象データ
 バックアップの種類
 コールドバックアップ
◦ バックアップの方法
◦ リストアの方法
 ホットバックアップ
◦ ホットバックアップのポイント
◦ バックアップの方法
◦ リストアの方法
◦ デモ
 (おまけ)Alfrescoが吹っ飛んだ時のデータ救出
はじめに
 本資料の内容はAlfrescoCommunity 4.2.dに基づいています
◦ データベースはPostgreSQLを利用(インストーラ標準)
◦ 全文検索エンジンSolrを利用(インストーラ標準)
 具体的な手順(コマンドとか)は色々はしょってたりもっと気
の利いた方法があったりしますが、最低限これでできますよ、
ということで…
 インストール方法は以下の資料を参考にしてください
http://www.slideshare.net/TasukuOtani/alfresco15-alfresco-4
http://aegif-labo.blogspot.jp/2012/03/alfresco40.html
 ここらへんの記事を参考にしています
http://wiki.alfresco.com/wiki/Backup_and_Restore
http://docs.alfresco.com/4.2/index.jsp?topic=%2Fcom.alfresco.enterprise.do
c%2Fconcepts%2Fch-backup-restore.html
http://docs.alfresco.com/4.2/index.jsp?topic=%2Fcom.alfresco.enterprise.do
c%2Fconcepts%2Fch-backup-restore.html
バックアップ/リストア対象データ
 バックアップ/リストア対象データ=Alfrescoがバックエンドで
管理するデータ
◦ データベース
 MySQL, PostgreSQL, Oracle等が管理するデータ
◦ ファイルシステム
 コンテンツのファイル実体
 ファイルシステム上に元ファイルと同バイナリで保存される(名前は
変わる)
◦ 全文検索インデックス(オプション)
 全文検索用のインデックス
 ファイルシステム上にファイルとして保存される
 データベースとファイルシステムから再構成可能であるため、オプ
ション扱い(ゼロから再構成するには時間がかかるのでバックアップ
を取る)
バックアップの種類
 コールドバックアップ
◦ アプリケーションを停止してバックアップを取得する
◦ 整合性の取れたバックアップデータを安全に取得できる
◦ サービス提供時間等、サービス品質が落ちる(と判断される)可
能性がある
 ホットバックアップ
◦ アプリケーションが稼働したままバックアップを取得する
◦ バックアップデータ自体の整合性が保証されない
◦ システム停止に伴うサービス品質低下が起こらない
※ もちろん、リストア時に整合性をとるための処理を行えば問題ありません(自動実行さ
れるものと、手動で実行する必要のあるものがあります)
コールドバックアップ
バックアップの方法
1. Alfrescoを停止する
2. 以下の3つのバックアップを取得する
◦ データベース : PostgreSQLのデータディレクトリ
 <alf_dir>/alf_data/postgresql 以下全部
◦ ファイルシステム : contentstoreディレクトリ
 <alf_dir>/alf_data/contentstore 以下全部
◦ 全文検索インデックス : solr/workspace, solr/archiveディレクトリ
 <alf_dir>/alf_data/solr/workspace
 <alf_dir>/alf_data/solr/archive
以上!とても簡単!!
※ Luceneの場合は<alf_dir>/alf_data/lucene-indexesディレクトリをバックアップします
※ データバックアップの他に、システムバックアップ(導入直後のVMスナップショットや
ハードディスクイメージ等)を取っておくと復旧が早いです
コールドバックアップ
リストアの方法
1. (必要に応じて)Alfresco/PostgreSQLを再セットアップする
2. バックアップデータを以下のディレクトリにコピーする
◦ データベース : PostgreSQLバックアップデータ
 <alf_dir>/alf_data/postgresql
◦ ファイルシステム : contentstoreバックアップデータ
 <alf_dir>/alf_data/contentstore
◦ 全文検索インデックス : Solrインデックスバックアップデータ
 <alf_dir>/alf_data/solr/workspace
 <alf_dir>/alf_data/solr/archive
 PostgreSQL, Alfrescoを起動する
以上!とっても簡単!!
※ コピー先にファイルが存在する場合は、コピー前に削除もしくは移動しておきます
※ Luceneの場合はバックアップデータを<alf_dir>/alf_data/lucene-indexesに戻します
※ Alfresco起動ユーザとバックアップ実行ユーザが異なる場合はファイルのownerに注意!
ホットバックアップ
ホットバックアップのポイント
 3つのバックアップ対象のバックアップ順序がとても重要
1. 全文検索インデックス
2. データベース
3. ファイルシステム
 全文検索インデックスはAlfrescoが定期的に(日次で)生成
するバックアップを使う
◦ 全文検索インデックス(=ただのファイル)をAlfresco起動中にコ
ピーすると、壊れたバックアップデータとなる
◦ バックアップ生成時刻はsolr/workspaceが2AM、solr/archiveが4AM
※ Luceneの場合のバックアップは3AMに生成されます
※ 時刻の変更はsolr.backup.alfresco.cronExpression, solr.backup.archive.cronExpression (Solr)、
index.backup.cronExpression (Lucene)をalfresco-global.propertiesで設定します
ホットバックアップ
バックアップの方法
1. 全文検索インデックスのバックアップを取得する
◦ <alf_dir>/alf_data/solrBackup 以下全部をコピーする
2. データベースのホットバックアップを取得する
◦ [事前準備] バックアップ実行ユーザのホームディレクトリ
に.pgpassファイルを作成しておく(chmod 0600 .pgpass)
◦ 以下のコマンドを実行してPostgreSQLのホットバックアップを
取得する(.pgpassでパスワード入力を省略できる)
3. ファイルシステムのバックアップを取得する
◦ <alf_dir>/alf_data/contentstore 以下全部をコピーする
※ .pgpassの中身は<hostname>:<port>:<dbname>:<user>:<password>
※ RDBMSの種類や構成に合わせて適宜ホットバックアップを実施してください
※ Luceneの場合は<alf_dir>/alf_data/backup-lucene-indexesをバックアップします
# /opt/alfresco-4.2.d/postgresql/bin/pg_dump -U alfresco -w --format=plain alfresco > /backup/pgdump.sql
localhost:5432:alfresco:alfresco:admin
ホットバックアップ
リストアの方法(1)
1. (必要に応じて)Alfresco/PostgreSQLを再セットアップする
2. バックアップデータを以下のディレクトリにコピーする
◦ ファイルシステム : contentstoreバックアップデータ
 <alf_dir>/alf_data/contentstore
◦ 全文検索インデックス : Solrインデックスバックアップデータ
 solrBackup/alfresco/snapshot.* ->
<alf_dir>/alf_data/solr/workspace/SpaceStore/index
 solrBackup/archive/snapshot.* ->
<alf_dir>/alf_data/solr/archive/SpaceStore/index
ホットバックアップ
リストアの方法(2)
3. PostgreSQLを起動する
4. データベースを復元する
◦ 以下のコマンドを実行してテーブルを作成する

◦ バックアップスクリプトを流す
5. Alfrescoを起動する
※ RDBMSの種類や構成に合わせて適宜リストアを実施してください
※ Luceneの場合はバックアップデータを<alf_dir>/alf_data/lucene-indexesにコピーし、
alfresco-global.propertiesでindex.recovery.mode=AUTOと設定してAlfrescoを起動します。イ
ンデックスリカバリが走るので、無事に終わったら設定を元に戻しておきます
# /opt/alfresco-4.2.d/postgresql/bin/psql
postgres=#CREATE ROLE alfresco PASSWORD'admin' LOGIN NOSUPERUSERINHERIT NOCREATEDB
NOCREATEROLE;
postgres=#CREATE DATABASEalfrescoWITH OWNER = alfresco ENCODING = 'UTF8'TEMPLATE =
template0TABLESPACE= pg_default LC_COLLATE = 'ja_JP.UTF-8' LC_CTYPE = 'ja_JP.UTF-8'CONNECTION
LIMIT = -1;
postgres=# ¥c alfresco alfresco
postgres=# ¥i /backup/pgdump.sql
ホットバックアップ
デモ
1. ホットバックアップ
2. コンテンツの追加
3. リストア
(おまけ)
Alfrescoが吹っ飛んだ時のデータ救出
 データベースとファイルシステムのバックアップデータからAlfresco内に登録されてい
たファイルを救出する
◦ ファイル実体はバイナリとしてはそのままだがファイル名が変わっている(e.g. 0f6f21e8-937b-
40fc-9efd-832d835634fc.bin)
◦ データベースで管理されている情報と突合し、元ファイル名を知る必要がある
答え
1. 同バージョンのAlfrescoを別途インストールし、バックアップデータからリストアす
る(基本的にはこちらを推奨)
2. 以下のクエリを投げ、元ファイル名と現ファイルパスの一覧を出力する(もうちょっ
と賢いクエリあるかも…)
SELECT docid.string_value, url.content_urlFROM alf_node_propertiesnp
INNER JOIN alf_content_dataacd on np.long_value = acd.id
INNER JOIN alf_content_urlurl on acd.content_url_id= url.id
INNER JOIN alf_node_propertiesdocid on docid.node_id = np.node_id
INNER JOIN alf_qnameaqn on docid.qname_id= aqn.id
WHERE aqn.local_name= "name" and aqn.ns_id= 6
商品1.jpg store://2013/9/24/11/10/2d0bd698-2846-40d7-aa08-db4e62b09d66.bin
商品4.jpg store://2013/9/24/11/10/36fd9b2f-0744-4767-804b-83fd97716fde.bin
商品5.jpg store://2013/9/24/11/10/60f7fe0a-36a8-46e5-ba82-bdc112f94366.bin
商品2.jpg store://2013/9/24/11/10/685484d9-3dba-4178-aa08-1dc7e926c3c4.bin
まとめ
 バックアップ/リストア対象データ
◦ データベース
◦ ファイルシステム
◦ 全文検索インデックス
 コールドバックアップ
◦ データディレクトリをコピーするだけ
 ホットバックアップ
◦ 全文検索インデックス→データベース→ファイルシステム
◦ 全文検索インデックスは生成されたバックアップデータ

More Related Content

What's hot

Alfresco勉強会#26 Alfresco SDK + Eclipseで開発してみよう
Alfresco勉強会#26 Alfresco SDK + Eclipseで開発してみようAlfresco勉強会#26 Alfresco SDK + Eclipseで開発してみよう
Alfresco勉強会#26 Alfresco SDK + Eclipseで開発してみよう
Jun Terashita
 
Alfresco勉強会#24 コンテンツのライフサイクル
Alfresco勉強会#24 コンテンツのライフサイクルAlfresco勉強会#24 コンテンツのライフサイクル
Alfresco勉強会#24 コンテンツのライフサイクル
Jun Terashita
 
Alfresco紹介
Alfresco紹介Alfresco紹介
Alfresco紹介
Tetsuya Hasegawa
 
Alfresco勉強会#40 QRコードによる文書の振り分け
Alfresco勉強会#40 QRコードによる文書の振り分けAlfresco勉強会#40 QRコードによる文書の振り分け
Alfresco勉強会#40 QRコードによる文書の振り分け
Takeshi Totani
 
Elasticsearchを使うときの注意点 公開用スライド
Elasticsearchを使うときの注意点 公開用スライドElasticsearchを使うときの注意点 公開用スライド
Elasticsearchを使うときの注意点 公開用スライド
崇介 藤井
 
20180704 AWS Black Belt Online Seminar Amazon Elastic File System (Amazon EFS...
20180704 AWS Black Belt Online Seminar Amazon Elastic File System (Amazon EFS...20180704 AWS Black Belt Online Seminar Amazon Elastic File System (Amazon EFS...
20180704 AWS Black Belt Online Seminar Amazon Elastic File System (Amazon EFS...
Amazon Web Services Japan
 
怖くないSpring Bootのオートコンフィグレーション
怖くないSpring Bootのオートコンフィグレーション怖くないSpring Bootのオートコンフィグレーション
怖くないSpring Bootのオートコンフィグレーション
土岐 孝平
 
行ロックと「LOG: process 12345 still waiting for ShareLock on transaction 710 afte...
行ロックと「LOG:  process 12345 still waiting for ShareLock on transaction 710 afte...行ロックと「LOG:  process 12345 still waiting for ShareLock on transaction 710 afte...
行ロックと「LOG: process 12345 still waiting for ShareLock on transaction 710 afte...
Masahiko Sawada
 
AWS Black Belt Techシリーズ Elastic Load Balancing (ELB)
AWS Black Belt Techシリーズ  Elastic Load Balancing (ELB)AWS Black Belt Techシリーズ  Elastic Load Balancing (ELB)
AWS Black Belt Techシリーズ Elastic Load Balancing (ELB)
Amazon Web Services Japan
 
Oracleからamazon auroraへの移行にむけて
Oracleからamazon auroraへの移行にむけてOracleからamazon auroraへの移行にむけて
Oracleからamazon auroraへの移行にむけて
Yoichi Sai
 
はじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタはじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタ
Satoyuki Tsukano
 
Amazon ElastiCacheのはじめ方
Amazon ElastiCacheのはじめ方Amazon ElastiCacheのはじめ方
Amazon ElastiCacheのはじめ方
Amazon Web Services Japan
 
Amazon Glacierのご紹介(機能編)
Amazon Glacierのご紹介(機能編) Amazon Glacierのご紹介(機能編)
Amazon Glacierのご紹介(機能編)
Amazon Web Services Japan
 
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
Trainocate Japan, Ltd.
 
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化
dcubeio
 
Zabbix最新情報 ~Zabbix 6.0に向けて~ @OSC2021 Online/Fall
Zabbix最新情報 ~Zabbix 6.0に向けて~ @OSC2021 Online/FallZabbix最新情報 ~Zabbix 6.0に向けて~ @OSC2021 Online/Fall
Zabbix最新情報 ~Zabbix 6.0に向けて~ @OSC2021 Online/Fall
Atsushi Tanaka
 
AWS Black Belt Online Seminar 2017 Amazon ElastiCache
AWS Black Belt Online Seminar 2017 Amazon ElastiCacheAWS Black Belt Online Seminar 2017 Amazon ElastiCache
AWS Black Belt Online Seminar 2017 Amazon ElastiCache
Amazon Web Services Japan
 
JSON:APIについてざっくり入門
JSON:APIについてざっくり入門JSON:APIについてざっくり入門
JSON:APIについてざっくり入門
iPride Co., Ltd.
 
Keycloakの最近のトピック
Keycloakの最近のトピックKeycloakの最近のトピック
Keycloakの最近のトピック
Hitachi, Ltd. OSS Solution Center.
 
20190320 AWS Black Belt Online Seminar Amazon EBS
20190320 AWS Black Belt Online Seminar Amazon EBS20190320 AWS Black Belt Online Seminar Amazon EBS
20190320 AWS Black Belt Online Seminar Amazon EBS
Amazon Web Services Japan
 

What's hot (20)

Alfresco勉強会#26 Alfresco SDK + Eclipseで開発してみよう
Alfresco勉強会#26 Alfresco SDK + Eclipseで開発してみようAlfresco勉強会#26 Alfresco SDK + Eclipseで開発してみよう
Alfresco勉強会#26 Alfresco SDK + Eclipseで開発してみよう
 
Alfresco勉強会#24 コンテンツのライフサイクル
Alfresco勉強会#24 コンテンツのライフサイクルAlfresco勉強会#24 コンテンツのライフサイクル
Alfresco勉強会#24 コンテンツのライフサイクル
 
Alfresco紹介
Alfresco紹介Alfresco紹介
Alfresco紹介
 
Alfresco勉強会#40 QRコードによる文書の振り分け
Alfresco勉強会#40 QRコードによる文書の振り分けAlfresco勉強会#40 QRコードによる文書の振り分け
Alfresco勉強会#40 QRコードによる文書の振り分け
 
Elasticsearchを使うときの注意点 公開用スライド
Elasticsearchを使うときの注意点 公開用スライドElasticsearchを使うときの注意点 公開用スライド
Elasticsearchを使うときの注意点 公開用スライド
 
20180704 AWS Black Belt Online Seminar Amazon Elastic File System (Amazon EFS...
20180704 AWS Black Belt Online Seminar Amazon Elastic File System (Amazon EFS...20180704 AWS Black Belt Online Seminar Amazon Elastic File System (Amazon EFS...
20180704 AWS Black Belt Online Seminar Amazon Elastic File System (Amazon EFS...
 
怖くないSpring Bootのオートコンフィグレーション
怖くないSpring Bootのオートコンフィグレーション怖くないSpring Bootのオートコンフィグレーション
怖くないSpring Bootのオートコンフィグレーション
 
行ロックと「LOG: process 12345 still waiting for ShareLock on transaction 710 afte...
行ロックと「LOG:  process 12345 still waiting for ShareLock on transaction 710 afte...行ロックと「LOG:  process 12345 still waiting for ShareLock on transaction 710 afte...
行ロックと「LOG: process 12345 still waiting for ShareLock on transaction 710 afte...
 
AWS Black Belt Techシリーズ Elastic Load Balancing (ELB)
AWS Black Belt Techシリーズ  Elastic Load Balancing (ELB)AWS Black Belt Techシリーズ  Elastic Load Balancing (ELB)
AWS Black Belt Techシリーズ Elastic Load Balancing (ELB)
 
Oracleからamazon auroraへの移行にむけて
Oracleからamazon auroraへの移行にむけてOracleからamazon auroraへの移行にむけて
Oracleからamazon auroraへの移行にむけて
 
はじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタはじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタ
 
Amazon ElastiCacheのはじめ方
Amazon ElastiCacheのはじめ方Amazon ElastiCacheのはじめ方
Amazon ElastiCacheのはじめ方
 
Amazon Glacierのご紹介(機能編)
Amazon Glacierのご紹介(機能編) Amazon Glacierのご紹介(機能編)
Amazon Glacierのご紹介(機能編)
 
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
 
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化
 
Zabbix最新情報 ~Zabbix 6.0に向けて~ @OSC2021 Online/Fall
Zabbix最新情報 ~Zabbix 6.0に向けて~ @OSC2021 Online/FallZabbix最新情報 ~Zabbix 6.0に向けて~ @OSC2021 Online/Fall
Zabbix最新情報 ~Zabbix 6.0に向けて~ @OSC2021 Online/Fall
 
AWS Black Belt Online Seminar 2017 Amazon ElastiCache
AWS Black Belt Online Seminar 2017 Amazon ElastiCacheAWS Black Belt Online Seminar 2017 Amazon ElastiCache
AWS Black Belt Online Seminar 2017 Amazon ElastiCache
 
JSON:APIについてざっくり入門
JSON:APIについてざっくり入門JSON:APIについてざっくり入門
JSON:APIについてざっくり入門
 
Keycloakの最近のトピック
Keycloakの最近のトピックKeycloakの最近のトピック
Keycloakの最近のトピック
 
20190320 AWS Black Belt Online Seminar Amazon EBS
20190320 AWS Black Belt Online Seminar Amazon EBS20190320 AWS Black Belt Online Seminar Amazon EBS
20190320 AWS Black Belt Online Seminar Amazon EBS
 

Alfresco勉強会#18 alfrescoのバックアップとリストア