Показаны сообщения с ярлыком pgadmin. Показать все сообщения
Показаны сообщения с ярлыком pgadmin. Показать все сообщения

11 января 2015 г.

Как сделать полный бэкап базы на postgres

Актуальная версия статьи доступна на моём новом сайте devmark.ru

Для создания полного бэкапа базы на postgres воспользуемся утилитой pg_dump. Бэкап представляет собой текстовый файл с sql-синтаксисом. При этом данные вставляются в более компактном виде.

Перейдём в целевой каталог, в котором планируется сохранить файл бэкапа. Затем выполняем команду:
pg_dump имя_базы -h хост -p порт -U пользователь > имя_файла_бэкапа.sql
Разумеется, подключиться можно как к локальной базе, так и к базе, расположенной на сервере. После того, как файл создался, можем приступить к созданию копии.

Для начала создайте базу (её имя может быть любым), а также пользователя, имя которого должно совпадать с именем пользователя, который работает с исходной базой. Скорее всего, это имя, которое вы использовали для параметра -U в команде, указанной выше. Но точнее лучше посмотреть в полученном файле бэкапа. В скрипте создания таблиц можно увидеть строчку вида:
ALTER TABLE имя_базы OWNER TO имя_пользователя;
Здесь именно то имя, которое должно быть в новой базе. И в качестве owner для новой базы тоже лучше указать его.

Затем выполняем команду:
psql имя_новой_базы <  имя_файла_бэкапа.sql имя_пользователя
Такой короткий вариант команды возможен, если копию мы разворачиваем на локальной машине. Если же требуется развернуть на удалённой базе, то нужно будет также указать хост, порт и имя пользователя аналогично тому, как мы это делали при создании бэкапа.

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

23 июля 2012 г.

Работа с postgresql при помощи pgadmin

Альтернативой работе с базой данных через консоль является более интуитивно понятная среда любого клиента с графическим интерфейсом. Например, pgAdmin. Установить его очень просто, выполняем с правами суперпользователя:
sudo apt-get install pgadmin3
Теперь можно запустить pgAdmin через графический интерфейс. Выбираем в списке локальный сервер БД (у него дефолтный порт 5432) и добавляем уже созданную нами БД с теми параметрами, которые мы задали.

pgAdmin

В это локальном сервере помимо узла Databases можно найти также узел под названием Login Roles - все доступные роли.

Выберем из всех доступных баз данных ту, которую мы создали при установке postgresql. В базе данных содержится множество различных типов объектов. Среди особое внимание следует уделить таблицам и последовательностям (sequences).

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

Создание последовательности в pgAdmin

Для начала создадим последовательность. Выбираем Sequences - New Sequence. На первой вкладке вводим имя и указываем в качестве Owner ту роль, которую мы создали. Для других ролей эта последовательность будет недоступна. На второй вкладке в поля Increment и Start вводим по единице (если вам не требуется другое). На последней вкладке диалогового окна можно посмотреть результирующий SQL запрос, который будет выполнен к БД.

После того, как последовательность создана, приступим к созданию таблицы. Также указываем её имя и владельца (owner). На четвёртой вкладке Columns добавляем прежде всего первичный ключ. Кнопка Add, в появившемся окне указываем название столбца, например, id. В качестве типа данных выбираем bigint. На второй вкладке Definition в поле Default Value указываем нашу последовательность. В поле должно быть значение вида nextval('message_id_seq'::regclass). То есть каждый раз при добавлении новой строки из последовательности будет браться следующее значение. Добавили другие столбцы по необходимости. Наконец, на вкладке Constraints добавим ограничение на первичный ключ (Primary Key). На последней вкладке можем полюбоваться на результирующий SQL код, который сгенерировал pgAdmin. После нажатия ОК таблица будет создана.

Вместо bigint в качестве первичного ключа можно указать в качестве типа столбца bigserial. Этот тип инкрементируется автоматически при добавлении каждой новой строки, поэтому создавать последовательность для него не нужно. То есть в самом простом случае, если у вас нет каких-либо особых правил для формирования id записи, можно порекомендовать использовать bigserial.

Давайте посмотрим содержимое нашей таблицы. Для этого правой кнопкой мыши нажмём на неё и выберем в контекстном меню View Data - View 100 rows.

Просмотр содержимого таблицы в pgAdmin

В этом же окне можно быстро отредактировать значение любой ячейки таблицы. Если в вашей таблице больше 100 записей, измените количество отображаемых записей в выпадающем списке в верху окна. Вы можете отобразить 100, 500, 1000 или все записи. Но это не более чем способ быстро посмотреть содержимое таблицы и привыкать к нему не стоит. Если у вас в таблице десятки тысяч записей, отображать все записи сразу я бы не рекомендовал - в таком случае лучше писать запрос с использованием параметров limit и offset.