Как перенести базу postgresql из нерабочей системы, если в chroot сервис не запускается?

Перестал запускаться ubuntu server 16.04 lts, при запуске тупо не видит устройства любые диски sata и ide (через контроллер), отследить что именно и почему так произошло очень сложно, машина перезагружается раз в пол года, предыдущий раз времени решить проблему не было, но починилось тупым копированием kernel и image в каталог boot из чистой установки. К сожалению через несколько месяцев, когда потребовалась перезагрузка (отключение энергии) ситуация повторилась, и копирование уже более новой версии ядра и стартового imagefs не помогло.

Само собой, update-grub делал, перебирал разные варианты запуска и версии kernel. Проблема явно не в железе, а в комбинации установленного софта, настроек перегенерации imagefs и т.п., с ходу не получилось решить проблему, и поэтому принято решение о переустановке системы. К сожалению, резервной копии в виде дампа базы данных postgresql нет, но есть полная копия системы.

Я бы рад запустить систему в chroot, но к сожалению при попытке то сделать, сервис postgresql пишет что 'запускать в chroot не могу', гугл даже выдавал ссылки на багтрекере archlinux где эту проблему даже решили, но у меня ubuntu и явно это проблема дистрибутива.

Подскажите, как мне с наименьшей кровью перенести базу на новую установку.
  • Вопрос задан
  • 1726 просмотров
Пригласить эксперта
Ответы на вопрос 1
Melkij
@Melkij
PostgreSQL DBA
Найдите, где datadir базы. Скорей всего /var/lib/postgresql/(версия базы)/main, но могла была быть перемещена, так же может стоять несколько кластеров базы и разные версии базы - в дебианах и убунтах это делается легко.

Далее установить на новой системе postgresql идентичной major версии и не ниже minor версии что была там. Какая была major версия - смотрите файлик PG_VERSION в datadir. minor версию ставьте последнюю актуальную.
Так понимаю, старая система в принципе не работает? Т.е. старая база выключена? Выключите и новую (пока пустую) базу. Проверьте, если не уверены, обе базы должна быть выключена.
Переименовываете datadir на новом сервере (вообще, можно удалить, но можно и ошибиться консолью и дропнуть не то =) )
Копируете каталог базы: rsync -a /olddatadir /newdatadir
Копируете и правите если надо конфиги из /etc/postgresql/версия_базы
Если каталог pg_tblspc/ в datadir не пуст - скопируйте и симлинки из него и все данные по этим симлинкам в аналогичные места на новой машине.
Если pg_xlog/ является симлинком - его необходимо скопировать. Можно оставить симлинком, можно содержимое перекопировать.
Пробуете запустить базу на новом месте. Смотрите в логи. Если на старом месте база не была повреждена (и ничего нужного скопировать не забыли) - то она запустится.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы