Требуется: для резервного копирования, перед обновлением postgresql.
При возможности подсоединения к базам любым локальным пользователем:
psql -tl | \ grep -v 'template[01]' | \ perl -ne 'print "$1\000" if (/^\s*([^\s\|]+)\s*\|/);' | \ xargs -0i /bin/sh \ -c "/usr/bin/pg_dump --format=c --oids --compress=0 -U postgres "{}" | \ bzip2 > {}.pgdump-c.bz2"
При невозможности подключения к базе произвольным пользователем:
/bin/su -l postgres -s /bin/bash -c '/usr/bin/psql -tl' | \ grep -v 'template[01]' | \ perl -ne 'print "$1\000" if (/^\s*([^\s\|]+)\s*\|/);' | \ xargs -0i /bin/su -l postgres -s /bin/bash \ -c "/usr/bin/pg_dump --format=c --oids --compress=0 -U postgres "{}" > {}.pgdump"
Настоятельно рекомендуется также позаботиться о сохранении файла <db>/global/pg_auth.
Согласно сохранённым pg_pwd и pg_group создать пользователей базы:
выполнить
su -s /bin/bash -c createuser -l postgres
Затем подключиться к базе template1 и создать командами пользователей и группы:
CREATE USER uname
После восстановления пользователей восстанавливаются
createdb -E KOI8-R <database>; pg_restore -d <database> <file>
или для всех баз:
for i in *.pgdump; do \ dropdb `basename $i .pgdump`; \ createdb -E KOI8-R `basename $i .pgdump`; \ pg_restore -d `basename $i .pgdump` $i; done
Базы template0 и template1 - системные, восстановлению не подлежат. Указывать кодировку базы при её создании обязательно.
Дата создания: 2006-05-24 11:24:41 (Фетисов Н. А. (naf))
Последнее изменение: 2007-04-17 16:50:57 (Фетисов Н. А. (naf))
Владелец: Фетисов Н. А. (naf)
Версия: 3 Все версии
Wiki::Admin Карта раздела Оглавление Изменения за сутки Изменения за неделю Изменения за месяц