Перенос репозиториев Subversion между серверами

Мы находимся в процессе перемещения серверов, и один из последних элементов перемещается по репозиториям svn.

Там около 10 гигов различных svn репозиториев. Они были созданы с помощью этой команды: svnadmin create --fs-type fsfs

Сервер A (исходный) имеет svn 1.4, а сервер B (целевой) имеет svn 1.6.

Я думал использовать rsync для переноса всего набора репозиториев (все они находятся в 1 папке на сервере), но я беспокоюсь, что некоторые вещи могут либо не перенестись, либо мне нужны специальные переключатели для rsync, чтобы это работало.

В большинстве онлайн-руководств говорится только о перемещении одного репозитория за раз, например, с использованием svnadmin hotcopy, но мне нужно переместить около 100 или около того всего вместе. Это правильный способ сделать это?


person Totomobile    schedule 05.10.2011    source источник


Ответы (3)


FSFS Subversion довольно стабильно выполняет копирование и перемещение даже в разных ОС. Хотя mliebelt прав насчет перезагрузки дампа, для перемещения 10 ГБ требуется возраст!

Поэтому я бы рекомендовал следующую процедуру:

  1. Скопируйте репозитории через файловую систему на новый сервер.
    например. $ scp -r /var/repos/ user@newServer:repos/

  2. Выполните $ svnadmin upgrade, чтобы обновить репозиторий для 1.6 (это необязательно, но настоятельно рекомендуется, если вы хотите использовать функции 1.5/1.6, такие как отслеживание слияний, разреженные проверки и т. д.)

  3. Выполните $ svnadmin verify для каждого репозитория, чтобы убедиться, что все версии в порядке (вы можете сделать это на уже работающем сервере).

Для этой процедуры вам потребуется, вероятно, от 10 до 100 раз меньше времени:

например для создания дампа репозитория обычно требуется приблизительно 1 ГБ в час (в основном, в зависимости от скорости HD), файлы дампа намного больше, чем репозитории (в SVN 1.4!). файл на новый сервер и выполнить там загрузку дампа, что также занимает около 1 часа/ГБ. Сравните это с копией файловой системы, которая обычно ограничена только сетевым подключением (100 Мбит, примерно 10 МБ/сек) или HD (примерно 100 МБ/сек), если у вас есть GBit-LAN.

person Peter Parker    schedule 05.10.2011
comment
Вот что я в итоге сделал, просто используя простой rsync! Сначала мне пришлось настроить пользователя/группу svn. После переезда я проверил, что репозитории в порядке, используя проверку svnadmin. И, наконец, мне пришлось отредактировать скрипт /etc/init.d/svnserve, чтобы он указывал на нужный каталог. Кажется, теперь все работает! (Просто хочу добавить, что все временные метки и разрешения пользователей/групп были сохранены) - person Totomobile; 06.10.2011
comment
Я тоже это сделал. Признаюсь, я немного опасался, что по какой-то причине это не сработает, потому что наша старая версия SVN была 1.2, а на новом сервере стоит SVN 1.6. Тем не менее, это сработало для меня! Сделал точно так, как предложил @Peter Parker в отношении svnadmin upgrade/verify. - person Yes Barry; 06.10.2012

Во-первых, я не администратор Subversion, но много с ними работаю. Так что не верьте только моим словам, проверьте и другие источники.

Мой опыт за последние 5 лет:

  • Чтобы переместить репозитории Subversion, вы должны использовать инструменты администрирования Subversion dump и load. Они написаны именно для этой работы.
  • dump и load дополнительно проверяют, что все в порядке. Используя их, вы получаете дополнительную «страховку» того, что все двигалось нормально.
  • Мы никогда не мигрировали более чем на две основные версии, а переходили с одной основной версии на другую. Вы должны хотя бы проверить, поддерживается ли миграция с 1.4.x на 1.6.x. Часто новая версия сервера напрямую поддерживает предыдущую версию и поддерживает миграцию. Поэтому, возможно, вам придется выполнить миграцию для каждого репозитория дважды.
  • Вы можете работать со старыми репозиториями, пока они перемещаются, потому что subversion позволяет вам позже добавлять новые версии.
  • Поскольку все можно сделать с помощью командной строки, вы можете автоматизировать большую часть этого, и администраторы Subversion должны только проверить, что все работает хорошо.

Итак, да, я бы рекомендовал перемещать один репозиторий друг за другом.

person mliebelt    schedule 05.10.2011

Для получения дополнительной информации о svnadmin dump и svnadmin load для svn 1.6 см. здесь. Он предлагает некоторое обсуждение dump и load, а также такие варианты, как --deltas, --incremental и другие.

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

svnadmin help upgrade

использование: обновление svnadmin REPOS_PATH

Обновите репозиторий, расположенный в REPOS_PATH, до последней поддерживаемой версии схемы.

Эта функциональность предоставляется для удобства администраторов репозитория, которые хотят использовать новую функциональность Subversion без необходимости выполнять потенциально дорогостоящую операцию полного дампа и загрузки репозитория. Таким образом, обновление выполняет только минимальный объем работы, необходимый для достижения этой цели, при этом сохраняя целостность репозитория. Это не гарантирует максимально оптимизированное состояние репозитория, в отличие от дампа и последующей загрузки.

person Bizmarck    schedule 06.11.2012