Відмінності між версіями «Оновлення DSpace»
Dubyk (обговорення • внесок) м (→Невдала спроба з „pg_restore“) |
Dubyk (обговорення • внесок) (→Див. також) |
||
(Не показано 12 проміжних версій цього користувача) | |||
Рядок 1: | Рядок 1: | ||
Оновлення DSpace | Оновлення DSpace | ||
− | = Оновлення DSpace 1.5.2 »» 1.8.1 = | + | = Оновлення DSpace 1.5.2 » 5.6 = |
+ | |||
+ | Якщо різниця між версіями DSpace значна, рекомендується [[Встановлення DSpace на ОС Debian|встановити DSpace начисто]] та перенести БД і сховище. | ||
+ | |||
+ | == Архівування старої БД і сховища == | ||
+ | |||
+ | Дії проводимо на старій системі... | ||
+ | |||
+ | Дамп БД | ||
+ | sudo pg_dump -U postgres dspace > dump.sql | ||
+ | |||
+ | Архівування сховища. | ||
+ | |||
+ | tar -cvf assetstore.tar /usr/share/dspace/assetstore/ | ||
+ | |||
+ | == Імпорт старої БД і сховища у новий DSpace і міграція == | ||
+ | |||
+ | Дії проводимо на новій системі... | ||
+ | |||
+ | Копіюємо сюди файли dump.sql та assetstore.tar. | ||
+ | |||
+ | 1) Якщо в новому DSpace вже є якісь тестові дані, очищуємо їх. | ||
+ | |||
+ | /etc/init.d/tomcat8 stop | ||
+ | sudo service postgresql restart | ||
+ | |||
+ | sudo su postgres | ||
+ | psql -U postgres | ||
+ | DROP DATABASE dspace; | ||
+ | \q | ||
+ | exit | ||
+ | |||
+ | rm -R /home/data/dspace/assetstore/* | ||
+ | |||
+ | 2) Наново створюємо БД dspace і користувача dspace | ||
+ | sudo su postgres | ||
+ | createuser -U postgres -d -A -P dspace | ||
+ | createdb -U dspace -E UNICODE dspace | ||
+ | exit | ||
+ | |||
+ | service postgresql restart | ||
+ | |||
+ | (придумуємо і запам'ятовуємо „ПАРОЛЬ“) | ||
+ | |||
+ | 3) Надання прав користувачу dspace на БД dspace | ||
+ | |||
+ | sudo su postgres | ||
+ | psql -U postgres -d dspace | ||
+ | ALTER ROLE dspace WITH PASSWORD 'ПАРОЛЬ'; | ||
+ | ALTER DATABASE dspace OWNER TO dspace; | ||
+ | GRANT ALL PRIVILEGES ON DATABASE dspace TO dspace; | ||
+ | CREATE EXTENSION pgcrypto; | ||
+ | \q | ||
+ | exit | ||
+ | |||
+ | service postgresql restart | ||
+ | |||
+ | 4) Імпорт старої БД | ||
+ | sudo -u postgres psql dspace < dump.sql | ||
+ | |||
+ | /etc/init.d/postgresql restart | ||
+ | |||
+ | 5) Оновлення послідовностей | ||
+ | |||
+ | sudo -u postgres psql -f update-sequences.sql dspace > 4_update_sequences_LOG.txt | ||
+ | |||
+ | Якщо у виводі є помилки див. далі | ||
+ | |||
+ | 5) У dspace.cfg коректуємо назву БД і вказуємо пароль | ||
+ | |||
+ | db.url = jdbc:postgresql://localhost:5432/dspace | ||
+ | db.username = dspace | ||
+ | db.password = ПАРОЛЬ | ||
+ | |||
+ | 7) На імпортовані таблиці ще раз надаємо права користувачу dspace на БД dspace | ||
+ | |||
+ | sudo su postgres | ||
+ | psql -U postgres -d dspace | ||
+ | ALTER ROLE dspace WITH PASSWORD 'ПАРОЛЬ'; | ||
+ | ALTER DATABASE dspace OWNER TO dspace; | ||
+ | GRANT ALL PRIVILEGES ON DATABASE dspace TO dspace; | ||
+ | REASSIGN OWNED BY dspace TO dspace; | ||
+ | \q | ||
+ | exit | ||
+ | /etc/init.d/postgresql restart | ||
+ | |||
+ | 8) Розпаковуємо старий бекап assetstore.tar | ||
+ | у теку /home/data/dspace/assetstore/ та змінюємо права | ||
+ | sudo chown tomcat8:tomcat8 /home/data/dspace/assetstore/ -R | ||
+ | |||
+ | 9) Запуск процедури міграції БД | ||
+ | |||
+ | sudo /etc/init.d/tomcat8 restart | ||
+ | sudo -u tomcat8 /home/data/dspace/bin/dspace database info > dspace_database_migrate_LOG.txt | ||
+ | sudo -u tomcat8 /home/data/dspace/bin/dspace database migrate >> dspace_database_migrate_LOG.txt | ||
+ | |||
+ | В результаті у виводі повинно бути щось на кшталат | ||
+ | Database URL: jdbc:postgresql://localhost:5432/dspace | ||
+ | Database Schema: public | ||
+ | Database Software: PostgreSQL version 9.6.2 | ||
+ | Database Driver: PostgreSQL Native Driver version PostgreSQL 9.1 JDBC4 (build 901) | ||
+ | |||
+ | +----------------+----------------------------+---------------------+---------+ | ||
+ | | Version | Description | Installed on | State | | ||
+ | +----------------+----------------------------+---------------------+---------+ | ||
+ | | 1.1 | Initial DSpace 1.1 databas | | PreInit | | ||
+ | | 1.2 | Upgrade to DSpace 1.2 sche | | PreInit | | ||
+ | | 1.3 | Upgrade to DSpace 1.3 sche | | PreInit | | ||
+ | | 1.3.9 | Drop constraint for DSpace | | PreInit | | ||
+ | | 1.4 | Upgrade to DSpace 1.4 sche | | PreInit | | ||
+ | | 1.5 | Initializing from DSpace 1 | 2017-05-11 00:32:28 | Success | | ||
+ | | 1.5.9 | Drop constraint for DSpace | 2017-05-11 00:32:29 | Success | | ||
+ | | 1.6 | Upgrade to DSpace 1.6 sche | 2017-05-11 00:32:33 | Success | | ||
+ | | 1.7 | Upgrade to DSpace 1.7 sche | 2017-05-11 00:32:42 | Success | | ||
+ | | 1.8 | Upgrade to DSpace 1.8 sche | 2017-05-11 00:32:42 | Success | | ||
+ | | 3.0 | Upgrade to DSpace 3.x sche | 2017-05-11 00:32:48 | Success | | ||
+ | | 4.0 | Upgrade to DSpace 4.x sche | 2017-05-11 00:32:49 | Success | | ||
+ | | 5.0.2014.08.08 | DS-1945 Helpdesk Request a | 2017-05-11 00:32:49 | Success | | ||
+ | | 5.0.2014.09.25 | DS 1582 Metadata For All O | 2017-05-11 00:32:49 | Success | | ||
+ | | 5.0.2014.09.26 | DS-1582 Metadata For All O | 2017-05-11 00:32:49 | Success | | ||
+ | | 5.6.2016.08.23 | DS-3097 | 2017-05-11 00:32:48 | Success | | ||
+ | +----------------+----------------------------+---------------------+---------+ | ||
+ | |||
+ | Database URL: jdbc:postgresql://localhost:5432/dspace | ||
+ | Migrating database to latest version... (Check logs for details) | ||
+ | Done. | ||
+ | |||
+ | Між старою версією БД DSpace і новою у колонці State повинно бути „Success“. | ||
+ | |||
+ | 10) Якщо на кроці 5 є помилки чи на 9 кроці немає „Success“ необхідно повторити (можливо декілька разів) | ||
+ | крок 5, перезапуск БД (/etc/init.d/postgresql restart) та крок 9. | ||
+ | Не зрозуміло чому так. Є підозра, що скрипти міграції кроку 9 завершуються але дії продовжуються у фонових процесах. | ||
+ | |||
+ | == Переіндексація DSpace == | ||
+ | При успішній міграції запускаємо переіндексацію DSpace | ||
+ | |||
+ | /etc/init.d/tomcat8 restart | ||
+ | sudo -u tomcat8 /home/data/dspace/bin/dspace index-discovery >> reindex_LOG.txt | ||
+ | |||
+ | При великій БД (десятки тисяч записів) це може зайняти декілька годин. | ||
+ | |||
+ | = Оновлення DSpace 1.5.2 »» 1.8.1 (ЗАСТАРІЛО) = | ||
== Відхід від рекомендованого оновлення == | == Відхід від рекомендованого оновлення == | ||
Рядок 90: | Рядок 231: | ||
== Вдала спроба з бекапом „pg_dumpall“ == | == Вдала спроба з бекапом „pg_dumpall“ == | ||
− | Це варіант відновлення всієї БД Postgres (а не лише таблиці „dspace“ як у попередньому випадку) | + | Це варіант відновлення всієї БД Postgres (а не лише таблиці „dspace“ як у попередньому випадку). |
Базу даних можна витерти через „phppgadmin“. SQL з бекапу „pg_dumpall“ створить її наново. | Базу даних можна витерти через „phppgadmin“. SQL з бекапу „pg_dumpall“ створить її наново. | ||
Рядок 119: | Рядок 260: | ||
sudo -u dspace /dspace/bin/dspace index-init | sudo -u dspace /dspace/bin/dspace index-init | ||
+ | |||
+ | = Налаштування = | ||
+ | |||
+ | Щодо додаткових налаштувань та адаптацій див. тут: [[Налаштування DSpace]]. | ||
= Див. також = | = Див. також = | ||
* [[Встановлення DSpace на ОС Debian]] | * [[Встановлення DSpace на ОС Debian]] | ||
+ | * [[Налаштування DSpace]] | ||
+ | * [[Додаткові поля Dublin Core для DSpace]] | ||
+ | * [[Українізація DSpace]] | ||
= Посилання = | = Посилання = |
Поточна версія на 13:53, 26 жовтня 2017
Оновлення DSpace
Зміст
Оновлення DSpace 1.5.2 » 5.6
Якщо різниця між версіями DSpace значна, рекомендується встановити DSpace начисто та перенести БД і сховище.
Архівування старої БД і сховища
Дії проводимо на старій системі...
Дамп БД
sudo pg_dump -U postgres dspace > dump.sql
Архівування сховища.
tar -cvf assetstore.tar /usr/share/dspace/assetstore/
Імпорт старої БД і сховища у новий DSpace і міграція
Дії проводимо на новій системі...
Копіюємо сюди файли dump.sql та assetstore.tar.
1) Якщо в новому DSpace вже є якісь тестові дані, очищуємо їх.
/etc/init.d/tomcat8 stop sudo service postgresql restart sudo su postgres psql -U postgres DROP DATABASE dspace; \q exit rm -R /home/data/dspace/assetstore/*
2) Наново створюємо БД dspace і користувача dspace
sudo su postgres createuser -U postgres -d -A -P dspace createdb -U dspace -E UNICODE dspace exit service postgresql restart
(придумуємо і запам'ятовуємо „ПАРОЛЬ“)
3) Надання прав користувачу dspace на БД dspace
sudo su postgres psql -U postgres -d dspace ALTER ROLE dspace WITH PASSWORD 'ПАРОЛЬ'; ALTER DATABASE dspace OWNER TO dspace; GRANT ALL PRIVILEGES ON DATABASE dspace TO dspace; CREATE EXTENSION pgcrypto; \q exit service postgresql restart
4) Імпорт старої БД
sudo -u postgres psql dspace < dump.sql /etc/init.d/postgresql restart
5) Оновлення послідовностей
sudo -u postgres psql -f update-sequences.sql dspace > 4_update_sequences_LOG.txt
Якщо у виводі є помилки див. далі
5) У dspace.cfg коректуємо назву БД і вказуємо пароль
db.url = jdbc:postgresql://localhost:5432/dspace db.username = dspace db.password = ПАРОЛЬ
7) На імпортовані таблиці ще раз надаємо права користувачу dspace на БД dspace
sudo su postgres psql -U postgres -d dspace ALTER ROLE dspace WITH PASSWORD 'ПАРОЛЬ'; ALTER DATABASE dspace OWNER TO dspace; GRANT ALL PRIVILEGES ON DATABASE dspace TO dspace; REASSIGN OWNED BY dspace TO dspace; \q exit /etc/init.d/postgresql restart
8) Розпаковуємо старий бекап assetstore.tar у теку /home/data/dspace/assetstore/ та змінюємо права
sudo chown tomcat8:tomcat8 /home/data/dspace/assetstore/ -R
9) Запуск процедури міграції БД
sudo /etc/init.d/tomcat8 restart sudo -u tomcat8 /home/data/dspace/bin/dspace database info > dspace_database_migrate_LOG.txt sudo -u tomcat8 /home/data/dspace/bin/dspace database migrate >> dspace_database_migrate_LOG.txt
В результаті у виводі повинно бути щось на кшталат
Database URL: jdbc:postgresql://localhost:5432/dspace Database Schema: public Database Software: PostgreSQL version 9.6.2 Database Driver: PostgreSQL Native Driver version PostgreSQL 9.1 JDBC4 (build 901) +----------------+----------------------------+---------------------+---------+ | Version | Description | Installed on | State | +----------------+----------------------------+---------------------+---------+ | 1.1 | Initial DSpace 1.1 databas | | PreInit | | 1.2 | Upgrade to DSpace 1.2 sche | | PreInit | | 1.3 | Upgrade to DSpace 1.3 sche | | PreInit | | 1.3.9 | Drop constraint for DSpace | | PreInit | | 1.4 | Upgrade to DSpace 1.4 sche | | PreInit | | 1.5 | Initializing from DSpace 1 | 2017-05-11 00:32:28 | Success | | 1.5.9 | Drop constraint for DSpace | 2017-05-11 00:32:29 | Success | | 1.6 | Upgrade to DSpace 1.6 sche | 2017-05-11 00:32:33 | Success | | 1.7 | Upgrade to DSpace 1.7 sche | 2017-05-11 00:32:42 | Success | | 1.8 | Upgrade to DSpace 1.8 sche | 2017-05-11 00:32:42 | Success | | 3.0 | Upgrade to DSpace 3.x sche | 2017-05-11 00:32:48 | Success | | 4.0 | Upgrade to DSpace 4.x sche | 2017-05-11 00:32:49 | Success | | 5.0.2014.08.08 | DS-1945 Helpdesk Request a | 2017-05-11 00:32:49 | Success | | 5.0.2014.09.25 | DS 1582 Metadata For All O | 2017-05-11 00:32:49 | Success | | 5.0.2014.09.26 | DS-1582 Metadata For All O | 2017-05-11 00:32:49 | Success | | 5.6.2016.08.23 | DS-3097 | 2017-05-11 00:32:48 | Success | +----------------+----------------------------+---------------------+---------+ Database URL: jdbc:postgresql://localhost:5432/dspace Migrating database to latest version... (Check logs for details) Done.
Між старою версією БД DSpace і новою у колонці State повинно бути „Success“.
10) Якщо на кроці 5 є помилки чи на 9 кроці немає „Success“ необхідно повторити (можливо декілька разів) крок 5, перезапуск БД (/etc/init.d/postgresql restart) та крок 9. Не зрозуміло чому так. Є підозра, що скрипти міграції кроку 9 завершуються але дії продовжуються у фонових процесах.
Переіндексація DSpace
При успішній міграції запускаємо переіндексацію DSpace
/etc/init.d/tomcat8 restart sudo -u tomcat8 /home/data/dspace/bin/dspace index-discovery >> reindex_LOG.txt
При великій БД (десятки тисяч записів) це може зайняти декілька годин.
Оновлення DSpace 1.5.2 »» 1.8.1 (ЗАСТАРІЛО)
Відхід від рекомендованого оновлення
В офіційних керівництвах рекомендується робити покрокові оновлення, зокрема:
Однак описаний в цих керівництвах метод не дав результату. Декілька причин:
1) Конфігураційний файл dspace.cfg — рекомендується вносити в нього усі зміни, що з’являються від версії до версії, а їх доволі багато. Виявилося простіше перенести персональні налаштування у новий dspace.cfg.
2) Скомпілювати DSpace на 1.6.2 так і не вдалося.
Отож розглядається варіант встановлення нового DSpace 1.8.1 та перенесення на нього усіх даних та налаштувань.
Резервна копія
Копія БД:
для таблиці „dspace“:
sudo -u postgres pg_dump -Ft -b -U dspace dspace | pbzip2 -9 > /home/dspace/backups/pg_dump__dspace__DSpace_1_5_2_Postgres_8_4.tar.bz2
для усєї БД:
sudo -u postgres pg_dumpall -U postgres | pbzip2 -9 > /home/dspace/backups/pg_dumpall__DSpace_1_5_2_Postgres_8_4.sql.bz2
Архівування сховища „assetstore“:
tar -cvf assetstore_dspace.tar /usr/share/dspace/assetstore/ pbzip2 -f assetstore_dspace.tar
Встановлення Debian GNU/Linux
Детальніше про встановлення Debian.
Встановлення DSpace
Детальніше про встановлення DSpace.
Бекапи 1.5.2
Тека бекапу БД DSpace 1.5.2:
mkdir /home/dspace/backups/1_5_2
Сюди копіюємо бекапи
pg_dumpall_elartu_02-20-2012_13-27.sql.bz2 pg_dump_dspace_elartu_02-20-2012_13-27.tar.bz2 assetstore_elartu_02-20-2012_17-52.tar.bz2
та розпаковуємо їх
pbzip2 -d pg_dumpall_elartu_02-20-2012_13-27.sql.bz2 pbzip2 -d pg_dump_dspace_elartu_02-20-2012_13-27.tar.bz2 pbzip2 -d assetstore_elartu_02-20-2012_17-52.tar.bz2 tar -xf assetstore_elartu_02-20-2012_17-52.tar
Невдала спроба з „pg_restore“
sudo -u postgres pg_restore -c -d dspace -U postgres -Ft pg_dump_dspace_elartu_02-20-2012_13-27.tar sudo -u postgres psql -U dspace -f /home/dspace/source/dspace-1.8.1-src-release/dspace/etc/postgres/database_schema_15-16.sql dspace sudo -u postgres psql -U dspace -f /home/dspace/source/dspace-1.8.1-src-release/dspace/etc/postgres/database_schema_16-17.sql dspace sudo -u postgres psql -U dspace -f /home/dspace/source/dspace-1.8.1-src-release/dspace/etc/postgres/database_schema_17-18.sql dspace sudo -u postgres psql -U dspace -f /home/dspace/source/dspace-1.8.1-src-release/dspace/etc/postgres/update-sequences.sql dspace
На жаль, при цьому, у виводі 1-ої команди багато помилок і БД відновлюється не повністю (відсутні зібрання та підфонди, групи користувачів і т.п.). Таблиця „collection“ пуста. Можливо це зв'язано з різницею версію Posgres 8.4 та 9.1.
Зокрема були такі помилки:
pg_restore: [archiver (db)] Error while PROCESSING TOC: pg_restore: [archiver (db)] Error from TOC entry 2145; 2606 25505 FK CONSTRAINT community2community_child_comm_id_fkey dspace pg_restore: [archiver (db)] could not execute query: ERROR: constraint "community2community_child_comm_id_fkey" of relation "community2community" does not exist Command was: ALTER TABLE ONLY public.community2community DROP CONSTRAINT community2community_child_comm_id_fkey; pg_restore: [archiver (db)] Error from TOC entry 2147; 2606 25522 FK CONSTRAINT community2collection_collection_id_fkey dspace pg_restore: [archiver (db)] could not execute query: ERROR: constraint "community2collection_collection_id_fkey" of relation "community2collection" does not exist Command was: ALTER TABLE ONLY public.community2collection DROP CONSTRAINT community2collection_collection_id_fkey;
Вдала спроба з бекапом „pg_dumpall“
Це варіант відновлення всієї БД Postgres (а не лише таблиці „dspace“ як у попередньому випадку).
Базу даних можна витерти через „phppgadmin“. SQL з бекапу „pg_dumpall“ створить її наново.
sudo -u postgres psql -U postgres -f pg_dumpall_elartu_02-20-2012_13-27.sql sudo -u postgres psql -U dspace -f /home/dspace/source/dspace-1.8.1-src-release/dspace/etc/postgres/database_schema_15-16.sql dspace sudo -u postgres psql -U dspace -f /home/dspace/source/dspace-1.8.1-src-release/dspace/etc/postgres/database_schema_17-18.sql dspace sudo -u postgres psql -U dspace -f /home/dspace/source/dspace-1.8.1-src-release/dspace/etc/postgres/database_schema_17-18.sql dspace sudo -u postgres psql -U dspace -f /home/dspace/source/dspace-1.8.1-src-release/dspace/etc/postgres/update-sequences.sql dspace
Також
sudo -u dspace /dspace/bin/dspace index-init
При цьому пароль до БД „dspace“ такий як у версії старій 1.5.2. Отож, якщо він відрізняється, то його також потрібно поправити й у dspace.cfg.
Сховище „assetstore“
Переміщуємо вміст сховища „assetstore“ 1.5.2 до теки /dspace/assetstore
та виставляємо права
sudo chown -R tomcat6:tomcat6 /dspace/assetstore
Перегенерація пошукового індексу
sudo -u dspace /dspace/bin/dspace index-init
Налаштування
Щодо додаткових налаштувань та адаптацій див. тут: Налаштування DSpace.
Див. також
- Встановлення DSpace на ОС Debian
- Налаштування DSpace
- Додаткові поля Dublin Core для DSpace
- Українізація DSpace
Посилання
- dspace.2283337.n4.nabble.com/ „Dspace-tech: Restoring backup“