Мигрируем контент с Confluence 4.1. на облако

Мигрируем контент с Confluence 4.1. на облако

@SashP84

Итак, тут предстояло решить одну задачку.

Есть у нас очень старый Confluence 4.1.

Что нам для этого понадобится:

  • Серверная версия Confluence последней версии - можно скачать пробную
  • СУБД PostgreSQL 8.4 и выше

Я использовал СУБД PostgreSQL 8.4, если вам удобно можете использовать MySQL.

Приступим.

  1. Установите Confluence Server последней версии.

У меня версия 6.10.1

Как и написал, достаточно триальной версии.

Про установку PostgreSQL и Confluence писать не буду подробно, думаю разберетесь :)

2. Когда вся часть установки завершена и у вас чистый Confluence Server, обязательно сделайте бэкап базы данных!

Бэкап можно сделать в обычном виде без сжатия.

Для чего это нужно? Дело всё в том, что, если в процессе импорта возникнут какие-то ошибки и вы попытаетесь его повторить, то у вас ничего не выйдет. Так как запросы INSERT уже были сделаны в БД, а соответственно повторно их будет уже не выполнить. Поэтому и стоит держать всегда бэкап БД, чтобы каждый раз не переустанавливать Confluence Server.

3. Итак. В моём случае это версия 4.1. build 3126. Да-да совсем старичок :)

4. Производить иморт пространства из старого Confluence обязательно надо без отсутствия всяких страниц с ограничение доступа. Да более новые версии Confluence Server при миграции не могут их понять, поэтому обязательно снимите все Restrictions со страницы пространства, если они у вас есть.

Если этого не сделать, то точно в процессе импорта получите такую ошибку:

5. В разрешениях пространства я бы рекомендовал, ограничиться только стандартными учетками во избежании последствий:

6. Теперь идем в то пространство, которое хотим мигрировать и делаем XML-экспорт:

7. Набираемся терпения и ждём окончания процесса

8. После окончания процесса скачайте бэкап в любую папку.

9. Теперь зайдите уже в установленный Confluence Server новой версии и проделайте там точно такую же операцию, сделав бэкап любого пустого пространства в XML-формате.

10. Дождитесь окончание экспорта и скачайте бжкап в любую папку.

11. По результатам имеем следующее, два архива от версии 4.1. и 6.10.1.

12. Давайте теперь посмотрим их внутренности.

Нас интересует только один файлик exportDescriptor.properties

13. Если открыть exportDescriptor.properties от старой версии, то его содержание будет таким:

14. Если от новой, то таким:

15. А теперь давайте попробуем произвести импорт архива, который у нас от старой версии, так как нам прямо говорят, что 4.0 будет без проблем.

16. Выбираем наш старый архив, далее нажимаем кнопку Загрузка и восстановление

17. Опаньки :( То есть конвертер все таки не может справится с такими старыми билдами бэкапов.

Хотя опять же видим, у нас-то версия выше, чем 3047 явно.

18. Совершаем ход "конём".

Помните мы сделали бэкап пустого пространства, берем из файла exportDescriptor.properties начинку, которая нам нужна и всавляем в такой же файл бэкапа старого архива.

На всякий случай приведу пример текста:

#Thu Jul 26 16:07:00 MSD 2018
source=server
buildNumber=4517
createdByVersionNumber=6.7.1
exportType=space
createdByBuildNumber=7601
spaceKey=YourSpaceName
backupAttachments=true
defaultUsersGroup=confluence-users

19. Пробуем производить импорт повторно:

20. Вуаля :)

21. Кстати, помните, что перед началом всей этой истории я говорил вам сделать бэкап. Суть в том, если, даже в случае успешного импорта, вы поняли, что, что-то не загрузилось, то увы надо будет сносить БД и восстанавливать её для повторного. Если попытаетесь загрузить повторно, даже после удаления спейса, то получите ошибку вставки. Более того, если вы пропустили какой-то шаг в плане снятия разрешений со страниц и получили ошибку по поводу неправильного иморта прав пользователей, то в этом случае также надо будет восстанавливать чистый бэкап всей БД,

22. Проверяем, что наше пространство успешно импортировано в новую версию Confluence Server

23. Что-ж теперь дело за малым. Проивзодим XML-экспорт уже из нового Confluence Server

24. Перейдите на облачный контур и в администрировании выберите Импорт пространств.

25. Выберите архив, который был сделан из новой версии Confluence Server с для экспорта в Cloud

26. Нажмите кнопку Импорт.

27. Cloud начнет процесс по распаковке.

28. Скрещиваем пальцы и ждем окончания импорта и после этого нажимаем кнопку Следующее.

29. Нажмите кнопку Пропустить исправление макросов

30. Собственно всё. Никаких окон об успехе окончания операции нет. Просто появится страничка восстановления.

31. Ищем наше пространство, которое импортировалось:

32. Всё вы в облаке :)

Бяка

Естесствено любой процесс миграции - это боль. Он не проходит без последствий.

Например в моё случае, у меня было много диаграмм и схем отрисованных в плагине Draw.IO, но в версии 4.1. он назывался diagramly. При открытии таких страниц около минуты будет крутиться спинер.

А затем появится вот такое сообщение.

Естесственно, что такого плагина нет. В целом Atlassian говорит о том, что тот инстанс, куда переносятся пространства, должен обладать таким же набором плагинов.

Как быть?

Да, здесь придется испытать небольшую боль и перенести каждую диаграммку в ручную. И это кстати не такая сильная боль.

Ведь это не моё пространство и я не знаю на каких страницах диаграммы с помощью плагина нарисованы.

У себя в облаке или на серверной версии я спокойно могу использовать конструкцию CQL для поиска таких страниц

macro+%3D+"drawio"

То в версии 4.1. такой вариант вообще не работал, как я не пытался. А может быть не знаю просто :)

Поэтому пришлось влезсть в БД Confleunce 4.1. и написать банальный запрос, который выведет мне страницы, где содрежится данный макрос.

Запрос конечно я делал быстро и на коленке. Так как он мне вывел все версии страниц. Но это уже было польшое подспорье.

SELECT content.title, bodycontent.body, max(content.version)
 FROM content
LEFT OUTER JOIN bodycontent ON (content.contentid = bodycontent.contentid) 
where bodycontent.body like '%diagramly%' 
group by content.title, bodycontent.body, content.version
order by content.title ASC

Далее я выгрузил это всё в Excel и уже поиском прямо начал искать те статьи в старом Confluence, да мне повезло, что их было не очень много.

Нахожу статью и нажимаю в старом Confluence иконку на редактирование

Выбираю тип экспорта XML

Сохраняю.

Перехожу в Confluence Cloud и выбираю макрос Draw.IO

Уже в редакторе выбираю Импортировать из -> Это устройство.

Выбираем файл сохраненной диаграммы:

Вуаля :)

Не забываем удалить, остаток от старого макроса, чтобы страница не тормозила при загрузке и публикуем страницу.


Вот так вот. На этом всё.


Report Page