Your SlideShare is downloading. ×
Alfresco勉強会#18 alfrescoのバックアップとリストア
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

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

1,954

Published on

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,954
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
37
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 第18回Alfresco勉強会 Alfrescoのバックアップとリストア 2013/09/25 @_tasky
  • 2. 自己紹介  私は… ◦ @_tasky  平日は… ◦ 株式会社イージフでAlfrescoやLiferayをいじってます  休日は… ◦ 1児(2歳♀)の父親業やってます
  • 3. Contents  はじめに  バックアップ/リストア対象データ  バックアップの種類  コールドバックアップ ◦ バックアップの方法 ◦ リストアの方法  ホットバックアップ ◦ ホットバックアップのポイント ◦ バックアップの方法 ◦ リストアの方法 ◦ デモ  (おまけ)Alfrescoが吹っ飛んだ時のデータ救出
  • 4. はじめに  本資料の内容は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
  • 5. バックアップ/リストア対象データ  バックアップ/リストア対象データ=Alfrescoがバックエンドで 管理するデータ ◦ データベース  MySQL, PostgreSQL, Oracle等が管理するデータ ◦ ファイルシステム  コンテンツのファイル実体  ファイルシステム上に元ファイルと同バイナリで保存される(名前は 変わる) ◦ 全文検索インデックス(オプション)  全文検索用のインデックス  ファイルシステム上にファイルとして保存される  データベースとファイルシステムから再構成可能であるため、オプ ション扱い(ゼロから再構成するには時間がかかるのでバックアップ を取る)
  • 6. バックアップの種類  コールドバックアップ ◦ アプリケーションを停止してバックアップを取得する ◦ 整合性の取れたバックアップデータを安全に取得できる ◦ サービス提供時間等、サービス品質が落ちる(と判断される)可 能性がある  ホットバックアップ ◦ アプリケーションが稼働したままバックアップを取得する ◦ バックアップデータ自体の整合性が保証されない ◦ システム停止に伴うサービス品質低下が起こらない ※ もちろん、リストア時に整合性をとるための処理を行えば問題ありません(自動実行さ れるものと、手動で実行する必要のあるものがあります)
  • 7. コールドバックアップ バックアップの方法 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スナップショットや ハードディスクイメージ等)を取っておくと復旧が早いです
  • 8. コールドバックアップ リストアの方法 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に注意!
  • 9. ホットバックアップ ホットバックアップのポイント  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で設定します
  • 10. ホットバックアップ バックアップの方法 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
  • 11. ホットバックアップ リストアの方法(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
  • 12. ホットバックアップ リストアの方法(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
  • 13. ホットバックアップ デモ 1. ホットバックアップ 2. コンテンツの追加 3. リストア
  • 14. (おまけ) 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
  • 15. まとめ  バックアップ/リストア対象データ ◦ データベース ◦ ファイルシステム ◦ 全文検索インデックス  コールドバックアップ ◦ データディレクトリをコピーするだけ  ホットバックアップ ◦ 全文検索インデックス→データベース→ファイルシステム ◦ 全文検索インデックスは生成されたバックアップデータ

×