Назад | Перейти на главную страницу

Сбросить postgresql

Я хочу вернуть postgresql в исходное пустое состояние.

В Ubuntu:

$ sudo service postgresql stop
$ sudo apt-get purge postgresql*

С последующим

$ sudo apt-get install postgresql

Делает то, что хочу, но есть ли менее жестокий способ сделать то же самое?

На самом деле я хочу проверить, могу ли я воссоздать свою базу данных с нуля.

Использовать initdb, создает новый кластер базы данных PostgreSQL. Сюда также входят postgresql.conf и pg_hba.conf.

Во-первых, я должен догадаться, что вы имеете в виду под «сбросом»!

Если вы имеете в виду данные, вы можете просто удалить все базы данных, используя известный оператор SQL drop database.

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

Как сказал Халед, вы можете просто выпустить drop database, drop userи т.д. Операторы для очистки всех изменений, внесенных в исходную базу данных.

Для конфигурации базы данных вам может быть интересно просто поместить файлы под контроль версий (git, svn & co).

Для Subversion вы можете сделать что-то вроде этого:

Установить Subversion

$ sudo apt-get install subversion

Настроить репозиторий

$ mkdir ~/pgsqlsvn
$ svnadmin create 

Остановить службу

$ sudo service postgresql stop

Изначально залейте репозиторий:

$ cd /etc/postgresql
$ sudo svn co file:///home/you/pgsqlsvn ./
$ sudo svn add * 
$ sudo svn commit 

Возврат конфигурации после этого

Каждый раз, когда вам нужно вернуться к исходной конфигурации базы данных, вы можете просто

$ sudo svn update /etc/postgresql -r 1

Чтобы расширить ответ Фрэнка, я сделал следующее, чтобы сбросить PostgreSQL в Ubuntu 14.04 LTS:

sudo service postgresql stop
sudo bash # Root permissions to move the data folder
mv /var/lib/postgresql/9.3/main ~ # Move the database for safety
logout
sudo -u postgres bash
mkdir /var/lib/postgresql/9.3/main
/usr/lib/postgresql/9.3/bin/initdb -D /var/lib/postgresql/9.3/main
sudo service postgresql start

Обратите внимание, что initdb не находится в системном пути, и если вы попытаетесь его запустить, Ubuntu предложит вам установить пакет расширения. Однако, если у вас установлен сам сервер, команда по-прежнему доступна - просто скрыта.

Я ожидаю, что это можно изменить для других версий PostgreSQL - просто немного поработайте с номером версии в путях.

Я, вероятно, мог бы немного сократить этот процесс, войдя в систему как postgres как для перемещения старой базы данных, так и для создания новой. Обратите внимание, что initdb откажется запускаться как root, поэтому запускается как postgres имеет смысл.

(Сброс такого рода полезен для людей, которые переходят на эту платформу базы данных из других систем, таких как MySQL. После добавления ролей, пользователей, грантов, привилегий по умолчанию и т. Д. Трудно вспомнить, какая команда на какой эффект оказала влияние. и повторная попытка устраняет все сомнения).