How to install postgres on ubuntu

Как используют PostGIS в связке с PostgreSQL

PostgreSQL имеет поддержку собственных геометрических типов, но их функциональность ограничена — она подходит для научных исследований и выстраивания компьютерной графики (статичных визуальных карт), но недостаточна для ГИС-данных или проведения сложного анализа.

PostGIS в PostgreSQL используется для снятия ограничений, расширения функций и позволяет применять:

  • пространственные предикаты (утверждения, высказанные о субъекте) для определения взаимодействий геометрий с применением 3×3 DE-9IM;
  • пространственные индексы R-tree -over- GiST для быстрых пространственных запросов;
  • пространственные операторы для проведения геопространственных вычислений и определения геопространственного набора операций (объединение, разность, симметричная разность);
  • растровые данные;
  • функции создания геометрий и управления ими (создание и удаление полей с географическими данными, запросы скриптов, библиотек);
  • функции редактирования геометрий и их форматированного вывода;
  • расширенные 2D- и 3D-функции, в том числе для определения пересечений в 3D-пространстве);
  • инструменты для определения пространственных отношений и измерений (например, для сравнения расстояния по плоскости и на сфере);
  • функции создания и отображения растров в удобном формате (например, в JPEG или PNG);
  • инструменты обработки растров (очищение рельефа, векторизация, увеличение или уменьшение яркости);
  • функции редактирования каналов растра;
  • топологию и экстра-функции.

PostgreSQL может работать под управлением сервиса Relational Database Service. Сервис имеет поддержку PostGIS, read-реплик, а также MySQL, Microsoft SQL Server и функции автоматического резервного копирования баз данных.

Step 5. Check and verify the Installation

First of all, you need to know that PostgreSQL is working on port 5432.

To check this you can execute the command below:

sudo netstat -tunlp | grep 5432

The output should be:

root@vps:~# sudo netstat -tunlp | grep 5432
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      31266/postgres

We can see that the Postgres service is running on port 5432 successfully.

If you want to check and verify that the correct version is installed, please execute:

sudo psql --version

The output should be:

root@vps:~# sudo psql --version
psql (PostgreSQL) 9.6.22

Once everything is installed and prepared we can go to the next step, and that step is how to manage the PostgreSQL service.

Действия после установки postgres

Если мы установили PostgreSQL Pro версию, выполним только первую настройку.

Пароль для пользователя postgres

Задаем пароль для пользователя postgres:

sudo -u postgres psql -U postgres -d template1 -c «ALTER USER postgres PASSWORD ‘password'»; history -d $((HISTCMD-1))

* данную команду мы запускаем под пользователем postgres; мы задаем пароль password для postgresql-пользователя postgres. Дополнительная команда history -d $((HISTCMD-1)) удалить из истории строку с паролем.

Остальные настройки выполняем для PostgreSQL не Pro версии.

Разрешаем автозапуск сервиса баз данных и стартуем его:

systemctl enable postgresql —now

Блокировка обновлений PostgreSQL

Так как для 1С устанавливается специальная сборка СУБД, необходимо запретить ее обновление. В противном случае будет установлен обычныйpostgresql, что приведет к потери работоспособности сервера.

Смотрим версию установленного сервера баз данных:

dpkg -l | grep postgresql

Пример ответа:

ii  postgresql-10            10.10-4.1C …
ii  postgresql-client-10     10.10-4.1C …

И так, у нас установлена версия 10.10-4.1C. Вводим:

dpkg -l | grep 10.10-4.1C | awk -F’ ‘ ‘{print $2}’ | xargs apt-mark hold

* где 10.10-4.1C — версия установленного PostgreSQL. Команда apt-mark hold блокируем установку обновлений для пакетов версии 10.10-4.1C.

Также добавим:

apt-mark hold postgresql-common postgresql-client-common

Установка PostgreSQL в Ubuntu 20.04

1. Установка из официальных репозиториев

Это очень популярная СУБД, потому программа присутствует в официальных репозиториях. Для установки выполните следующие команды. Сначала обновите списки пакетов:

Установите СУБД PostgreSQL:

2. Установка из официальных репозиториев PostgreSQL

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

Далее обновите списки пакетов, чтобы получить самую новую доступную версию:

Установка PostgreSQL из PPA или официальных репозиториев выглядит одинаково:

Install PostgreSQL from Local Ubuntu Repository

If you prefer installing PostgreSQL from the local Ubuntu repository, bear in mind that it is most likely not going to be the latest version of the package.

Step 1: Check Available PostgreSQL Version

Before you decide whether you want to set up PostgreSQL from the Ubuntu repository, verify which versions are available. Update the repository and then run the command:

The output provides all the necessary information about the package, including the release number and size.

Step 2: Install PostgreSQL Package

If you are happy with the PostgreSQL version accessible from the local repository, use the following command to install the package:

With these simple steps, you have successfully installed PostgreSQL on Ubuntu 18.04.

Установка

Есть несколько способов скачать программу. Самый простой — через репозиторий.

  1. Запустите Терминал.
  2. Для загрузки утилиты напечатайте несколько строчек. Чтобы действовать от имени администратора, напишите sudo перед командой.
  3. Обновите систему — «apt-get update».
  4. Проинсталлируйте само приложение — «apt-get install postgresql».

Подождите, пока программа загрузится. И скачайте дополнительные модули:

  • Поставьте Contrib — добавьте к предыдущей команде «postgresql-contrib».
  • Также пригодится клиент — «postgresql-client».
  • Чтобы при работе использовать графический интерфейс, введите в той же строке «apt-get install phppgadmin».

Лучше сразу «проапгрейдить» phpPgAdmin: установить пакет, который расширит его возможности. Вы получите улучшенный мониторинг и логирование. Чтобы его активировать, напишите «sudo su postgres -c psql < /usr/share/postgresql//contrib/adminpack.sql».

Инсталляция будет одинаковой как в случае с репозиторием, так и с PPA

Для инсталляции из РРА подойдут те же самые команды. Можно загрузить установочные файлы с сайта программы. Для этого:

  1. Используйте команду nano. С ней введите путь к «/etc/apt/sources.list.d/pgdg.list».
  2. В следующей строке введите deb. Вставьте ссылку — «apt.postgresql.org/pub/repos/apt/». Дополнительно добавьте скрипт — «<span id=»series-deb»>wily</span>-pgdg main».
  3. Напечатайте команду для загрузки — wget. С параметром «—quiet -O». Скопируйте ссылку на файл «- postgresql.org/media/keys/ACCC4CF8.asc», чтобы его скачать. В той же строке введите «| sudo apt-key add -» для ключа. Всё с дефисами и вертикальной чертой. Кавычки уберите.
  4. Обновите систему — «apt-get update». Для этого нужны права администратора (sudo).
  5. Теперь можете ставить саму программу — «apt-get install postgresql-».

Далее, скачайте клиент, Contrib и графическую оболочку. Утилита готова. Но нужно её настроить.

Выгрузка баз 1С в dt из командной строки

Частенько бывает нужно сделать выгрузку базы 1С в dt файл. Это можно сделать прямо из консоли ubuntu server с помощью автономного сервера 1С. При этом даже пользователей не придётся выгонять из базы.

sudo /opt/1cv8/x86_64/8.3.19.1264/ibcmd infobase dump --db-server=localhost --dbms=postgresql --db-name=basa1 --db-user=postgres --db-pwd=parol /mnt/backup/basa1.dt

Так же через консоль можно загрузить данные в базу 1С из dt файла. К примеру, загрузим предыдущую выгрузку в новую базу — basa2:

sudo /opt/1cv8/x86_64/8.3.19.1264/ibcmd infobase create --db-server=localhost --dbms=postgresql --db-name=basa2 --db-user=postgres --db-pwd=parol --create-database --restore=/mnt/backup/basa1.dt

С помощью автономного сервера можно проверить базу 1С на ошибки. Опять же, прямо в консоли linux:

sudo /opt/1cv8/x86_64/8.3.19.1264/ibcmd infobase config check --db-server=localhost --dbms=postgresql --db-name=basa2 --db-user=postgres --db-pwd=parol

Все возможности автономного сервера можно посмотреть в руководстве администратора.

Установка PostgreSQL на Linux (Mint)

Для подключения к базе данных PostgreSQL понадобится установленный PostgreSQL клиент:

sudo apt install postgresql-client-<VERSION>

Например:

sudo apt install postgresql-client-12

Для установки PostgreSQL сервера:

sudo apt install postgresql

Проверим, можем ли мы подключиться к базе данных PostgreSQL:

sudo -u postgres psql -c "SELECT version();"

Вывод команды должен быть примерно таким:

$ sudo -u postgres psql -c "SELECT version();"
                                                                version                                                                 
----------------------------------------------------------------------------------------------------------------------------------------
 PostgreSQL 10.10 (Ubuntu 10.10-0ubuntu0.18.04.1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0, 64-bit
(1 row)

Запуск скрипта из файла

Сперва проверим, что с переменными окружения всё впорядке.

Для этого введём
в консоль psql.exe нажмём Enter и проверим что bash не жалуется на неизвестную команду.

Если жалуется — прочитайте мои советы в статье

Пишем скрипт
script.sql

Применим этот скрипт к базе данных
HeiHei_ru_DB

У меня postgres запущен локально на порту 5433. У Вас может быть
на 5432 — проверьте.

cat script.sql | psql.exe -h localhost -p5433 -U postgres HeiHei_ru_DB

Password for user postgres:

CREATE TABLE

Саме время сделать что-то более близкое к реальному скрипту

На поля таблицы нужно ввести некоторые ограничения и добавить им свойств.

Теперь запустим этот скрпит уже не в тестовую а в рабочую базу данных
heihei (которая совпадает с названием сайта HeiHei.ru,
но если написать .ru будет синтаксическая ошибка ERROR: syntax error at or near «.»)

cat booking_sites.sql | psql.exe -h localhost -p5433 -U postgres heihei

Password for user postgres:

CREATE TABLE

Шаг 5 — Открытие командной строки Postgres с новой ролью

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

Если у вас нет соответствующего пользователя Linux, то вы можете создать его с помощью команды . Вы должны воспользоваться учетной записи без прав root с привилегиями (т.е. не выполняя вход в качестве пользователя postgres):

Когда новая учетная запись будет доступна, вы можете переключиться и подключиться к базе данных следующим образом:

Либо же вы можете сделать следующее:

Эта команда позволит выполнить вход автоматически, полагая, что все компоненты были настроены должным образом.

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

После входа вы можете проверить данные о текущем подключении:

Это полезно, если вы подключены к нестандартным базам данных или используете нестандартных пользователей.

Пароль в СУБД

Пароль хранится в СУБД в зашифрованном виде при использовании методов аутентификации md5 и scram-sha-256.

Задать пароль роли при её создании можно так:

Создать пароль для уже существующей роли можно так:

Пользователю с пустым паролем будет отказано в доступе при аутентификации по паролю.

Пароли в зашифрованном виде хранятся в системном каталоге, в таблице pg_authid.

При аутентификации пароль можно вводить вручную, но не всегда это удобно. Еще можно установить переменную $PGPASSWORD на клиенте, в неё нужно задать пароль, тогда утилита psql будет использовать пароль из этой переменной. Но это не очень удобно и не безопасно.

Также можно создать файл ~/.pgpass. Там можно прописать разные пароли к разным серверам следующим образом:

Такой файл должен иметь права 600 (rw- — —). Строки в нем просматриваются сверху вниз и используется первая найденная строка.

Установка PostgreSQL в Ubuntu

PostgreSQL доступен в репозиториях Ubuntu по умолчанию. Просто используйте команду apt для установки PostgreSQL. Наиболее распространенными установленными пакетами являются PostgreSQL server, client, pgadmin, а также библиотеки.

Для установки конкретной версии вы можете использовать PostgreSQL Apt repository.

Чтобы установка PostgreSQL Ubuntu прошла гладко, выполните следующие действия.

Во-первых, убедитесь, что ваша система находится в актуальном состоянии, выполнив следующую команду.

Установите пакет Postgres, а затем пакет — contrib, он добавит дополнительные утилиты и функциональные возможности.

После завершения установки PostgreSQL запустите службу PostgreSQL. Это можно сделать командой которая написана ниже.

Также включите автоматический запуск службы PostgreSQL при загрузке системы. Делается это командой.


Запуск и включение службы postgres

После установки вы можете проверить состояние PostgreSQL, выполнив следующую команду.


Статус службы Postgres

По умолчанию пользователь Postgres создается во время установки. Чтобы получить доступ к оболочке Postgres, сначала переключитесь на пользователя Postgres.

Теперь введите команду psql,


Выполнение команд в оболочке Postgres

Для проверки версии PostgreSQL выполните следующую команду:

или

Создание роли в PostgreSQL

Для авторизации и аутентификации Postgres использует понятие “роли”. Которое в некоторых отношениях похоже на учетные записи Unix. Во время установки Postgres настраивается таким образом, чтобы использовать аутентификацию ident. Идентификация Ident связывает роль Postgres с соответствующими системными учетными записями Linux / Unix. Только суперпользователи и  юзеры с ролью «CREATEROLE” отвечают за создание новых ролей.

Чтобы создать новую роль например с именем john, введите следующую команду в оболочке PostgreSQL.

Создание базы данных в PostgreSQL

Для создания новой базы данных требуется программа PostgreSQL database shell (psql). Войдите в оболочку psql и введите следующую команду, чтобы создать пользователя и установить пароль. Здесь я собираюсь создать имя пользователя jacky с паролем mystrongpassword. Вы можете создать свой собственный.

Создайте базу данных (например, gallary), используя следующую команду,

Предоставьте доступ к БД которую только что создали.. Здесь я собираюсь предоставить все права на базу данных gallery, чтобы пользователь jacky мог в ней работать.

Чтобы выйти из оболочки PostgreSQL требуется ввести команду q и нажать enter.


Создание пользователя и базы данных

Включение удаленного доступа к PostgreSQL

По умолчанию PostgreSQL слушает на интерфейсе  127.0.0.1. Если вы хотите получить доступ к базе данных из другого места. Тогда вам требуется настроить PostgreSQL для прослушки различных сетевых интерфейсов. Чтобы настроить PostgreSQL для различных интерфейсов, откройте конфигурационный файл PostgreSQL с помощью nano или другим текстовым редактором. Я буду использовать редактор Vim.

В конфигурационном файле найдите запись listen_addresses, находится она  в «Connection Settings». Раскомментируйте строку и измените localhost на ‘*’. Это даст команду PostgreSQL прослушивать все сетевые интерфейсы для входящих подключений.


Включение удаленного подключения в postgres

Сохраните свою конфигурацию и перезапустите сервер PostgreSQL, чтобы изменения отразились в БД.

Теперь можно проверить прослушивает ли  PostgreSQL другой интерфейс. Для этого выполните следующую команду.


Состояние прослушивания порта Postgres

Если вы включили брандмауэр UFW на сервере, тогда вам необходимо открыть порт 5432 для входящих TCP — соединений.  Чтоб сделать это выполните команду.

Также проверьте правило брандмауэра UFW, делается это командой.


Конфигурация Postgres ufw

Заключение

В этом руководстве вы узнали, как установить сервер PostgreSQL на Ubuntu 20.04. Кроме того, вы также узнали, как привязать PostgreSQL к различным сетевым интерфейсам, чтобы принимать соединения от удаленного клиента.

Шаг 8 — Добавление и удаление столбцов таблицы

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

Если вы снова просмотрите данные таблицы, то увидите, что новый столбец был добавлен (но не было добавлено данных):

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

Эта команда удаляет столбец и любые значения внутри него, но оставляет все другие данные нетронутыми.

Установка сервера 1C

В файле /etc/hosts не должно быть записей формата  или относящихся к , в случае отсутствия DNS-сервера, в нем должно быть прописано четкое соответствие IP-адрес сервера – FQDN – короткое имя.

cat /etc/hosts

127.0.0.1           localhost
10.0.2.200          astra15-1c.example.ru    astra15-1c

cat /etc/hostname

astra15-1c

Устанавливаем необходимые пакеты для работы 1C:

mkdir /tmp/libwebkit
tar -xvf libwebkitgtk-1.0.tar.gz -C /tmp/libwebkit
dpkg -i /tmp/libwebkit/*

usermod -a -G shadow postgres

setfacl -d -m u:postgres:r /etc/parsec/macdb

setfacl -R -m u:postgres:r /etc/parsec/macdb

setfacl -m u:postgres:rx /etc/parsec/macdb

setfacl -d -m u:postgres:r /etc/parsec/capdb

setfacl -R -m u:postgres:r /etc/parsec/capdb

setfacl -m u:postgres:rx /etc/parsec/capdb

Разрешаем подключения по сети, для этого меняем значения в файлах:

postgresql.conf

# - Connection Settings -
listen_addresses = '*'                     # what IP address(es) to listen on

pg_hba.conf

# IPv4 local connections:
host       all          all       0.0.0.0/0       md5

Для корректной работы 1C с СУБД PostgreSQL также раскоментируем и меняем значения:

postgresql.conf

backslash_quote = safe_encoding
escape_string_warning = off
standart_conforming_strings = off

Создаем пароль для роли postgres:

Перезапускаем СУБД PostgreSQL:

Для создания сервера 1C Предприятия понадобится 4 пакета:

Скачать их можно с сайта 1C.

Скачиваем в любую директорию, например 1csrv, переходим в нее и устанавливаем:

При возникновении ошибок об отсутствии пакетов, установим их командой:

Для работы аппаратного ключа hasp необходим драйвер haspd:

Правим /etc/haspd/hasplm.conf

Вместо 10.0.2.0/24 нужно указать свою подсеть или хосты, которые должны видеть HASP ключ

Перезапускаем haspd:

sudo service haspd restart

Даем права на директорию 1C:

Запускаем сервер 1C:

Проверяем:

  • Через «Администрирование серверов 1C Предприятия» для windows
  • Через консольную утилиту администрирования rac. 

Запустить в режиме демона сервис управления кластером:

Получить справку по командам администрирования:

Посмотреть список доступных кластеров:

Для подключения клиентов через веб, потребуется установленный и настроенный сервер Apache2

Для публикации базы 1C, нужно выполнить команду:

-wsdir – имя алиаса веб-сервера для соединения с базой;

-dir – директория где будут располагаться файлы web-интерфейса 1c;

-connStr – строка соединения с базой 1c предприятия(astr15-1c — имя сервера 1c, infobase — имя базы)

-confPath – расположение конфигурационного файла web-сервера apache.

Мониторинг

  • Monitoring Database Activity

  • pgFouine — a PostgreSQL log analyzer

  • bucardo.org check_postgres — Perl cкрипт для мониторинга более 20 параметров, определяющих состояние СУБД PostgreSQL.

Текущую активность базы данных легко оценить с помощью команды ps, для вывода в реальном времени (с задержкой 1 секунда) можно использовать утилиту Команда watch с практическим примерами:

# watch -n 1 'ps auxww | grep ^postgres'
postgres 14164  0.0  0.0 188492  5296 ?        S    Dec13   0:46 /usr/bin/postmaster -p 5432 -D /var/lib/pgsql/data
postgres 14166  0.0  0.0 159904  1264 ?        Ss   Dec13   0:05 postgres: logger process                          
postgres 14168  0.0  0.1 188636 27208 ?        Ss   Dec13   0:49 postgres: writer process                          
postgres 14169  0.0  0.0 188492  1348 ?        Ss   Dec13   0:23 postgres: wal writer process                      
postgres 14170  0.0  0.0 188804  1752 ?        Ss   Dec13   0:17 postgres: autovacuum launcher process             
postgres 14171  0.0  0.0 160176  1468 ?        Ss   Dec13   0:45 postgres: stats collector process                 
postgres 21596  0.0  0.1 190228 30476 ?        Ss   Dec27   0:58 postgres: postgres mbill 127.0.0.1(37047) idle    
postgres 21597  0.0  0.0 189716  5672 ?        Ss   Dec27   0:00 postgres: postgres mbill 127.0.0.1(37048) idle

Так как для каждого клиента создаётся своя копия процесса postmaster, то это позволяет подсчитать число активных клиентов. Статусная строка даёт информацию о состоянии клиента. Фразы writer process, stats buffer process и stats collector process соответствуют системным процессам, запущенным самим PostgreSQL при старте. Пользовательские процессы имеют статусную строку вида:

postgres: «пользователь» «база» «хост» «статус»

«пользователь», «база» и «хост» соответствуют имени пользователя «пользователь» подсоединявшегося к базе «база» с компьютера «хост». «статус» может принимать следующие параметры:

  • idle — ожидание команды от клиента,
  • idle in transaction — ожидание команды от клиента внутри транзакции (между BEGIN и окончанием транзакции),
  • SQL- команда — выполняется эта команда, например, SELECT,
  • waiting — ждём когда разблокируется занятая другим процессом таблица. Для уточнения из-за чего возникла блокировка, нужно анализировать представление pg_locks.

Создать базу данных

Создадим базу данных
heihei_ru_db
с кодировкой utf8

CREATE DATABASE «heihei_ru_db» WITH OWNER «postgres» ENCODING ‘UTF8’;

CREATE DATABASE

Создадим базу данных heihei с кодировкой utf8 и укажем значения для Collate, Ctype и Template

CREATE DATABASE «heihei» WITH OWNER «postgres» ENCODING
‘UTF8’ LC_COLLATE = ‘C’ LC_CTYPE = ‘C’ TEMPLATE = template0;

CREATE DATABASE

Проверим, что получилось

\l

Name | Owner | Encoding | Collate | Ctype | Access privileges
—————+———-+———-+—————————-+—————————-+————————
heihei | postgres | UTF8 | C | C |
urn.su | postgres | UTF8 | English_United States.1252 | English_United States.1252 |
topbicyle.ru | postgres | UTF8 | English_United States.1252 | English_United States.1252 |
postgres | postgres | UTF8 | English_United States.1252 | English_United States.1252 |
template0 | postgres | UTF8 | English_United States.1252 | English_United States.1252 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | English_United States.1252 | English_United States.1252 | =c/postgres +
| | | | | postgres=CTc/postgres
test | postgres | UTF8 | English_United States.1252 | English_United States.1252 |
(7 rows)

Если я в

bash

сделаю

locale -a

То получу сразу четыре доступные кодировки

C

C.UTF-8

en_US.utf8

POSIX

Но создать БД, например, с en_US.utf8 у меня не получается

CREATE DATABASE «heihei» WITH OWNER «postgres» ENCODING
‘UTF8’ LC_COLLATE = ‘en_US.utf8’ LC_CTYPE = ‘en_US.utf8’ TEMPLATE = template0;

Приводит к ошибке

ERROR: invalid locale name: «en_US.UTF-8»

UPD: Выполнил такую же команду в

Ubuntu

и база успешно создана

CREATE DATABASE «new_db» WITH OWNER «postgres» ENCODING ‘UTF8’ LC_COLLATE = ‘en_US.UTF-8’ LC_CTYPE = ‘en_US.UTF-8’ TEMPLATE = template0;

CREATE DATABASE

Резервное копирование

В клиент-серверном варианте работы 1С:Предприятие резервное копирование производится средствами СУБД. Т.к. СУБД PostgreSQL у нас теперь работает на Linux-сервере резервное копирование будет выполняться скриптами на этом сервере

Резервное копирование в PosеgreSQL выполняется утилитой . Подробная справка по синтаксису выводится командой

$ pg_dump --help

Например, что бы сделать резервную копию базы нужно выполнить такую команду

$ pg_dump -f base1c.sql.tar -F t -d base1c -h localhost -U postgres

Обратите внимание, запуск утилит резервного копирования и восстановления производится не от суперпользователя, без конструкции sudo. Файл бэкапа будет сформирован в текущем каталоге и его владельцем будет пользователь. Для восстановления базы из архива, созданного командой используется команда

Подробная справка по синтаксису

Для восстановления базы из архива, созданного командой используется команда . Подробная справка по синтаксису

$ pg_restore --help

Пример восстановления базы из бэкапа

$ pg_restore -d base1c -F t -U postgres base1c.sql.tar

Не пытайтесь восстановить бэкап в базу, подключенную к серверу 1С:Предприятие. Восстанавливать нужно в новую базу, после восстановления в консоли управления сервером 1С:Предприятие переподключить для восстанавливаемой информационной базы 1С базу данных PostgreSQL

Бэкап сохранился в домашней папке пользователя, это лучше, чем ничего, но хранить резервные копии баз данных на самом сервере баз данных слишком самоуверенно. Когда-то давно резервные копии делали на ленты стримера и увозили их куда подальше в надежное место. Сейчас для резервного копирования используются сетевые или облачные NAS хранилища, расположенные в таком надежном месте. В нашем примере копирование будет выполняться на сетевое NAS хранилище, включенное в домен под сетевым именем .

Обеспечим к нему доступ нашего пользователя. В Active Directory создадим пользователя backupuser, дадим ему права на запись в папке, где будем складывать резервные копии.

Прочим пользователям полностью запретите доступ к этой папке или оставьте права только на чтение. Так резервные копии будут целее.

Примонтируем сетевую папку, сначала создадим точку монтирования

$ sudo mkdir /mnt/nas

затем настроим автоматическое монтирование при старте системы, для чего сначала создадим файл-мандат на подключение к сетевому хранилищу

$ sudo nano /root/.smbcredintals

Прописываем в файл параметры подключения

username=backupuser
password=backupuserpassword
domain=domain.ru

и скроем его от посторонних глаз

$ sudo chmode 0600 /root/.smbcredintals

Пропишем подключение сетевой папки при старте системы

$ sudo nano /etc/fstab

в конец файла добавляем

//nas/backups    /mnt/nas        cifs    credentials=/root/.smbcredentials,dir_mode=0777,file_mode=0777 0 0

и даем команду примонтировать все, что мы прописали

$ sudo mount -a

В результате в точке монтировали должна появиться папка сетевого хранилища , куда можно складывать резервные копии.

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

Альтернативный вариант — установить Webmin — веб интерфейс для администрирования Linux-сервера, и уже с его помощью настроить резервное копирование в службе PostgreSQL

Используйте скрипт , он сохраняет резервные копии за несколько дней, автоматически удаляя старые копии.

Создайте в домашней папке пользователя файл и разместите в нем скрипт по указанной выше ссылке.

Не делайте это в Windows редакторах. Из-за различия в служебных символах, обозначающих конец строки в Windows и Linux интерпретатор скриптов bash будет выдавать ошибки.

Установите для этого файла признак исполняемости

$ chmod +x pg_backup_rotated.sh

В том же каталоге создайте файл настроек и заполните его как по указанной выше ссылке. Все настройки можно оставить по умолчанию, кроме

BACKUP_DIR=/mnt/nas/

Проверьте работоспособность, выполните команду

$ ./pg_backup_rotated.sh

Если не увидели никаких ошибок и процесс копирования пошел, то все сделано правильно, можно поставить задачу в расписание. Редактируем задания для демона

$ crontab -e

добавляем строчку с заданием

0 19 * * 1-5 /home/user/pg_backup_rotated.sh

Резервное копирование будет выполняться в 19:00 с понедельника по пятницу.

Поздравляем! Только что Вы сэкономили много тысяч рублей на лицензиях Microsoft.

Регулярное обслуживание баз 1С

Рекомендуется регулярно выполнять как минимум две операции с базами 1С на сервере с PostgreSQL.

  1. Очистка базы данных с помощью vacuumdb.
  2. Перестроение индексов с помощью reindexdb.

Ничего сложного в данных операциях нет. Все выполняется штатными средствами postgresql в одну команду. Единственное, что нужно учесть — перестроение индексов ресурсоемкий процесс. Ко всему прочему он еще и длится долго. Так что выполнять операцию нужно только когда нет большой нагрузки на базу.

Чистка базы данных 1С средствами PostgreSQL:

sudo -u postgres /usr/bin/vacuumdb --full --analyze --username postgres --dbname basa1

Перестройка индексов:

sudo -u postgres /usr/bin/reindexdb --username postgres --dbname basa1

Для того, чтобы выполнять эти задания регулярно, добавьте их в crontab:

crontab -e
30 0 * * * sudo -u postgres /usr/bin/vacuumdb --full --analyze --username postgres --dbname basa1
30 1 * * * sudo -u postgres /usr/bin/reindexdb --username postgres --dbname baza1

Если баз несколько, добавьте задания для каждой или объедините все команды в один bash скрипт и добавьте его в cron, вместо кучи отдельных заданий.

Подключение к PostgreSQL сторонней программой

Мне удобней работать с БД с помощью графического интерфейса, для этого я использую DBeaver или DataGrip (он есть как отдельной программой, так и в виде строенного модуля в других IDE от JetBrains).

Для подключения сторонней программой нужно учитывать один момент. По умолчанию из соображений безопасности PostgreSQL разрешаются только локальные подключения. Чтобы это исправить и подключиться к БД снаружи нам необходимо отредактировать 2 файла:

1. Файл postgresql.conf – файл основных настроек. В Ubuntu он располагается в /etc/postgresql/ВЕРСИЯ_БД/main/postgresql.conf, в нашем случае версия 12, поэтому откроем его с помощью редактора nano вот так:

нам нужно найти строчку

И заменить ее на

2. Второй файл это pg_hba.conf – файл с настройками аутентификации. При подключении клиента к серверу из этого файла выбирается первая строчка соответствующая соеденению по четырем параметрам:

  • Типу соединения
  • Имени БД
  • Имени пользователя
  • IP адреу клиента

Откроем файл с помощью nano:

Для нашего пользователя и БД допишем в конец файла такую строку:

И сохраним файл.

Строка, которую мы добавили, означает следующее: Сетевые соединения (host) к базе данных (blog) под пользователем Django с любых ip адресов должны проверяться методом md5.

Дальше заходим в утилиту psql:

И для обновления конфигурации выполняем следующую команду:

Или можно перезагрузить сервер БД командой:

Все, теперь пробуем подключится к БД с помощью, например, DBeaver. Введите данные подключения (имя базы, пользователь и пароль), которые мы задали выше:

Теперь все готово, можно использовать PostgreSQL при разработке своих проектов 

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
IP-файл
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: