Відмінності між версіями «Оновлення DSpace»

(Імпорт старої БД і сховища у новий DSpace)
(Див. також)
 
Рядок 270: Рядок 270:
 
* [[Налаштування DSpace]]
 
* [[Налаштування DSpace]]
 
* [[Додаткові поля Dublin Core для 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.

Див. також

Посилання