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
Содержание
- Установка postgres_exporter
- Настройка Prometheus для получения данных postgres_exporter
- Настройка 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.