alfrescoのバックアップとレストア
TRANSCRIPT
Alfresco勉強会#13@mryoshio
自己紹介Alfrescoバックアップとレストアデモ ( ホットバックアップ )まとめ
目次
2
3
某 A 社で Alfresco導入の手伝いやカスタマイズ,サポートを担当 → Alfrescoのコンサルティング
某 A 社で Liferay導入の (ry
普段の仕事
4
基本的に毎回ネタを振り絞って機能等を紹介過去のスライドはこちら
http://www.slideshare.net/mryoshio
勉強会との関わり
5
仕事でもっとコード書きたい ( 言語問わず )
最近の悩み
6
7
英 Alfresco社が開発している OSSの ECMhttp://svn.alfresco.com/repos/alfresco-open-mirr
or/ (ソースコード )
エンタープライズ・コンテンツ管理Documentum (*1) や SharePoint (*2) が競合
コストCommunity Edition → 無償Enterprise Edition → サブスクリプションを購入
簡単な説明
*2 http://www.emc.com/domains/documentum/*1 http://sharepoint.microsoft.com/ 8
9
今日の話の元ネタhttp://docs.alfresco.com/4.0/index.jsp?topic=
%2Fcom.alfresco.enterprise.doc%2Fconcepts%2Fch-backup-restore.html
http://wiki.alfresco.com/wiki/Backup_and_Restore
*↑を読んで理解できる人は聞かなくて良いです。
10
リポジトリ ( コンテンツ実体 )dir.rootで設定されたディレクトリ ( 通常 alf_data) 。
メタデータ (DB)コンテンツの属性情報等。
検索インデクス ( 通常 dir.root/lucene-indexes)最悪無くても大丈夫 ( メタデータを元に再構築可能 ) 。
※今回は, Solrを使ってる場合は考えてない。
バックアップの対象
11
必須dir.rootが指すディレクトリDBの内容
おまけLuceneインデクス
多くの場合 dir.root内にあるのでまとめて取るけど。設定ファイル
dir.root index.recovery.mode db.driver/db.url
要するに
12
コールドバックアップAlfrescoを停止した状態で行うバックアップ
= リポジトリや DBへの書き込みが無い状態停止して対応できる余裕がある場合はこっち
( あまり無いと思うけど )
ホットバックアップAlfrescoが起動した状態で行うバックアップ
= リポジトリや DBへの書き込みがあり得る余裕が無い(普通そうでしょ)場合はこちら
バックアップの種類
13
コールドバックアップalfrescoを停止
DBをバックアップ使ってる DBの流儀に従って下さい。
リポジトリをバックアップ厳密には lucene-indexesは不要だけど多分
dir.root内にあるのでついでに。
バックアップしたものをセットで保存14
ホットバックアップ( 1/2)[ 重要 ] 手順の順番が大事。コールドと同じだけど。
DBをバックアップ
その後すぐに,リポジトリをバックアップ
バックアップしたものをセットで保存
15
ホットバックアップ( 2/2)何で手順が大事なの?
壊れるから何が壊れるの?
DBとリポジトリの整合性バックアップ時に書き込みされていたコンテンツのメタデータが DBに存在する,かつ,リポジトリに実体が存在しない状態が発生したら困る。
復元できないの?頑張ればできるかもしれないけど無駄な労力そんなのしたくない
16
整合性 : ◯
17
コンテンツに対し,実体とメタデータが存在
name: diargram.pdfmimetype: application/pdfcreator: Mike DaviscreationDate: 2013/1/23…
整合性 : △
18
コンテンツに対し,実体のみが存在
?Alfrescoはコンテンツを存在しないと見なす
コンテンツに対し,メタデータのみが存在
?
?
整合性 : ×
19
name: diargram.pdfmimetype: application/pdfcreator: Mike DaviscreationDate: 2013/1/23…
Alfrescoはコンテンツが壊れていると判断 = エラー発生
20
Apache Tomcat 6.0.35
Alfresco Community Edition v4.0.0 (4.0.e)
MySQL 5.x
環境
21
負荷の生成Alfrescoに負荷がかかっている状況の用意Alfrescoにコンテンツを作り続ける
ホットバックアップ( DB,リポジトリ)Alfrescoのプロセスを殺す
バックアップセットを使いレストア
Alfresco再起動
デモの流れ
22
今日使うサンプルプログラムの場所https://github.com/mryoshio/AlfrescoStudy.git/backup_res
tore/
test_webscript/リクエストを受ける度にランダム値の内容を持つランダム名ファイルを作成する。
test_python/上記 Web Scriptに対するリクエストを送信
負荷の生成( 1/2)
23
コンテンツ作成Web Scriptの配置test_webscript/*をすべて /Company Home/Data
Dictionary/Web Scripts/org/alfresco/mryoshio/へアップロード
Pythonスクリプトの実行python main.py 5
=>5スレッドで次の手順を無限ループコンテンツ作成WebScript実行リクエストの送信ランダム値のスリープ
負荷の生成( 2/2)
24
ホットバックアップDBをバックアップ
その後すぐに,リポジトリをバックアップ
バックアップしたものをセットで保存
25
レストアDB再作成 & ダンプデータの流し込み
バックアップしたリポジトリの展開
alfrescoの起動
26
27
28
Alfresco?
バックアップの対象 ?
バックアップの種類 ?