SQLiteからMySQLへのデータ移行¶
ストレージサービスはSQLiteおよびMySQLデータベースの両方をサポートしています。ほとんどの場合、SQLiteは同時書き込みをサポートしていないため、後者のMySQLの使用が好ましいです。これは、ストレージサービスが長い書き込みトランザクションを実行する事実によって悪化されます。
以下に、データをMySQLに移動するために必要な手順の概要を示します。進む前にSQLiteデータベースのバックアップを確実に行ってください。
ストレージサービスを停止:
systemctl stop archivematica-storage-service
データをJSONにエクスポート:
sudo -u archivematica bash -c " \ set -a -e -x source /etc/default/archivematica-storage-service || \ source /etc/sysconfig/archivematica-storage-service \ || (echo 'Environment file not found'; exit 1) cd /usr/lib/archivematica/storage-service /usr/share/archivematica/virtualenvs/archivematica-storage-service/bin/python manage.py dumpdata \ --exclude=auth.permission --exclude=contenttypes --exclude=sessions.session --natural-foreign --natural-primary --indent 4 -o /tmp/datadump.json ";
MySQLデータベースの作成:
CREATE DATABASE storage_service_test CHARACTER SET utf8 COLLATE utf8_general_ci;
ユーザーに権限を付与:
GRANT ALL PRIVILEGES ON storage_service_test.* TO 'username'@'localhost';
サービス設定を更新してください。例えば、
/etc/default/archivematica-storage-service内でSS_DB_NAMEを削除し、代わりに以下を追加します:SS_DB_URL=mysql://username:password@hostname:3306/storage_service_test
MySQLテーブルの作成:
sudo -u archivematica bash -c " \ set -a -e -x source /etc/default/archivematica-storage-service || \ source /etc/sysconfig/archivematica-storage-service \ || (echo 'Environment file not found'; exit 1) cd /usr/lib/archivematica/storage-service /usr/share/archivematica/virtualenvs/archivematica-storage-service/bin/python manage.py migrate ";
JSONエクスポートの読み込み:
sudo -u archivematica bash -c " \ set -a -e -x source /etc/default/archivematica-storage-service || \ source /etc/sysconfig/archivematica-storage-service \ || (echo 'Environment file not found'; exit 1) cd /usr/lib/archivematica/storage-service /usr/share/archivematica/virtualenvs/archivematica-storage-service/bin/python manage.py loaddata /tmp/datadump.json ";
ストレージサービスの起動:
systemctl start archivematica-storage-service
Ansibleを利用している場合、Archivematicaの役割は自動的に移行を実行できます。 instructions に従ってください。