Миграция репозиториев Subversion между серверами
мы находимся в процессе перемещения серверов, и один из последних элементов перемещается по репозиториям svn.
существует около 10 гигабайт различных репозиториев svn. Они были созданы с помощью этой команды:
svnadmin create --fs-type fsfs
сервер A (оригинал) имеет svn 1.4, а сервер B(цель) имеет svn 1.6.
моя мысль была использовать rsync
для переноса всего набора репозиториев (все они находятся в 1 папке на сервере), но я беспокоюсь, что некоторые вещи могут либо не перенесите или мне нужны специальные переключатели для rsync
чтобы это сработало.
большинство онлайн-учебников говорят только о перемещении 1 репозитория за раз, например, с помощью svnadmin hotcopy
, но мне нужно переместить около 100 или около того все вместе. Правильно ли это?
3 ответов
FSFS Subversion довольно стабильна при выполнении копий и движений, даже в разных ОС. Хотя mliebelt правильно делает это через перезагрузку дампа, это занимает века перейти 10 ГБ!
вот почему я бы рекомендовал следующую процедуру:
скопируйте репозитории через файловую систему на новый сервер.
например,$ scp -r /var/repos/ user@newServer:repos/
сделать
$ svnadmin upgrade
для обновления репозитория для 1.6 (это необязательно, но настоятельно рекомендуется, если вы хотите использовать функции 1.5 / 1.6, такие как отслеживание слияния, разреженные проверки и т. д.)сделать
$ svnadmin verify
в каждом репозитории для проверки всех ревизий в порядке (вы можете сделать это на уже работающем сервере).
по этой процедуре вам нужно, вероятно, от 10 до 100 раз меньше времени:
например, для сброса репозитория обычно требуется приблизительно 1 ГБ в час (в основном в зависимости от HD-скорости), файлы дампа намного больше, чем репозитории (в SVN 1.4!) Таким образом, вы должны переместить больший файл на новый сервер и сделать там дамп-нагрузку, которая также занимает около 1 часа / ГБ. Сравните это с копией файловой системы, которая обычно ограничена только сетевым подключением (100 Мбит ок. 10 МБ / сек) или HD (приблизительно 100 МБ / сек), если у вас есть GBit-LAN.
во-первых, я не администратор Subversion, но я много работаю с ними. Так что не доверяйте только моим словам, проверьте и другие источники.
мой опыт за последние 5 лет составил:
- чтобы переместить репозитории Subversion, вы должны использовать инструменты администратора Subversion
dump
иload
. Они написаны специально для этой работы. -
dump
иload
дополнительно проверьте, что все в порядке. Используя их, вы получаете дополнительную "страховку", которая все двигалось нормально. - мы никогда не переносили более 2 основных версий, но перемещались из одной основной версии в другую. Вы должны хотя бы проверить, что миграция с 1.4.от x до 1.6.x поддерживается. Часто новая версия сервера поддерживает прямую предыдущую версию и поддерживает миграцию. Поэтому, возможно, вам придется выполнить миграцию для каждого репозитория дважды.
- вы можете работать со старыми репозиториями, пока они перемещаются, потому что subversion позволяет добавлять более новые переделки.
- поскольку все можно сделать с помощью командной строки, вы можете автоматизировать большую часть этого, и администраторам subversion нужно только проверить, что все работает хорошо.
Итак, да, я бы рекомендовал перемещать один репозиторий друг за другом.
подробнее о svnadmin dump
и svnadmin load
для svn 1.6 см. здесь. Он предлагает некоторые обсуждения на dump
и load
, а также такие параметры, как --deltas
, --incremental
и другие.
также имейте в виду, что если вы делаете прямую копию и обновление svnadmin, вы экономите время, но состояние репозитория может быть не оптимальным. С помощью svnadmin :
svnadmin help upgrade
использование: svnadmin upgrade REPOS_PATH
обновить репозиторий, расположенный в REPOS_PATH до последней поддерживаемой версии версия схемы.
эта функциональность предоставляется как удобство для репозитория администраторы, желающие использовать новые функции Subversion без необходимости выполнять потенциально дорогостоящий полный дамп репозитория и деятельность нагрузки. Таким образом, обновление выполняет только минимум объем работы, необходимой для этого при сохранении целостность хранилища. это не гарантия наиболее оптимизированная состояние репозитория как дамп и последующая загрузка.