(Вы действительно должны указать свой дистрибутив и версию и т. Д. С таким вопросом системного администратора.)
Запуск Pg через pg_ctl
, как показано выше, должен работать, предполагая, чтоисходная база данных была из Pg 8.4, как и бинарные файлы, которые вы пытаетесь использовать для ее запуска.Возможно, вы забыли остановить экземпляр PostgreSQL, автоматически запускаемый дистрибутивом?Или подключен не к тому порту, поэтому вы получили экземпляр дистрибутива по умолчанию вместо базы данных на другом порту (или другой путь к сокету Unix для сокетов Unix)?
Лично я бы не стал делать то, что вы делаететем не мение.Во-первых, прежде чем я что-то еще сделаю, я бы сделал полную резервную копию всего всего каталога данных , потому что у вас явно нет хороших резервных копий, иначе вы бы не беспокоились оэтот.Возьми их сейчас, потому что если ты что-то сломаешь, восстанавливая, ты будешь ненавидеть себя.Как показывает эта ошибка, доверие к хранилищу Amazon (моментальному снимку или иным образом), вероятно, недостаточно хорошо.
После того, как вы это сделаете: Самый простой способ восстановить вашу БД - в новом экземпляре вы знаю у вас нет важных данных, которые имеют такую же мажорную версию (например, "8.4" или "9.0")postgresql, как установил ваш исходный экземпляр:
/etc/init.d/postgresql-8.4 stop
datadir=/var/lib/postgresql/8.4/main
rm -rf "$datadir"
cp -aR /<mount_dir>/etc/postgresql/8.4/main/ "$datadir"
chown -R postgres:postgres "$datadir"
/etc/init.d/postgresql-8.4 start
Другими словами: возьмите копию, исправьте права доступа, запустите БД.
Возможно, вам потребуется отредактировать /etc/postgresql/8.4/main/postgresql.conf
и /или /etc/postgresql/8.4/main/pg_hba.conf
потому что никаких правок, внесенных вами в оригиналы, больше нет;они на вашем поврежденном корне ФС.postgresql.conf
и pg_hba.conf
в datadir являются просто символическими ссылками на те, что есть в etc в Debian - я понимаю это за обоснование, но не люблю.
Как только вы запустите его, немедленно выполните pg_dumpall и / или просто pg_dump вашей важной БД, а затем скопируйте ее в безопасное место.