Postgresql debian установка и настройка: Настройка PostgreSQL под Linux / Хабр

Postgres Pro + 1C на Debian 11 — Записки непутевого админа

Вводные данные:

  • Система Debian 11
  • 1С версия 8.3.17.2256
  • Сервер БД Postgres PRO

Содержание

1. Подготовка системы.

На свежеустановленной системе для начала правим репозитории.

apt edit-sources

apt edit-sources

#Debian 11 (Bullseye)
deb http://deb.debian.org/debian bullseye main contrib non-free
deb-src http://deb.debian.org/debian bullseye main contrib non-free
deb http://deb.debian.org/debian-security/ bullseye-security main contrib non-free
deb-src http://deb.debian.org/debian-security/ bullseye-security main contrib non-free
deb http://deb.debian.org/debian bullseye-updates main contrib non-free
deb-src http://deb.debian.org/debian bullseye-updates main contrib non-free

1

2

3

4

5

6

7

8

9

10

#Debian 11 (Bullseye)

 

deb http://deb. debian.org/debian bullseye main contrib non-free

deb-src http://deb.debian.org/debian bullseye main contrib non-free

 

deb http://deb.debian.org/debian-security/ bullseye-security main contrib non-free

deb-src http://deb.debian.org/debian-security/ bullseye-security main contrib non-free

 

deb http://deb.debian.org/debian bullseye-updates main contrib non-free

deb-src http://deb.debian.org/debian bullseye-updates main contrib non-free

apt update

apt update

Ставим необходимые пакеты для работы 1С сервера и установки Postgres

apt install curl sudo imagemagick unixodbc ttf-mscorefonts-installer gnupg make libc6-i386 pigz -y

apt install curl sudo imagemagick unixodbc ttf-mscorefonts-installer gnupg make libc6-i386 pigz -y

Теперь нужно подготовить locale для нашей системы

dpkg-reconfigure locales

dpkg-reconfigure locales

Нам нужно выбрать ru_RU. UTF-8 UTF-8. Так же убедитесь на всякий случай, что en_US.UTF-8 тоже выбрана. По умолчанию выбираем ее же — ru_RU.UTF-8 UTF-8 и перезапускаем систему.

Все готово для установки сервера 1С и Postgres

2. Установка 1С сервера

Скачиваем с сайта https://releases.1c.ru/ архив с deb пакетами 1С сервера и передаем на наш сервер. Можно воспользоваться WinSCP если используете Windows, для Linux можно воспользоваться scp

scp deb64_8_3_17_2256.tar.gz [email protected]:/home/user

scp deb64_8_3_17_2256.tar.gz [email protected]:/home/user

Где:

deb64_8_3_17_2256.tar.gz — 1С архив

[email protected] — Пользователь и адрес сервера куда передаем

:/home/user — Директория назначения

Архив лучше распаковать в отдельную директория

mkdir 1c-server
mv deb64_8_3_17_2256. tar.gz 1c-server/
cd 1c-server/
tar xzvf deb64_8_3_17_2256.tar.gz

mkdir 1c-server

mv deb64_8_3_17_2256.tar.gz 1c-server/

cd 1c-server/

tar xzvf deb64_8_3_17_2256.tar.gz

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

1c-enterprise83-common_8.3.17-2256_amd64.deb 1c-enterprise83-server_8.3.17-2256_amd64.deb 1c-enterprise83-ws-nls_8.3.17-2256_amd64.deb
1c-enterprise83-common-nls_8.3.17-2256_amd64.deb 1c-enterprise83-server-nls_8.3.17-2256_amd64.deb deb64_8_3_17_2256.tar.gz
1c-enterprise83-crs_8.3.17-2256_amd64.deb 1c-enterprise83-ws_8.3.17-2256_amd64.deb license-tools

1c-enterprise83-common_8.3.17-2256_amd64.deb      1c-enterprise83-server_8.3.17-2256_amd64.deb      1c-enterprise83-ws-nls_8.3.17-2256_amd64.deb

1c-enterprise83-common-nls_8.3.17-2256_amd64.deb  1c-enterprise83-server-nls_8. 3.17-2256_amd64.deb  deb64_8_3_17_2256.tar.gz

1c-enterprise83-crs_8.3.17-2256_amd64.deb         1c-enterprise83-ws_8.3.17-2256_amd64.deb          license-tools

Для установки 1С сервера с поддержкой русского языка вам нужны пакеты в названии которых не встречается nsl

Ставим 1С сервер и запускаем его

dpkg -i 1c-enterprise83-common_8.3.17-2256_amd64.deb 1c-enterprise83-server_8.3.17-2256_amd64.deb 1c-enterprise83-ws_8.3.17-2256_amd64.deb

dpkg -i 1c-enterprise83-common_8.3.17-2256_amd64.deb 1c-enterprise83-server_8.3.17-2256_amd64.deb 1c-enterprise83-ws_8.3.17-2256_amd64.deb

systemctl enable srv1cv83.service

systemctl enable srv1cv83.service

systemctl start srv1cv83.service

systemctl start srv1cv83. service

systemctl status srv1cv83.service

systemctl status srv1cv83.service

И проверяем состояние службы 1С

● srv1cv83.service — LSB: Starts and stops the 1C:Enterprise daemons
Loaded: loaded (/etc/init.d/srv1cv83; generated)
Active: active (exited) since Tue 2021-09-14 15:43:29 +05; 58s ago
Docs: man:systemd-sysv-generator(8)
Process: 6495 ExecStart=/etc/init.d/srv1cv83 start (code=exited, status=0/SUCCESS)
CPU: 80ms
сен 14 15:43:23 test systemd[1]: Starting LSB: Starts and stops the 1C:Enterprise daemons…
сен 14 15:43:23 test su[6507]: (to usr1cv8) root on none
сен 14 15:43:23 test su[6507]: pam_unix(su-l:session): session opened for user usr1cv8(uid=998) by (uid=0)
сен 14 15:43:23 test su[6507]: pam_unix(su-l:session): session closed for user usr1cv8
сен 14 15:43:29 test srv1cv83[6495]: Starting 1C:Enterprise 8.3 server: OK
сен 14 15:43:29 test systemd[1]: Started LSB: Starts and stops the 1C:Enterprise daemons.

1

2

3

4

5

6

7

8

9

10

11

12

13

● srv1cv83.service — LSB: Starts and stops the 1C:Enterprise daemons

     Loaded: loaded (/etc/init.d/srv1cv83; generated)

     Active: active (exited) since Tue 2021-09-14 15:43:29 +05; 58s ago

       Docs: man:systemd-sysv-generator(8)

    Process: 6495 ExecStart=/etc/init.d/srv1cv83 start (code=exited, status=0/SUCCESS)

        CPU: 80ms

 

сен 14 15:43:23 test systemd[1]: Starting LSB: Starts and stops the 1C:Enterprise daemons…

сен 14 15:43:23 test su[6507]: (to usr1cv8) root on none

сен 14 15:43:23 test su[6507]: pam_unix(su-l:session): session opened for user usr1cv8(uid=998) by (uid=0)

сен 14 15:43:23 test su[6507]: pam_unix(su-l:session): session closed for user usr1cv8

сен 14 15:43:29 test srv1cv83[6495]: Starting 1C:Enterprise 8.3 server: OK

сен 14 15:43:29 test systemd[1]: Started LSB: Starts and stops the 1C:Enterprise daemons.

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

Для платформы до 8.3.20 и ниже

ln -s /opt/1cv8/x86_64/8.3.17.2256/srv1cv83 /etc/init.d/srv1cv83

ln -s /opt/1cv8/x86_64/8.3.17.2256/srv1cv83 /etc/init.d/srv1cv83

systemctl daemon-reload

systemctl daemon-reload

Для платформы 8.3.20 или выше

Регистрируемся в systemd

systemctl link /opt/1cv8/x86_64/8.3.21.1393/[email protected]

systemctl link /opt/1cv8/x86_64/8.3.21.1393/[email protected]

И повторяем шаги выше по активации запуску служб

Все запустилось и работает нормально.

3. Установка Postgres

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

Выполняем команды пришедшие нам в письме

curl -o apt-repo-add.sh https://repo.postgrespro.ru/pg1c-13/keys/apt-repo-add.sh

curl -o apt-repo-add.sh https://repo.postgrespro.ru/pg1c-13/keys/apt-repo-add.sh

sh apt-repo-add.sh

sh apt-repo-add.sh

Скрипт сам обновит репозитории, нам делать ничего не нужно. Ставим сам postgres

apt install postgrespro-1c-13 -y

apt install postgrespro-1c-13 -y

Включаем автозапуск и проверяем статус службы

systemctl enable postgrespro-1c-13

systemctl enable postgrespro-1c-13

systemctl start postgrespro-1c-13. service

systemctl start postgrespro-1c-13.service

systemctl status postgrespro-1c-13.service

systemctl status postgrespro-1c-13.service

● postgrespro-1c-13.service — Postgres Pro 1c 13 database server
Loaded: loaded (/lib/systemd/system/postgrespro-1c-13.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2021-09-14 15:51:02 +05; 17s ago
Process: 7404 ExecStartPre=/opt/pgpro/1c-13/bin/check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
Main PID: 7406 (postgres)
Tasks: 8 (limit: 4679)
Memory: 50.5M
CPU: 88ms
CGroup: /system.slice/postgrespro-1c-13.service
├─7406 /opt/pgpro/1c-13/bin/postgres -D /var/lib/pgpro/1c-13/data
├─7408 postgres: logger
├─7410 postgres: checkpointer
├─7411 postgres: background writer
├─7412 postgres: walwriter
├─7413 postgres: autovacuum launcher
├─7414 postgres: stats collector
└─7415 postgres: logical replication launcher
сен 14 15:51:00 test systemd[1]: Starting Postgres Pro 1c 13 database server. ..
сен 14 15:51:01 test postgres[7406]: 2021-09-14 15:51:01.021 +05 [7406] СООБЩЕНИЕ: передача вывода в протокол процессу сбора протоколов
сен 14 15:51:01 test postgres[7406]: 2021-09-14 15:51:01.021 +05 [7406] ПОДСКАЗКА: В дальнейшем протоколы будут выводиться в каталог «log».
сен 14 15:51:02 test systemd[1]: Started Postgres Pro 1c 13 database server.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

● postgrespro-1c-13.service — Postgres Pro 1c 13 database server

     Loaded: loaded (/lib/systemd/system/postgrespro-1c-13.service; enabled; vendor preset: enabled)

     Active: active (running) since Tue 2021-09-14 15:51:02 +05; 17s ago

    Process: 7404 ExecStartPre=/opt/pgpro/1c-13/bin/check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)

   Main PID: 7406 (postgres)

      Tasks: 8 (limit: 4679)

     Memory: 50. 5M

        CPU: 88ms

     CGroup: /system.slice/postgrespro-1c-13.service

             ├─7406 /opt/pgpro/1c-13/bin/postgres -D /var/lib/pgpro/1c-13/data

             ├─7408 postgres: logger

             ├─7410 postgres: checkpointer

             ├─7411 postgres: background writer

             ├─7412 postgres: walwriter

             ├─7413 postgres: autovacuum launcher

             ├─7414 postgres: stats collector

             └─7415 postgres: logical replication launcher

 

сен 14 15:51:00 test systemd[1]: Starting Postgres Pro 1c 13 database server…

сен 14 15:51:01 test postgres[7406]: 2021-09-14 15:51:01.021 +05 [7406] СООБЩЕНИЕ:  передача вывода в протокол процессу сбора протоколов

сен 14 15:51:01 test postgres[7406]: 2021-09-14 15:51:01.021 +05 [7406] ПОДСКАЗКА:  В дальнейшем протоколы будут выводиться в каталог «log».

сен 14 15:51:02 test systemd[1]: Started Postgres Pro 1c 13 database server.

С установкой postgres все. Теперь переходим непосредственно к настройке.

4. Настройка Postgres

Для начала нужно задать пароль для пользователя БД postgres, под которым будет работать 1С сервер.

sudo -u postgres /usr/bin/psql -U postgres -c «alter user postgres with password ‘superpassword’;»

sudo -u postgres /usr/bin/psql -U postgres -c «alter user postgres with password ‘superpassword’;»

Далее перенесём хранение временной статистики с жёсткого диска в память. Для этого создадим раздел в оперативной памяти на 512 Mb.

Создаем директорию куда будем монтировать Ram диск и даем ей права

mkdir /var/lib/pgsql_stats_tmp

mkdir /var/lib/pgsql_stats_tmp

chown postgres:postgres /var/lib/pgsql_stats_tmp

chown postgres:postgres /var/lib/pgsql_stats_tmp

Теперь добавляем /etc/fstab строчку

nano /etc/fstab

nano /etc/fstab

tmpfs /var/lib/pgsql_stats_tmp tmpfs size=512M,uid=postgres,gid=postgres 0 0

tmpfs /var/lib/pgsql_stats_tmp tmpfs size=512M,uid=postgres,gid=postgres 0 0

И монтируем

mount /var/lib/pgsql_stats_tmp

mount /var/lib/pgsql_stats_tmp

Открываем конфиг postgress и правим параметр

nano /var/lib/pgpro/1c-13/data/postgresql. conf

nano /var/lib/pgpro/1c-13/data/postgresql.conf

stats_temp_directory = ‘/var/lib/pgsql_stats_tmp’

stats_temp_directory = ‘/var/lib/pgsql_stats_tmp’

systemctl restart postgrespro-1c-13

systemctl restart postgrespro-1c-13

5. Установка и настройка HASP License Manager

Если используются аппаратные лицензии, то их нужно как-то раздавать, благо программные раздает сам сервер 1С. Вставляем ключ в USB и проверяем что система его видит.

lsusb | grep -i hasp

lsusb | grep -i hasp

Bus 002 Device 002: ID 0529:0001 Aladdin Knowledge Systems HASP copy protection dongle

Bus 002 Device 002: ID 0529:0001 Aladdin Knowledge Systems HASP copy protection dongle

Дальше идем на страницу https://download. etersoft.ru/pub/Etersoft/HASP/stable/x86_64/Debian/ и выбираем нашу систему. В момент написания данной заметки, была версия только для 9 версии системы, но ничего страшного нам они подойдут. Скачиваем два файла:

wget https://rep.angald.ru/pool/main/h/haspd-modules/haspd-modules_7.90-eter2debian_amd64.deb

wget https://rep.angald.ru/pool/main/h/haspd-modules/haspd-modules_7.90-eter2debian_amd64.deb

wget https://rep.angald.ru/pool/main/h/haspd/haspd_7.90-eter2debian_amd64.deb

wget https://rep.angald.ru/pool/main/h/haspd/haspd_7.90-eter2debian_amd64.deb

И устанавливаем их в систему:

dpkg -i haspd*.deb

dpkg -i haspd*.deb

Запускаем и активируем автозагрузку:

systemctl start haspd

systemctl start haspd

systemctl enable haspd

systemctl enable haspd

6.

Настройка клиентских пк для поиска ключей в 1с

Создаем директорию

mkdir /opt/1C/v8.3/X86_64/conf

mkdir /opt/1C/v8.3/X86_64/conf

И создаем файл с настройками для поиска аппаратной защиты

nano /opt/1C/v8.3/X86_64/conf/nethasp.ini

nano /opt/1C/v8.3/X86_64/conf/nethasp.ini

[NH_COMMON]
NH_IPX = Disabled
NH_NETBIOS = Disabled
NH_TCPIP = Enabled
[NH_IPX]
[NH_NETBIOS]
[NH_TCPIP]
NH_SERVER_ADDR = 10.85.66.5
NH_PORT_NUMBER = 475
NH_TCPIP_METHOD = UDP
NH_USE_BROADCAST = Disabled

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

[NH_COMMON]

 

NH_IPX = Disabled

NH_NETBIOS = Disabled

NH_TCPIP = Enabled

[NH_IPX]

 

[NH_NETBIOS]

 

[NH_TCPIP]

 

NH_SERVER_ADDR = 10. 85.66.5

 

NH_PORT_NUMBER = 475

 

 

NH_TCPIP_METHOD = UDP

 

NH_USE_BROADCAST = Disabled

Где:

10.85.66.5 — адрес сервера с установленным ключом

475 — порт

7. Бэкап и обслуживание баз 1С на сервере PostgreSQL

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

sudo -u postgres psql -U postgres -l

sudo -u postgres psql -U postgres -l

Список баз данных
Имя | Владелец | Кодировка | LC_COLLATE | LC_CTYPE | Права доступа
————+———-+————+————-+————-+————————
postgres | postgres | UTF8 | ru_RU.UTF-8 | ru_RU.UTF-8 |
template0 | postgres | UTF8 | ru_RU.UTF-8 | ru_RU.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | ru_RU. UTF-8 | ru_RU.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
ut | postgres | UTF8 | ru_RU.UTF-8 | ru_RU.UTF-8 |
(4 строки)


1

2

3

4

5

6

7

8

9

10

11

                                  Список баз данных

    Имя    | Владелец | Кодировка | LC_COLLATE  |  LC_CTYPE   |     Права доступа    

————+———-+————+————-+————-+————————

postgres  | postgres | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 |

template0 | postgres | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 | =c/postgres          +

           |          |           |             |             | postgres=CTc/postgres

template1 | postgres | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 | =c/postgres          +

           |          |           |             |             | postgres=CTc/postgres

ut        | postgres | UTF8      | ru_RU. UTF-8 | ru_RU.UTF-8 |

(4 строки)



Нужная база у нас одна: ut

Для начала создадим директории где будем хранить бэкап и логи.

mkdir -p /var/lib/pgpro/service_logs

mkdir -p /var/lib/pgpro/service_logs

mkdir -p /var/lib/pgpro/backup

mkdir -p /var/lib/pgpro/backup

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

mkdir -p /opt/script

mkdir -p /opt/script

cd /opt/script

cd /opt/script

nano backup.bash

nano backup. bash

И копируем в наш файл сам скрипт

#!/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
#Скрипт для бэкапа и обслуживания баз данныз postgres pro
#Текущий каталог
#Базы для бэкапа
BASES=(«basa0» «base1″)
#Переменная даты и времени
DATA=»$(date +%Y-%m-%d_%H-%M)»
#Директория для логов
LOGS=/var/lib/pgpro/service_logs/
#Директория для бэкапов
BACKUPDIR=/var/lib/pgpro/backup/
#Минимальное количество бэкапов
FILEBACK=»10″

CheckDir()
{
if touch «$1″/»$2».test > /dev/null 2>&1 ; then
rm «$1″/»$2».test
return 0
else
echo «Ошибка создания файла, нет директории или отсутвуют права»
return 1
fi
}

Backup()
{
CheckDir «$BACKUPDIR» «$DATA»
echo «$(date +%Y-%m-%d_%H-%M-%S)» «Старт резервного копирования» «$1» >> «$LOGS»/»$DATA».log
if sudo -u postgres /opt/pgpro/1c-13/bin/pg_dump -U postgres «$1» > «$BACKUPDIR»/»$DATA»-«$1».sql ; then
echo «$(date +%Y-%m-%d_%H-%M-%S)» «Старт сжатия файла» >> «$LOGS»/»$DATA».log
pigz «$BACKUPDIR»/»$DATA»-«$1». sql
echo «$(date +%Y-%m-%d_%H-%M-%S)» «Резервное копирование закончено» «$1» >> «$LOGS»/»$DATA».log
return 0
else
echo «$(date +%Y-%m-%d_%H-%M-%S)» «Ошибка создания резервной копии» «$1» >> «$LOGS»/»$DATA».log
exit
fi
}

ClearOldFiles()
{
local FILES
local NUM=»1″
FILES=$(find «$BACKUPDIR» -maxdepth 1 -type f -name «*.gz» | wc -l)
if [ «$FILES» -gt «$FILEBACK» ] ; then
FILEBACK=$((FILEBACK+NUM))
cd $BACKUPDIR || exit
ls -tp | grep -v ‘/$’ | tail -n +$FILEBACK | xargs -I {} rm — {}
cd $LOGS || exit
ls -tp | grep -v ‘/$’ | tail -n +$FILEBACK | xargs -I {} rm — {}
echo «$(date +%Y-%m-%d_%H-%M-%S)» «Очистка старых файлов и логов» >> «$LOGS»/»$DATA».log
return 0
else
echo «$(date +%Y-%m-%d_%H-%M-%S)» «Ошибка очистки старых файлов и логов» >> «$LOGS»/»$DATA».log
return 1
fi
}

Maintance()
{
echo «$(date +%Y-%m-%d_%H-%M-%S)» «Старт vacuumdb» «$1» >> «$LOGS»/»$DATA».log
if sudo -u postgres /opt/pgpro/1c-13/bin/vacuumdb —full —analyze —username postgres —dbname «$1» > /dev/null 2>&1 ; then
echo «$(date +%Y-%m-%d_%H-%M-%S)» «Конец vacuumdb» «$1» >> «$LOGS»/»$DATA». log
else
echo «$(date +%Y-%m-%d_%H-%M-%S)» «Ошибка vacuumdb» «$1» >> «$LOGS»/»$DATA».log
exit
fi
echo «$(date +%Y-%m-%d_%H-%M-%S)» «Старт переиндексации» «$1» >> «$LOGS»/»$DATA».log
if sudo -u postgres /opt/pgpro/1c-13/bin/reindexdb —username postgres —dbname «$1» > /dev/null 2>&1 ; then
echo «$(date +%Y-%m-%d_%H-%M-%S)» «Конец переиндексации» «$1» >> «$LOGS»/»$DATA».log
else
exit
fi
return 0
}

for i in ${BASES[@]};
do
if Backup $i ; then
Maintance $i
else
exit
fi
done
ClearOldFiles $i
(date +%Y-%m-%d_%H-%M) > /var/log/timestamp
echo «$(date +%Y-%m-%d_%H-%M-%S)» «Создание файла для мониторинга» >> «$LOGS»/»$DATA».log

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

#!/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

#Скрипт для бэкапа и обслуживания баз данныз postgres pro

#Текущий каталог

#Базы для бэкапа

BASES=(«basa0» «base1»)

#Переменная даты и времени

DATA=»$(date +%Y-%m-%d_%H-%M)»

#Директория для логов

LOGS=/var/lib/pgpro/service_logs/

#Директория для бэкапов

BACKUPDIR=/var/lib/pgpro/backup/

#Минимальное количество бэкапов

FILEBACK=»10″

CheckDir()

{

if touch «$1″/»$2». test > /dev/null 2>&1 ; then

rm «$1″/»$2».test

return 0

else

echo «Ошибка создания файла, нет директории или отсутвуют права»

return 1

fi

}

Backup()

{

CheckDir «$BACKUPDIR» «$DATA»

echo «$(date +%Y-%m-%d_%H-%M-%S)» «Старт резервного копирования» «$1» >> «$LOGS»/»$DATA».log

if sudo -u postgres /opt/pgpro/1c-13/bin/pg_dump -U postgres «$1» > «$BACKUPDIR»/»$DATA»-«$1».sql ; then

echo «$(date +%Y-%m-%d_%H-%M-%S)» «Старт сжатия файла» >> «$LOGS»/»$DATA».log

pigz «$BACKUPDIR»/»$DATA»-«$1».sql

echo «$(date +%Y-%m-%d_%H-%M-%S)» «Резервное копирование закончено» «$1» >> «$LOGS»/»$DATA».log

return 0

else

echo «$(date +%Y-%m-%d_%H-%M-%S)» «Ошибка создания резервной копии» «$1» >> «$LOGS»/»$DATA».log

exit

fi

}

ClearOldFiles()

{

local FILES

local NUM=»1″

FILES=$(find «$BACKUPDIR» -maxdepth 1 -type f -name «*.gz» | wc -l)

if [ «$FILES» -gt «$FILEBACK» ] ; then

FILEBACK=$((FILEBACK+NUM))

cd $BACKUPDIR || exit

ls -tp | grep -v ‘/$’ | tail -n +$FILEBACK | xargs -I {} rm — {}

cd $LOGS || exit

ls -tp | grep -v ‘/$’ | tail -n +$FILEBACK | xargs -I {} rm — {}

echo «$(date +%Y-%m-%d_%H-%M-%S)» «Очистка старых файлов и логов» >> «$LOGS»/»$DATA». log

return 0

else

echo «$(date +%Y-%m-%d_%H-%M-%S)» «Ошибка очистки старых файлов и логов» >> «$LOGS»/»$DATA».log

return 1

fi

}

Maintance()

{

echo «$(date +%Y-%m-%d_%H-%M-%S)» «Старт vacuumdb» «$1» >> «$LOGS»/»$DATA».log

if sudo -u postgres /opt/pgpro/1c-13/bin/vacuumdb —full —analyze —username postgres —dbname «$1» > /dev/null 2>&1 ; then

echo «$(date +%Y-%m-%d_%H-%M-%S)» «Конец vacuumdb» «$1» >> «$LOGS»/»$DATA».log

else

echo «$(date +%Y-%m-%d_%H-%M-%S)» «Ошибка vacuumdb» «$1» >> «$LOGS»/»$DATA».log

exit

fi

echo «$(date +%Y-%m-%d_%H-%M-%S)» «Старт переиндексации» «$1» >> «$LOGS»/»$DATA».log

if sudo -u postgres /opt/pgpro/1c-13/bin/reindexdb —username postgres —dbname «$1» > /dev/null 2>&1 ; then

echo «$(date +%Y-%m-%d_%H-%M-%S)» «Конец переиндексации» «$1» >> «$LOGS»/»$DATA».log

else

exit

fi

return 0

}

for i in ${BASES[@]};

do

if Backup $i ; then

Maintance $i

else

exit

fi

done

ClearOldFiles $i

(date +%Y-%m-%d_%H-%M) > /var/log/timestamp

echo «$(date +%Y-%m-%d_%H-%M-%S)» «Создание файла для мониторинга» >> «$LOGS»/»$DATA». log

В самом скрипте есть комментарии так что разобраться там не сложно

Теперь нужно сделать скрипт исполняемым

chmod +x backup.bash

chmod +x backup.bash

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

bash backup.bash

bash backup.bash

Если все хорошо, то добавляем задание в crontab

crontab -e

crontab -e

0 0 * * * bash /opt/script/backup.bash > /dev/null 2>&1

0 0 * * * bash /opt/script/backup.bash > /dev/null 2>&1

Задание будет запускаться каждый день в полночь.

Установка PostgreSQL Exporter в Debian

Опубликовано

PostgreSQL Exporter — Обеспечивает мониторинг и сбор параметров PostreSQL для передачи в Prometheus.

Продолжение статей

  • Установка Prometheus в Debian
  • Установка Grafana в Debian

Содержание

  1. Установка postgres_exporter
  2. Настройка Prometheus для получения данных postgres_exporter
  3. Настройка Grafana

Установка postgres_exporter

Берем актуальную версию postgres_exporter

Скачиваем ее

wget https://github.com/prometheus-community/postgres_exporter/releases/download/v0.10.1/postgres_exporter-0.10.1.linux-amd64.tar.gz

и распаковываем в opt

tar xzf postgres_exporter-0.10.1.linux-amd64.tar.gz -C /opt/

назначаем необходимые для работы права

chown -R postgres:postgres /opt/postgres_exporter-0.10.1.linux-amd64

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

Создаем файл конфигурации сервиса /etc/systemd/system/postgres_exporter.service со следующим содержимым

nano /etc/systemd/system/postgres_exporter.service
[Unit]
Description=Prometheus PostgreSQL Exporter
After=network.target

[Service]
Type=simple
Restart=always
User=postgres
Group=postgres
Environment=DATA_SOURCE_NAME="user=postgres host=/var/run/postgresql/ sslmode=disable"
ExecStart=/opt/postgres_exporter-0.10.1.linux-amd64/postgres_exporter
[Install]
WantedBy=multi-user.target

Устанавливаем и запускаем сервис

systemctl daemon-reload
systemctl enable postgres_exporter.service
systemctl restart postgres_exporter.service

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

ufw allow 9187/tcp

Настройка Prometheus для получения данных postgres_exporter

Открываем на редактирование файл конфигурации prometheus

nano /opt/configs/prometheus. yml

в секции scrape_configs добавляем

Обязательно два проблема в начале, файлы конфигурации yml к этому чувствительны

  - job_name: postgresql
    honor_labels: true
    scrape_interval: 20s
    scrape_timeout: 10s
    metrics_path: /metrics
    static_configs:
      - targets:
        - server_ip:9187

Перезапускаем prometheus

service prometheus restart

Настройка Grafana

Скачиваем идин из дашбордов в формате json

  • https://grafana.com/grafana/dashboards/455
  • https://grafana.com/grafana/dashboards/9628

В веб-консоли Grafana переходим в Dashboards — Browse и нажимаем Import

В данном окне нажимаем «Upload JSON file» и выбираем скачанный ранее файл. Выбираем prometheus — ранее подключенный сервер prometheus и нажимаем Import

После импорта дашборд становится доступен в системе для использования

Debian Grafana PostgreSQL postgres_exporter Prometheus

Как установить и настроить PostgreSQL 10 в Debian-подобном Linux.

| by oleksii_y

В Украине нет войны. Остановить Россию!

3 минуты чтения

·

23 октября 2018 г.

Предисловие .

PostgreSQL — это мощная система объектно-реляционных баз данных с открытым исходным кодом, активно разрабатывавшаяся более 30 лет и заслужившая прочную репутацию благодаря своей надежности, отказоустойчивости и производительности. Сообщество PostgreSQL предоставляет множество полезных мест, где можно ознакомиться с технологией, узнать, как она работает, и найти возможности карьерного роста. В этой статье рассказывается об установке и настройке PostgreSQL 10 в системе Linux, подобной Debian.

Предварительная настройка

Сначала мы должны добавить на сервер английскую локаль. Проверим, существует ли он:

$ locale -a | grep en

на случай, если ничего не ответили, запустите:

Шаг 1: $ dpkg-reconfigure locales
Шаг 2: выберите локаль в списке en_US. UTF-8 и нажмите Да
Шаг 3: выберите локаль по умолчанию en_US.UTF-8

Установка

Под пользователем root выполнить:
Шаг 1: # apt-get install lsb-release

Шаг 2: # echo “deb http://apt.postgresql.org/pub/repos/apt/ $ (lsb_release -sc) -pgdg main»> /etc/apt/sources.list.d/pgdg.list

Шаг 3: # wget — тихий -O — https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add —

Шаг 4: # apt-get update && apt-get install postgresql-10 -y

В результате получаем:
Расположение базы данных: /var/lib/postgresql/10
Журналы расположения: /var/log/postgresql/postgresql-10-main.log
Настройка журналов ротации: 9 0023 /и т.д./ logrotate.d/postgresql-common
Основные файлы конфигурации:
/etc/postgresql/10/main/postgresql. conf
/etc/postgresql/10/main/pg_hba.conf

Настройка Настройки PostgreSQL

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

Для PostgreSQL 10 откройте файл основных настроек:

#vi /etc/postgresql/10/main/postgresql.conf

Измените listen_addresses = ‘localhost’ на listen_ адреса = ‘*’

Строка комментария: ssl на

Теперь разрешаем подключение из локальной сети с любых хостов и к любым базам данных, для этого нужно добавить в конец: /etc/postgresql/10/ файл main/pg_hba.conf

# Локальные подключения IPv4:
host all all 127.0.0.1/32 md5
host all all 94.125.120.28/32 md5
host all all 13. 68.143.152/32 md5
host all all 40.76.65.192/32 мд5

Затем выйдите из пользователя postgres и перезапустите PostgreSQL: перезапуск службы postgresql

Проверка того, что PostgreSQL запущен и работает:

netstat -ltupn | grep postgre
Proto Recd-Q Send-Q Локальное имя PID/имя программы
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 563 / sshd
tcp 0 0 0.0.0.0:5432 0.0.0.0:* ПРОСЛУШАТЬ 9484 / postgres
tcp6 0 0 ::: 22 ::: * ПРОСЛУШАТЬ 563 / sshd
tcp6 0 0 ::: 5432 ::: * ПРОСЛУШАТЬ 9484 / postgres

Расширенная настройка

Для сервера с 2 ГБ ОЗУ, 1 ЦП и хранилищем SSD мы рекомендуем следующую конфигурацию:

max_connections = 50

shared_buffers = 512 МБ

Effective_cache_size = 1536 МБ

Maintenance_work_mem = 128 МБ

checkpoint_completion_target = 0,7

wal_buffers = 16MB

default_statistics_target = 100

random_page_cost = 1. 1

Effective_io_concurrency = 200

work_mem = 10485kB

min_w al_size = 1 ГБ

max_wal_size = 2 ГБ

idle_in_transaction_session_timeout = 30000 (мс)

Спасибо за прочтение!

Как установить базу данных PostgreSQL в Debian 10

Чтобы узнать больше о PostgreSQL, в этой статье вы узнаете Как установить базу данных PostgreSQL в Debian 10 . PostgreSQL — это самая передовая универсальная и объектно-реляционная система баз данных с открытым исходным кодом и проверенной архитектурой, которая работает во всех основных операционных системах.

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

Одной из наиболее важных функций PostgreSQL является то, что вы можете определять свои собственные типы данных, добавлять пользовательские функции и даже писать код на разных языках программирования, таких как C/C++, Java и т.  д., без перекомпиляции базы данных.

 

Содержание

Требование:

Начальная установка с Debian 10

 

Следуйте этому руководству, чтобы узнать, как установить, защитить и настроить базу данных PostgreSQL сервер в Дебиан 10 .

Вам будет полезно знать, что PostgreSQL используется известными технологическими компаниями, такими как Apple, Fujitsu, Red Hat, Cisco, Juniper Network и т. д.

 

Купить виртуальный частный сервер Linux для установки базы данных PostgreSQL в Debian 10

Установка сервера PostgreSQL в Debian 10

Сначала установите сервер базы данных PostgreSQL , набрав:

 apt install postgresql-11 postgresql-client-11 

Точка : В Debian , как и в любых других демонах, база данных Postgres инициализируется сразу после завершения установки пакета.

Вы можете использовать утилиту pg_isready , которая проверяет состояние подключения сервера PostgreSQL, чтобы проверить, действительно ли инициализирована база данных Postgres .

 pg_isready 

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

 systemctl status postgresql 

Используйте следующие полезные команды для управления службой Postgres в systemd.

 systemctl запустить postgresql systemctl перезапустить postgresql systemctl остановить postgresql systemctl перезагрузить postgresql это перезагружает конфигурацию службы 

 

Не пропустите соответствующие статьи.

Руководство по установке PostgreSQL на Windows Server 2016

Руководство по установке PostgreSQL Ubuntu 20.04

Учебник по установке и использованию PostgreSQL в Ubuntu 18.04

Защита и настройка базы данных PostgreSQL

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

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

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

 passwd postgres 

Кроме того, роль Postgres по умолчанию не защищена. Вам также необходимо защитить его паролем. Теперь переключитесь на системную учетную запись пользователя postgres и роль postgres , как показано на рисунке.

Примечание : Не забудьте установить надежный и безопасный пароль.

 su - postgres sql -c «ИЗМЕНИТЬ ПОЛЬЗОВАТЕЛЯ postgres С ПАРОЛЕМ« securepass_here »;» 

Теперь вы можете выйти из postgres  аккаунт, чтобы продолжить работу с руководством.

 

Настройка аутентификации клиента

На этом этапе вы просмотрите основной файл конфигурации Postgres , который находится по адресу /etc/postgresql/11/main/postgresql. conf. Кроме этого файла,   Postgres  использует два других файла конфигурации, редактируемых вручную, которые управляют аутентификацией клиента.

Для управления аутентификацией клиента используйте файл /etc/postgresql/11/main/pg_hba.conf 9Конфигурационный файл 0012.

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

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

md5  или  пароль , который работает аналогично, за исключением того, что пароль передается через соединение, а именно  MD5-хэш и открытый текст соответственно.

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

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

 vim /etc/postgresql/11/main/pg_hba.conf 

Затем, чтобы изменить метод аутентификации на md5 найдите следующую строку.

 локальные все все md5 

Далее сохраняем изменения в файле и выходим из него. Затем примените последние изменения, перезапустив службу Postgres следующим образом.

 systemctl перезапустить postgresql 

 

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

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

Теперь переключитесь на учетную запись postgres и откройте оболочку Postgres следующим образом.

 su - postgres psql 

Затем, чтобы создать базу данных с именем «test_db» , выполните следующую команду SQL.