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

воскресенье, 8 марта 2020 г.

Установка 1С + postgresql под windows

Установка PostgreSQL, версия 10.5-24.1C windows 10

1. PostgreSQL. Версия 11.5-12.1C. Дистрибутив СУБД PostgreSQL для Windows (64-bit) одним архивом

Обратить внимание, что если PostgreSQL установлен не по умолчанию, нужно добавить права
полный доступ для NETWORK SERVICE для папки установки (если изменен) или на папку с данными. Иначе после reboot PostgreSQL не будет запускаться.

 
2. Database location на SSD диске
если пути установки не по умолчанию, нужно добавить права
полный доступ для NETWORK SERVICE для папки установки (если изменен) или на папку с данными. Иначе после reboot PostgreSQL не будет запускаться.

3. Ставим  Cервер 1С:Предприятия (64-bit) для Windows 8.3.15.1830 или
старше.

4. IP 6 отключаем

5. Технологический журнал не настраиваем.

6. При последней установке служба агента не запускалась
Удалить службу
sc delete "1C:Enterprise 8.3 Server Agent (x86-64)"

1C:Enterprise 8.3 Server Agent (x86-64) пока вход в систему не был переделан с системной учетной записью.


7.  Настроить  postgresql.conf  Добавить в конец файла postgresql.conf
как в статье:

PostgreSQL, версия 10.5-24.1C windows 10 postgresql.conf 

Перезапустить сервер PostgreSQL


8. Если планируем ставить pg_probackup нужно пересоздать кластер  PostgreSQL с контрольными суммами.

9. Настраиваем  pg_probackup

pg_probackup настройка автономного резервного копирования windows

Если не использум pg_probackup, нужно настроить pg_basebackup

PostgreSQL 10.5-24 настройка WAL архивирования windows
Резервное копирование кластера PostgreSQL pg_basebackup Windows
 
10. Настроить vacuum

Windows обслуживание баз PostgreSQL

В скрипте настроить путь и пароль:

REM Установка переменных окружения
SET PGBIN=C:\Program Files\PostgreSQL\10.5-24.1C\bin
SET PGUSER=postgres
SET PGPASSWORD=pass

11. Настроить backup в dump
Из статьи ниже просто взять скрипт
Резервное копирование базы PostgreSQL pg_dump под windows
Сделать свой скрипт на каждую базу в скрипте настроить:
Имя базы:
SET PGDATABASE=demo

SET PGBIN=C:\Program Files\PostgreSQL\10.5-24.1C\bin
SET PGHOST=localhost
SET PGPORT=5432
SET PGUSER=postgres
SET PGPASSWORD=pass

12. Сделать общий скрипт в планировщике

Вообще хорошо перед pg_dump
Остановить сервер 1С
"C:\Program Files\1cv8\8.3.13.1690\bin\ragent.exe" -stop
скрипт vacuum
скрипт dump на каждую базу ...
скрипт dump на каждую базу ...
После pg_dump
Запуск сервера 1С
"C:\Program Files\1cv8\8.3.13.1690\bin\ragent.exe" -start

Целесообразно настроить удаление старых копий
forfiles /P "d:\demo" /D -30 /C "cmd /c del @path /q"


13. Настройка web доступа
Установка Apache HTTP Server 64 on Microsoft Windows

воскресенье, 20 октября 2019 г.

Настройка systemd для запуска PostgreSQL 10 от 1С

Настройка systemd для запуска PostgreSQL от 1С

$ pg_lsclusters
Ver Cluster Port Status Owner    Data directory              Log file
10  main    5432 online postgres /var/lib/postgresql/10/main pg_log/postgresql-%a.log

#$ sudo pg_dropcluster --stop 10 main
$ sudo pg_ctlcluster 10 main stop
$ sudo su - postgres
$ /usr/lib/postgresql/10/bin/initdb --locale=ru_RU.utf8 /var/lib/postgresql/10/data
$ exit

$ sudo nano /etc/systemd/system/postgres.service

[Unit]
Description=PostgreSQL database server
After=network.target

[Service]
Type=forking
TimeoutSec=120
User=postgres
Group=postgres

Environment=PGROOT=/var/lib/postgresql/10

SyslogIdentifier=postgres
PIDFile=${PGROOT}/data/postmaster.pid
RuntimeDirectory=postgresql
RuntimeDirectoryMode=755

ExecStartPre= /usr/lib/postgresql/10/bin/pg_controldata ${PGROOT}/data
ExecStart= /usr/lib/postgresql/10/bin/pg_ctl -s -D ${PGROOT}/data start -w -t 120
ExecReload=/usr/lib/postgresql/10/bin/pg_ctl -s -D ${PGROOT}/data reload
ExecStop=  /usr/lib/postgresql/10/bin/pg_ctl -s -D ${PGROOT}/data stop -m fast

# Due to PostgreSQL's use of shared memory, OOM killer is often overzealous in
# killing Postgres, so adjust it downward
OOMScoreAdjust=-200

# Additional security-related features
PrivateTmp=true
ProtectHome=true
ProtectSystem=full
NoNewPrivileges=true

[Install]
WantedBy=multi-user.target

Сохранить.

$ sudo systemctl start postgres.service

После проверики

Удалить кластер main (займет порт 5432)  Удалит с Вашими данными!!!

$ sudo pg_dropcluster --stop 10 main   
$ sudo systemctl enable postgres.service

Команды:

$ sudo systemctl daemon-reload  # запускать после изменений файла
$ sudo systemctl start postgres.service
$ sudo systemctl stop postgres.service
$ sudo systemctl restart postgres.service
$ sudo systemctl status postgres.service

вторник, 1 октября 2019 г.

Установка PostgreSQL 10.9-5.1C на Ubuntu 18.04.3

В данной статье опишем установку PostgreSQL 10.9-5.1C  на ubuntu 18.04.3 на виртуальную машину.
Устанавливаем ubuntu 18.04.3 виртуальную машину
RAM (16 GB)

Настройки ubuntu пользователь (привязка в скриптах) user пароль 12345, имя компьютера u1804

После установки, Ctrl +Alt + T (окно терминала)
$ sudo apt update -y
$ sudo apt upgrade -y
$ sudo apt autoremove -y
$ sudo apt install mc ssh samba -y

Возможно sudo apt upgrade -y не пройдет из за блокировки, тогда sudo reboot и повторите с начала.

$ lsusb

2. Настройка сети

Тестовый сервер будет использовать dhcp

Смотрим:
$ cat  /etc/hosts
127.0.0.1       localhost
.....


$ sudo nano /etc/hosts

Меняем:

127.0.0.1       localhost       test2


Сохранить.

$ cat /proc/cpuinfo | grep MHz
cpu MHz         : 800.111
cpu MHz         : 800.028
cpu MHz         : 800.377
cpu MHz         : 800.190


3. Тюнинг остального:

Сделаем еще один скрипт для настройки остального:

$ nano tuning.sh

#!/bin/bash
# отключим ipv6
sudo /bin/su -c "echo 'net.ipv6.conf.all.disable_ipv6 = 1' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'net.ipv6.conf.default.disable_ipv6 = 1' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'net.ipv6.conf.lo.disable_ipv6 = 1' >> /etc/sysctl.conf"
#sudo /bin/su -c "echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf"
#тюнинг postgresql
#add a swap file to an Ubuntu 16.04
#sudo fallocate -l 1G /swapfile
#sudo chmod 600 /swapfile
#sudo mkswap /swapfile
#sudo swapon /swapfile
#sudo cp /etc/fstab /etc/fstab.bak
#sudo echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
sudo /bin/su -c "echo 'vm.swappiness=1' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'kernel.sched_migration_cost_ns = 5000000' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'kernel.sched_autogroup_enabled = 0' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'vm.dirty_background_bytes = 67108864' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'vm.dirty_bytes = 536870912' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'vm.zone_reclaim_mode = 0' >> /etc/sysctl.conf"
sudo sysctl -p
# перезагрузим сеть
#sudo systemctl restart networking.service
#sudo systemctl start networking.service
#sudo systemctl enable networking.service
# Настройка sudo journalctl -b sudo journalctl -b -1 sudo journalctl --list-boots
sudo sed -i 's/#Storage=auto/Storage=persistent/' /etc/systemd/journald.conf
# Отключение уведомлений службы Apport (/var/crash)
sudo sed -i 's/enabled=1/enabled=0/' /etc/default/apport
# Отключим службу ondemand# (для разгона cpu)
# cat /proc/cpuinfo | grep MHz
# systemctl status ondemand
sudo systemctl stop ondemand
sudo systemctl disable ondemand
# shutdown -r now

Сохраним файл tuning.sh

------------------------------------------
Сделаем исполняем
$ chmod +x tuning.sh
$  sudo ./tuning.sh

или
$  sudo sh tuning.sh
------------------------------------------

Перезагрузимся

$ sudo reboot

После перезагрузки по сети можно подключиться MobaXterm

$ cat /proc/cpuinfo | grep MHz 
cat /proc/cpuinfo | grep MHz
cpu MHz         : 4000.489
cpu MHz         : 4000.162
cpu MHz         : 4000.980
cpu MHz         : 4002.072

$ free
              total        used        free      shared  buff/cache   available
Память:    16284616       95512    15944100        1312      245004    15870784
Подкачка:     1048572           0     1048572


Установка СУБД PostgreSQL версия 10.9-5.1C

После перезагрузки по сети можно подключиться MobaXterm
к нашей виртуальной машине (по ip или или имени )  загрузить файлы установки:
$ mkdir /home/user/test

  В папку /test положить файлы:
postgresql_10.9_5.1C_amd64_deb.tar.bz2

$ wget http://archive.ubuntu.com/ubuntu/pool/main/i/icu/libicu55_55.1-7_amd64.deb
$ sudo sudo dpkg -i libicu55_55.1-7_amd64.deb
$ dpkg -l | grep libicu55 | awk -F' ' '{print $2}' | sudo xargs apt-mark hold
# libicu55 помечен как зафиксированный. 
$ sudo apt-get install postgresql-common  -y
$ dpkg -l | grep postgres | awk -F' ' '{print $2}' | sudo xargs apt-mark hold
#postgresql-client-common помечен как зафиксированный.
#postgresql-common помечен как зафиксированный.
$ mkdir -p /tmp/post
$ cp /home/user/test/postgresql_10.9_5.1C_amd64_deb.tar.bz2 /tmp/post/
$ cd /tmp/post
$ tar -xvf postgresql_10.9_5.1C_amd64_deb.tar.bz2
$ ls 
$ cd postgresql-10.9-5.1C_amd64_deb
$ ls
# список файлов:
#libpq5_10.9-5.1C_amd64.deb  postgresql-10_10.9-5.1C_amd64.deb  postgresql-client-10_10.9-5.1C_amd64.deb

$ sudo dpkg -i *.deb
$ dpkg -l | grep 10.9-5.1C | awk -F' ' '{print $2}' | sudo xargs apt-mark hold
#libpq5 помечен как зафиксированный.
#postgresql-10 помечен как зафиксированный.
#postgresql-client-10 помечен как зафиксированный.

$ pg_lsclusters
Ver Cluster Port Status Owner    Data directory              Log file
10  main    5432 online postgres /var/lib/postgresql/10/main pg_log/postgresql-%a.log


$ sudo pg_dropcluster --stop 10 main

$ sudo pg_createcluster --locale ru_RU.UTF-8 10 main --  --data-checksums



$ sudo pg_ctlcluster 10 main start

$ pg_lsclusters
Ver Cluster Port Status Owner    Data directory              Log file
10  main    5432 online postgres /var/lib/postgresql/10/main pg_log/postgresql-%a.log
 
$ sudo -u postgres psql -U postgres -c "alter user postgres with password 'pass';"
$ sudo cp /etc/postgresql/10/main/postgresql.conf /etc/postgresql/10/main/postgresql.conf.bak

#Делаем проверки
$ sudo systemctl status postgresql.service
$ ss -tunpl | grep 5432
tcp    LISTEN     0      128       *:5432                  *:*
tcp    LISTEN     0      128      :::5432                 :::*
$ ps aux | grep postgres | grep -- -D
postgres  4914  0.0  0.1 320972 28864 ?        S    08:37   0:00 /usr/lib/postgresql/10/bin/postgres -D /var/lib/postgresql/10/main -c config_file=/etc/postgresql/10/main/postgresql.conf

-------------------------------------------------------------------------------------------------------

Настройка postgresql.conf для 1С Total Memory (RAM): 16 GB

$ sudo nano /etc/postgresql/10/main/postgresql.conf
Добавить в конец:

# DB Version: 10
# OS Type: linux
# DB Type: oltp
# Total Memory (RAM): 16 GB
# Data Storage: ssd

max_connections = 1000
shared_buffers = 4GB
temp_buffers = 256MB
work_mem = 64MB
effective_cache_size = 8GB # 4GB for 1c
maintenance_work_mem = 1GB
wal_buffers = 16MB
min_wal_size = 2GB
max_wal_size = 4GB

default_statistics_target = 100
effective_io_concurrency = 2
random_page_cost = 1.1
autovacuum = on
autovacuum_max_workers = 4
autovacuum_naptime = 20s
bgwriter_delay = 20ms
bgwriter_lru_multiplier = 4.0
bgwriter_lru_maxpages = 400
synchronous_commit = off
checkpoint_completion_target = 0.9
ssl = off
fsync = on
commit_delay = 1000
commit_siblings = 5
row_security = off
max_files_per_process = 1000
standard_conforming_strings = off
escape_string_warning = off
max_locks_per_transaction = 256
#log_min_duration_statement = 0
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,client=%h '
log_checkpoints = on
log_connections = on
log_disconnections = on
log_lock_waits = on
log_temp_files = 0
#log_autovacuum_min_duration = 0
#log_duration = on
#log_statement = all
log_destination = stderr
plantuner.fix_empty_table = 'on'
online_analyze.table_type = 'temporary'
online_analyze.verbose = 'off'

Сохранить.

$ sudo systemctl restart postgresql.service
 -------------------------------------------------------------------------------------------------------

Установка 1С

В папку /test положить файлы:
deb64_8_3_15_1656.tar.gz

# установка 1с
$ mkdir -p /tmp/1ctmp
$ cd /tmp/1ctmp
$ sudo apt install imagemagick -y
#$sudo apt install -y unixodbc libgsf-1-114 libglib2.0
$ sudo apt install libfreetype6 libgsf-1-common unixodbc glib2.0
#ubuntu
$ sudo  apt install -y xfonts-utils cabextract
$ sudo apt install ttf-mscorefonts-installer -y
#$ sudo dpkg -i fonts-ttf-ms_1.0-eter4ubuntu_all.deb
#$ sudo fc-cache -fv
$  ls /home/user/test/
$ cp /home/user/test/deb64_8_3_15_1656.tar.gz /tmp/1ctmp
$ tar xvzf deb64_8_3_15_1656.tar.gz
$ sudo dpkg -i 1c-enterprise83-common_8.3.15-1656_amd64.deb
$ sudo dpkg -i 1c-enterprise83-server_8.3.15-1656_amd64.deb
#$ sudo dpkg -i 1c-enterprise83-ws_8.3.15-1656_amd64.deb
#$ sudo dpkg -i 1c-enterprise83-crs_8.3.15-1656_amd64.deb
#$ sudo apt -f -y install
$ sudo chown -R usr1cv8:grp1cv8 /opt/1C
#$ sudo echo -e "pass\npass\n" | sudo passwd usr1cv8
$ sudo service srv1cv83 start
$ sudo service srv1cv83 status
#$ sudo usermod -aG sudo usr1cv8

$ sudo  apt install -y libc6-i386
$ cd ~/test
$ wget http://download.etersoft.ru/pub/Etersoft/HASP/last/x86_64/Ubuntu/18.04/haspd-modules_7.90-eter2ubuntu_amd64.deb
$ wget http://download.etersoft.ru/pub/Etersoft/HASP/last/x86_64/Ubuntu/18.04/haspd_7.90-eter2ubuntu_amd64.deb
$ sudo dpkg -i *.deb
#$ sudo apt-get install -f -y
$ sudo service haspd start
$ sudo service haspd status
#$ sudo reboot

$ sudo service srv1cv83 status
$ ss -tlnp | grep :15
LISTEN     0      128          *:1560                     *:*
LISTEN     0      128          *:1540                     *:*
LISTEN     0      128          *:1541                     *:*
LISTEN     0      128         :::1560                    :::*
LISTEN     0      128         :::1540                    :::*
LISTEN     0      128         :::1541                    :::*


Для программной лицензии (прявязанной к hasp)

в /var/1C/licenses
Положить лицензию

$ sudo mv 20190207114003.lic /var/1C/licenses

или вставить hasp

После установки

$ sudo reboot

Запуск службы сервера администрирования RAS

$ sudo nano /etc/systemd/system/srv1cv8-ras.service

Вставить:

[Unit]
Description=1C:Enterprise Remote Administration Service
After=network.target remote-fs.target nss-lookup.target
Requires=srv1cv83.service

[Service]
Type=simple
ExecStart=/opt/1C/v8.3/x86_64/ras cluster --port=1545
KillSignal=SIGINT
PrivateTmp=true
Restart=on-failure
RestartSec=5
User=usr1cv8
Group=grp1cv8

[Install]
WantedBy=multi-user.target

Сохранить.


#$ sudo systemctl daemon-reload
$ sudo systemctl enable srv1cv8-ras.service
$ sudo systemctl start srv1cv8-ras.service
$ sudo systemctl status srv1cv8-ras.service 

четверг, 19 сентября 2019 г.

Обновление PostgreSQL от 1С ubuntu 18.04

Обновление кластера PostgreSQL

Делаем dump баз, останавливаем 1с :
$ sudo nano /root/backup1.sh

#!/bin/sh -e
BACKUP_DIR="/backup/pg_dump"
#BACKUP_DIR="/backups/pg_dump"
cd $BACKUP_DIR
echo "====================================================================" > $BACKUP_DIR/backup.log
# останавливаем сервер 1С
echo "останавливаем сервер 1С"
sudo systemctl stop srv1cv8-ras.service
sudo systemctl stop  srv1cv83.service
echo "состояние сервера 1С"  >> $BACKUP_DIR/backup.log
sudo systemctl status  srv1cv83.service | grep 'Active:' >> $BACKUP_DIR/backup.log
echo "--------------------------------------------------------------------" >> $BACKUP_DIR/backup.log
# Устанавливаем дату
DATA=`date +"%Y-%m-%d_%H-%M-%S"`
DATA_NAME=`date +"%Y-%m-%d_%H-%M-%S"`
echo "$DATA Size database file: " >> $BACKUP_DIR/backup.log
sudo du -h -s /var/lib/postgresql/10/main/base  >> $BACKUP_DIR/backup.log
echo "--------------------------------------------------------------------" >> $BACKUP_DIR/backup.log
# делаем  backup
DB_BASE=`sudo /bin/su postgres -c "/usr/bin/psql -qAt -c 'SELECT * FROM pg_database;'" | \
     cut -d"|" -f1 | /bin/grep -v template | /bin/grep -v postgres`
#DB_BASE="demo test" #конкретные базы
#DB_BASE="" #пропустить
echo $DB_BASE
for DB_NAME in $DB_BASE
 do
     DATA=`date +"%Y-%m-%d_%H-%M-%S"`
     # Записываем информацию в лог с секундами
     echo "$DATA Начало backup базы ${DB_NAME}" >> $BACKUP_DIR/backup.log
     # Бэкапим базу данных demo и сразу сжимаем
     echo "$DATA Начало backup базы ${DB_NAME}"
     sudo /bin/su postgres -c "pg_dump -Fc ${DB_NAME}"  > $BACKUP_DIR/${DB_NAME}_$DATA_NAME.dump
     DATA=`date +"%Y-%m-%d_%H-%M-%S"`
     if [ $? -ne 0 ]
     then
         echo "$DATA Ошибка завершения backup для базы ${DB_NAME}"
         echo "$DATA Ошибка завершения backup для для базы ${DB_NAME}" >> $BACKUP_DIR/backup.log
         exit
     else
          echo "$DATA Успешное завершение backup для базы ${DB_NAME}"
          echo "$DATA Успешное завершение backup для базы ${DB_NAME}" >> $BACKUP_DIR/backup.log
     fi
     echo "--------------------------------------------------------------------" >> $BACKUP_DIR/backup.log
done
# запускаем сервер 1С
#echo "Запускаем сервер 1С"
#sudo systemctl start  srv1cv83.service
#sudo systemctl start srv1cv8-ras.service
echo "Состояние сервера 1С"  >> $BACKUP_DIR/backup.log
sudo systemctl status  srv1cv83.service | grep 'Active:' >> $BACKUP_DIR/backup.log
echo "--------------------------------------------------------------------" >> $BACKUP_DIR/backup.log
echo "Закончено"
cat $BACKUP_DIR/backup.log >> $BACKUP_DIR/backupall.log
cat $BACKUP_DIR/backup.log | mutt -s "backup" root

Сохранить.

$ sudo sh /root/backup1.sh

$ sudo systemctl status  srv1cv83.service


$ dpkg -l | grep postgresql-client-10
hi  postgresql-client-10                  10.8-18.1C                        amd64        front-end program                                    s for PostgreSQL 10

$ sudo systemctl stop postgresql.service
$ mkdir /home/user/test
В папку /test положить файлы:

 postgresql_10.9_5.1C_amd64_deb.tar.bz2

$ mkdir -p /tmp/post
$ cp /home/user/test/postgresql_10.9_5.1C_amd64_deb.tar.bz2 /tmp/post/
$ cd /tmp/post
$ tar -xvf postgresql_10.9_5.1C_amd64_deb.tar.bz2
$ ls 
$ cd postgresql-10.9-5.1C_amd64_deb
$ ls
# список файлов:
#libpq5_10.9-5.1C_amd64.deb  postgresql-10_10.9-5.1C_amd64.deb  postgresql-client-10_10.9-5.1C_amd64.deb

$ sudo dpkg -i *.deb
$ dpkg -l | grep 10.9-5.1C | awk -F' ' '{print $2}' | sudo xargs apt-mark hold
#libpq5 помечен как зафиксированный.
#postgresql-10 помечен как зафиксированный.
#postgresql-client-10 помечен как зафиксированный.

$ sudo systemctl start postgresql.service
$ sudo systemctl status postgresql.service
$ sudo -u postgres reindexdb --all
$ sudo -u postgres vacuumdb --all --analyze --full

$ sudo systemctl start  srv1cv83.service
$ sudo systemctl status  srv1cv83.service
$ sudo systemctl start srv1cv8-ras.service
$ sudo systemctl status srv1cv8-ras.service





# обновление 1с
$ sudo systemctl stop srv1cv83.service
$ sudo systemctl stop srv1cv8-ras.service 
$ mkdir -p /tmp/1ctmp
$ cd /tmp/1ctmp
$ ls /home/user/test/
$ cp /home/user/test/deb64_8_3_15_1656.tar.gz /tmp/1ctmp
$ tar xvzf deb64_8_3_15_1656.tar.gz
$ sudo dpkg -i 1c-enterprise83-common_8.3.15-1656_amd64.deb
$ sudo dpkg -i 1c-enterprise83-server_8.3.15-1656_amd64.deb
#$ sudo dpkg -i 1c-enterprise83-ws_8.3.15-1656_amd64.deb
#$ sudo dpkg -i 1c-enterprise83-crs_8.3.15-1656_amd64.deb
$ sudo systemctl start  srv1cv83.service
$ sudo systemctl status  srv1cv83.service
$ sudo systemctl start srv1cv8-ras.service
$ sudo systemctl status srv1cv8-ras.service


Для 8.3.15 делается один раз

Запуск службы сервера администрирования RAS

$ sudo nano /etc/systemd/system/srv1cv8-ras.service

Вставить:

[Unit]
Description=1C:Enterprise Remote Administration Service
After=network.target remote-fs.target nss-lookup.target
Requires=srv1cv83.service

[Service]
Type=simple
#Если нужно несколько серверов, нужно задать адрес агента сервиса
#ExecStart=/opt/1C/v8.3/x86_64/ras cluster --port=1545 localhost:1540
ExecStart=/opt/1C/v8.3/x86_64/ras cluster --port=1545
KillSignal=SIGINT
PrivateTmp=true
Restart=on-failure
RestartSec=5
User=usr1cv8
Group=grp1cv8

[Install]
WantedBy=multi-user.target

Сохранить.


#$ sudo systemctl daemon-reload
$ sudo systemctl enable srv1cv8-ras.service
$ sudo systemctl start srv1cv8-ras.service
$ sudo systemctl status srv1cv8-ras.service


Удаление кластера 1с

$ sudo systemctl stop srv1cv83.service
$ sudo systemctl stop srv1cv8-ras.service
$ sudo rm -R /home/usr1cv8/.1cv8/1C/1cv8
$ sudo systemctl start  srv1cv83.service
$ sudo systemctl status  srv1cv83.service
$ sudo systemctl start srv1cv8-ras.service
$ sudo systemctl status srv1cv8-ras.service

Удаление баз PostgreSQL

$ sudo su postgres -c "psql -c 'DROP DATABASE demo;'"
$ sudo su postgres -c "psql -c 'DROP DATABASE demo1;'"   


 


вторник, 13 августа 2019 г.

Обновление PostgreSQL от 1С


$ dpkg -l | grep postgresql-client-10
hi  postgresql-client-10                  10.8-13.1C                        amd64        front-end programs for PostgreSQL 10

$ sudo systemctl stop postgresql.service
$ mkdir /home/user/test
В папку /test положить файлы:

postgresql_10.8_18.1C_amd64_deb.tar.bz2
postgresql_10.8_18.1C_amd64_addon_deb.tar.bz2
$ mkdir -p /tmp/post
$ cp /home/user/test/postgresql_10.8_18.1C_amd64_deb.tar.bz2 /tmp/post/
$ cp /home/user/test/postgresql_10.8_18.1C_amd64_addon_deb.tar.bz2 /tmp/post/
$ cd /tmp/post
$ tar -xvf postgresql_10.8_18.1C_amd64_deb.tar.bz2
$ ls 
$ cd postgresql-10.8-18.1C_amd64_deb
$ ls
# список файлов:
#libpq5_10.8-18.1C_amd64.deb  postgresql-10_10.8-18.1C_amd64.deb  postgresql-client-10_10.8-18.1C_amd64.deb
$ sudo dpkg -i *.deb
# ниже можно не ставить:
$ cd /tmp/post/
$ tar -xvf postgresql_10.8_18.1C_amd64_addon_deb.tar.bz2
$ ls
$ cd postgresql-10.8-18.1C_amd64_addon_deb
$ sudo dpkg -i *.deb
# конец не ставить
$ dpkg -l | grep 10.8-18.1C | awk -F' ' '{print $2}' | sudo xargs apt-mark hold
#libecpg-compat3 помечен как зафиксированный.
#libecpg-dev помечен как зафиксированный.
#libecpg6 помечен как зафиксированный.
#libpgtypes3 помечен как зафиксированный.
#libpq-dev помечен как зафиксированный.
#libpq5 помечен как зафиксированный.
#postgresql-10 помечен как зафиксированный.
#postgresql-10-dbg помечен как зафиксированный.
#postgresql-client-10 помечен как зафиксированный.
#postgresql-doc-10 помечен как зафиксированный.
#postgresql-plperl-10 помечен как зафиксированный.
#postgresql-plpython-10 помечен как зафиксированный.
#postgresql-plpython3-10 помечен как зафиксированный.
#postgresql-pltcl-10 помечен как зафиксированный.
#postgresql-server-dev-10 помечен как зафиксированный.


$ sudo systemctl start postgresql.service
$ sudo -u postgres reindexdb --all


# обновление 1с
$ sudo service srv1cv83 stop
$ mkdir -p /tmp/1ctmp
$ cd /tmp/1ctmp
$ ls /home/user/test/
$ cp /home/user/test/deb64_8_3_15_1565.tar.gz /tmp/1ctmp
$ tar xvzf deb64_8_3_15_1565.tar.gz
$ sudo dpkg -i 1c-enterprise83-common_8.3.15-1565_amd64.deb
$ sudo dpkg -i 1c-enterprise83-server_8.3.15-1565_amd64.deb
#$ sudo dpkg -i 1c-enterprise83-ws_8.3.15-1565_amd64.deb
#$ sudo dpkg -i 1c-enterprise83-crs_8.3.15-1565_amd64.deb
$ sudo service srv1cv83 start
$ sudo service srv1cv83 status

Для 8.3.15

Запуск службы сервера администрирования RAS

$ sudo nano /etc/systemd/system/srv1cv8-ras.service

Вставить:

[Unit]
Description=1C:Enterprise Remote Administration Service
After=network.target remote-fs.target nss-lookup.target
Requires=srv1cv83.service

[Service]
Type=simple
ExecStart=/opt/1C/v8.3/x86_64/ras cluster --port=1545
KillSignal=SIGINT
PrivateTmp=true
Restart=on-failure
RestartSec=5
User=usr1cv8
Group=grp1cv8

[Install]
WantedBy=multi-user.target

Сохранить.


#$ sudo systemctl daemon-reload
$ sudo systemctl enable srv1cv8-ras.service
$ sudo systemctl start srv1cv8-ras.service
$ sudo systemctl status srv1cv8-ras.service

пятница, 2 августа 2019 г.

Тестирование PostgrSQL 10.5.24-1c vs 10.8.13-1c

Тестирование проводилось ЗиК ГУ  3.1.9.108  3000 сотрудников, расчет заработной платы последовательно за 3 месяца, т.е. 3 измерения Заполнить, Провести и закрыть. Заполнением всех 3000 сотрудников в один документ.
На 3 виртуальных машинах ubuntu 16.04 32 Gb c одинаково настроенным postgresql.conf

1. pg  10.5.24-1c  8.3.13.1690 ubuntu 16.04

 Заполнить - 185с; - 185с; - 185с среднее время заполнения 185 с
 Провести  - 115с;  -119с;  -120с среднее время провести 118 с


2. pg  10.5.24-1c  8.3.15.1565 ubuntu 16.04

 Заполнить - 111с; - 125с; - 125с среднее время заполнения 120 с
 Провести  - 106с;  -105с;  -106с среднее время провести 106 с


3. pg  10.8.13-1c  8.3.15.1565 ubuntu 16.04

 Заполнить - 110с; - 127с; - 127с среднее время заполнения 121 с
 Провести  - 120с;  -120с;  -120с среднее время провести 120 с

Вывод на платформе  8.3.15.1565 10.5.24-1c ускорение расчета заработной платы 35%
ускорение проведения 10%

8.3.15.1565 10.8.13-1c ускорение расчета заработной платы в пределах статистической  погрешности

ускорение проведения - деградация 13% по сравнению с 10.5.24-1c.


4.  pg  10.8.13-1c  8.3.15.1565 ubuntu 18.04

 Заполнить - 108с; - 107с; - 122с среднее время заполнения 112 с
 Провести  - 105с;  -104с;  -105с среднее время провести 105 с

Вывод  ускорение на ubuntu 18.04 ускорение заполнения 7%, проведения 12% по сравнению с ubuntu 16.04.

5. postgrespro-std-11  8.3.15.1565 ubuntu 16.04
Заполнить - 110с; - 125с; - 125с среднее время заполнения 120 с
Провести  - 105с;  -107с;  -122с среднее время провести 111 с

6. pg  10.8.18-1c  8.3.15.1565 ubuntu 16.04
 Заполнить - 110с; - 125с; - 125с среднее время заполнения 120 с
 Провести  - 120с;  -120с;  -120с среднее время провести 120 с

7. pg  9.6.7-1c  8.3.15.1565 ubuntu 16.04
 Заполнить - 110с; - 124с; - 124с среднее время заполнения 119 с
 Провести  - 120с;  -120с;  -120с среднее время провести 120 с

четверг, 1 августа 2019 г.

Тестирование PostgreSQL, версия 10.8-13.1C ubuntu 18.04.2

В данной статье опишем установку сервера СУБД PostgreSQL версия 10.5-24.1C на ubuntu 18.04.2 на виртуальную машину.
Нам потребуется (все 64 бит):
1. ubuntu 18.04.2

Устанавливаем ubuntu 18.04.2 без swap файла, т.е. размечаем вручную весь диск ext4 root.
RAM (16 GB) монтируем диск для backup /backup


Настройки ubuntu пользователь (привязка в скриптах) user пароль 12345, имя компьютера u1804, позже мы его сменим скриптом, как и ip адрес.

После установки, Ctrl +Alt + T (окно терминала)
$ sudo apt update -y
$ sudo apt upgrade -y
$ sudo apt autoremove -y
$ sudo apt install mc ssh samba -y

Возможно sudo apt upgrade -y не пройдет из за блокировки, тогда sudo reboot и повторите с начала.

$ lsusb

2. Настройка сети

Тестовый сервер будет использовать dhcp

Смотрим:
$ cat  /etc/hosts
127.0.0.1       localhost.localdomain   localhost
.....


$ sudo nano /etc/hosts

Меняем:

127.0.0.1       localhost.localdomain   localhost u1804

Сохранить.

$ cat /proc/cpuinfo | grep MHz
cpu MHz         : 800.111
cpu MHz         : 800.028
cpu MHz         : 800.377
cpu MHz         : 800.190


3. Тюнинг остального:

Сделаем еще один скрипт для настройки остального:

$ nano tuning.sh

#!/bin/bash
# отключим ipv6
sudo /bin/su -c "echo 'net.ipv6.conf.all.disable_ipv6 = 1' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'net.ipv6.conf.default.disable_ipv6 = 1' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'net.ipv6.conf.lo.disable_ipv6 = 1' >> /etc/sysctl.conf"
#sudo /bin/su -c "echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf"
#тюнинг postgresql
#add a swap file to an Ubuntu 16.04
#sudo fallocate -l 1G /swapfile
#sudo chmod 600 /swapfile
#sudo mkswap /swapfile
#sudo swapon /swapfile
#sudo cp /etc/fstab /etc/fstab.bak
#sudo echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
sudo /bin/su -c "echo 'vm.swappiness=1' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'kernel.sched_migration_cost_ns = 5000000' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'kernel.sched_autogroup_enabled = 0' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'vm.dirty_background_bytes = 67108864' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'vm.dirty_bytes = 536870912' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'vm.zone_reclaim_mode = 0' >> /etc/sysctl.conf"
sudo sysctl -p
# перезагрузим сеть
#sudo systemctl restart networking.service
#sudo systemctl start networking.service
#sudo systemctl enable networking.service
# Настройка sudo journalctl -b sudo journalctl -b -1 sudo journalctl --list-boots
sudo sed -i 's/#Storage=auto/Storage=persistent/' /etc/systemd/journald.conf
# Отключение уведомлений службы Apport (/var/crash)
sudo sed -i 's/enabled=1/enabled=0/' /etc/default/apport
# Отключим службу ondemand# (для разгона cpu)
# cat /proc/cpuinfo | grep MHz
# systemctl status ondemand
sudo systemctl stop ondemand
sudo systemctl disable ondemand
# shutdown -r now

Сохраним файл tuning.sh

------------------------------------------
Сделаем исполняем
$ chmod +x tuning.sh
$  sudo ./tuning.sh

или
$  sudo sh tuning.sh
------------------------------------------

Перезагрузимся

$ sudo reboot

После перезагрузки по сети можно подключиться MobaXterm

$ cat /proc/cpuinfo | grep MHz 
cat /proc/cpuinfo | grep MHz
cpu MHz         : 4000.489
cpu MHz         : 4000.162
cpu MHz         : 4000.980
cpu MHz         : 4002.072

$ free
              total        used        free      shared  buff/cache   available
Память:    16284616       95512    15944100        1312      245004    15870784
Подкачка:     1048572           0     1048572


Установка СУБД PostgreSQL версия 10.8_13.1C

После перезагрузки по сети можно подключиться MobaXterm
к нашей виртуальной машине (по ip или или имени )  загрузить файлы установки:
$ mkdir /home/user/test

 В папку /test положить файл:
deb64_8_3_15_1565.tar.gz
 postgresql_10.8_13.1C_amd64_deb.tar.bz2

Файл postgresql_10.8_13.1C_amd64_addon_deb.tar.bz2 не устанавливаем - проблемы с зависимостями

$ wget http://archive.ubuntu.com/ubuntu/pool/main/i/icu/libicu55_55.1-7_amd64.deb
$ sudo sudo dpkg -i libicu55_55.1-7_amd64.deb
# libicu55 помечен как зафиксированный.
$ dpkg -l | grep libicu55 | awk -F' ' '{print $2}' | sudo xargs apt-mark hold
$ sudo apt-get install postgresql-common  -y
$ dpkg -l | grep postgres | awk -F' ' '{print $2}' | sudo xargs apt-mark hold
#postgresql-client-common помечен как зафиксированный.
#postgresql-common помечен как зафиксированный.
$ mkdir -p /tmp/post
$ cp /home/user/test/postgresql_10.8_13.1C_amd64_deb.tar.bz2 /tmp/post/
$ cd /tmp/post
$ tar -xvf postgresql_10.8_13.1C_amd64_deb.tar.bz2
$ ls 
$ cd postgresql-10.8-13.1C_amd64_deb
$ ls
# список файлов:
#libpq5_10.5-24.1C_amd64.deb  postgresql-10_10.5-24.1C_amd64.deb  postgresql-client-10_10.5-24.1C_amd64.deb
$ sudo dpkg -i *.deb
$ dpkg -l | grep 10.8-13.1C | awk -F' ' '{print $2}' | sudo xargs apt-mark hold
#libpq5 помечен как зафиксированный.
#postgresql-10 помечен как зафиксированный.
#postgresql-client-10 помечен как зафиксированный.

$ pg_lsclusters
Ver Cluster Port Status Owner    Data directory              Log file
10  main    5432 online postgres /var/lib/postgresql/10/main pg_log/postgresql-%a.log


$ sudo pg_dropcluster --stop 10 main

$ sudo pg_createcluster --locale ru_RU.UTF-8 10 main --  --data-checksums


$ sudo pg_ctlcluster 10 main start

$ pg_lsclusters
Ver Cluster Port Status Owner    Data directory              Log file
10  main    5432 online postgres /var/lib/postgresql/10/main pg_log/postgresql-%a.log
 
$ sudo -u postgres psql -U postgres -c "alter user postgres with password 'pass';"
$ sudo cp /etc/postgresql/10/main/postgresql.conf /etc/postgresql/10/main/postgresql.conf.bak

#Делаем проверки
$ sudo systemctl status postgresql.service
$ ss -tunpl | grep 5432
tcp    LISTEN     0      128       *:5432                  *:*
tcp    LISTEN     0      128      :::5432                 :::*
$ ps aux | grep postgres | grep -- -D
postgres  4914  0.0  0.1 320972 28864 ?        S    08:37   0:00 /usr/lib/postgresql/10/bin/postgres -D /var/lib/postgresql/10/main -c config_file=/etc/postgresql/10/main/postgresql.conf

-------------------------------------------------------------------------------------------------------

Настройка postgresql.conf для 1С Total Memory (RAM): 16 GB

$ sudo nano /etc/postgresql/10/main/postgresql.conf
Добавить в конец:

# DB Version: 10
# OS Type: linux
# DB Type: oltp
# Total Memory (RAM): 16 GB
# Data Storage: ssd

max_connections = 1000
shared_buffers = 4GB
temp_buffers = 256MB
work_mem = 64MB
effective_cache_size = 8GB # 4GB for 1c
maintenance_work_mem = 1GB
wal_buffers = 16MB
min_wal_size = 2GB
max_wal_size = 4GB

default_statistics_target = 100
effective_io_concurrency = 2
random_page_cost = 1.1
autovacuum = on
autovacuum_max_workers = 4
autovacuum_naptime = 20s
bgwriter_delay = 20ms
bgwriter_lru_multiplier = 4.0
bgwriter_lru_maxpages = 400
synchronous_commit = off
checkpoint_completion_target = 0.9
ssl = off
fsync = on
commit_delay = 1000
commit_siblings = 5
row_security = off
max_files_per_process = 1000
standard_conforming_strings = off
escape_string_warning = off
max_locks_per_transaction = 256
#log_min_duration_statement = 0
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,client=%h '
log_checkpoints = on
log_connections = on
log_disconnections = on
log_lock_waits = on
log_temp_files = 0
#log_autovacuum_min_duration = 0
#log_duration = on
#log_statement = all
log_destination = stderr
plantuner.fix_empty_table = 'on'
online_analyze.table_type = 'temporary'
online_analyze.verbose = 'off'

Сохранить.

$ sudo systemctl restart postgresql.service
 -------------------------------------------------------------------------------------------------------

Установка pg_probackup 

pg_probackup описание

$ sudo su -c "echo 'deb [arch=amd64] http://repo.postgrespro.ru/pg_probackup/deb/ $(lsb_release -cs) main-$(lsb_release -cs)' > /etc/apt/sources.list.d/pg_probackup.list" 
$ sudo su -c "wget -O - http://repo.postgrespro.ru/pg_probackup/keys/GPG-KEY-PG_PROBACKUP | apt-key add -" 
$ sudo apt-get update 
$ sudo apt-get install pg-probackup-10
$ dpkg -l | grep pg-probackup-10 | awk -F' ' '{print $2}' | sudo xargs apt-mark hold
#pg-probackup-10 помечен как зафиксированный.

Инициализация каталога резервных копий 1 экземпляр на примонтированом HDD


Каталог резервных копий /backup/pg_probackup расположено на hdd диске, в нем будем ежедневно сохранять backup за 30 дней без непрерывного архивирования.
Если нет дополнительного диска, выполняем закомментированые команды
$ sudo pg_probackup-10 init -B /backup
$ sudo mkdir /backup/copy
$ sudo mkdir /backup/log
$ sudo mkdir /backup/pg_dump
$ sudo chown -R postgres:postgres /backup/
#$ sudo chmod -R 777 /backup/pg_probackup

Определение копируемого экземпляра 
$ sudo -u postgres pg_probackup-10 add-instance -B /backup -D /var/lib/postgresql/10/main --instance main


$ sudo nano /etc/postgresql/10/main/postgresql.conf

Добавить:

max_wal_senders = 10
wal_level = replica
unix_socket_directories='/var/run/postgresql'
# Для настройки архивного резервного копирования разкомментировать:
archive_mode = on
#archive_command ='test ! -f /wal/%f && cp %p /wal/%f' 
archive_command = '/usr/bin/pg_probackup-10 archive-push -B /backup --compress --instance main --wal-file-path %p --wal-file-name %f'

Сохранить.

$ sudo systemctl restart postgresql.service

Настройка политики сохранения 5 резервных копий

$ sudo -u postgres nano /backup/backups/main/pg_probackup.conf

Добавить:

retention-redundancy=5

Сохранить


Создание полной автономной резервной копии: 

$ sudo -u postgres pg_probackup-10 backup -B /backup --instance main -b FULL --stream --compress --delete-wal --expired -j 4


Просмотр:

$ sudo -u postgres pg_probackup-10 show -B /backup


Проверка backup:

Проверка файлов:
$ sudo -u postgres pg_probackup-10 checkdb -B /backup --instance main
INFO: Start checking data files
INFO: Data files are valid

Проверка backup: 
$ sudo -u postgres pg_probackup-10 validate -B /backup
INFO: Validate backups of the instance 'main'
INFO: Validating backup PUVU29
INFO: Backup PUVU29 data files are valid
INFO: Backup PUVU29 WAL segments are valid
INFO: Validating backup PUVTUX
INFO: Backup PUVTUX data files are valid
INFO: Backup PUVTUX WAL segments are valid
INFO: All backups are valid

------------------------------------------------------------------------------------------------------- 

Пример восстановления из полной автономной резервной копии (замена кластера на резервную копию)


Сделали копию:
$ sudo -u postgres pg_probackup-10 backup -B /backup --instance main -b FULL --stream --compress --expired

Перед восстановлением

Просмотр:

$ sudo -u postgres pg_probackup-10 show -B

Проверка backup:
$ sudo -u postgres pg_probackup-10 validate -B /backup

INFO: Validate backups of the instance 'main'
INFO: Validating backup PRP29I
INFO: Backup PRP29I data files are valid
INFO: Backup PRP29I WAL segments are valid

Можно восстанавливать.

Останавливаем 1с
$ sudo systemctl stop srv1cv83.service

Останавливаем postgresql
$ sudo systemctl stop postgresql.service

Удалим кластер main
$ sudo /bin/su postgres -c "rm -rf /var/lib/postgresql/10/main/*"

Восстановим кластер main
$ sudo -u postgres pg_probackup-10 restore -B /backup --instance main -i PRP29I
INFO: Validating backup PRP29I
INFO: Backup PRP29I data files are valid
INFO: Backup PRP29I WAL segments are valid
INFO: Backup PRP29I is valid.
INFO: Restore of backup PRP29I completed.


Запускаем postgresql
$ sudo systemctl start postgresql.service

Запускаем 1с
$ sudo systemctl start srv1cv83.service

------------------------------------------------------------------------------------------------------- 

Пример восстановления из полной автономной резервной копии c непрерывным архивированием (замена кластера на резервную копию)


$ sudo -u postgres pg_probackup-10 backup -B /backup --instance main -b FULL --stream --compress --delete-wal --expired


Просмотр:

$ sudo -u postgres pg_probackup-10 show -B /backup


Проверка backup:
$ sudo -u postgres pg_probackup-10 validate -B /backup

INFO: Validate backups of the instance 'main'
INFO: Validating backup PRP6Q5
INFO: Backup PRP6Q5 data files are valid
INFO: Backup PRP6Q5 WAL segments are valid
 Можно восстанавливать, но проверим непрерывность архивирования:


Войти в 1с создать документ, провести, выйти из 1с.


$ sudo -u postgres pg_probackup-10 validate -B /backup   --instance main -i PRP6Q5 --time='2042-04-16 12:26:00'
INFO: Validating backup PRP6Q5
INFO: Backup PRP6Q5 data files are valid
WARNING: Thread [1]: Could not read WAL record at 1/88000000
ERROR: Thread [1]: WAL segment "/backupwal/wal/main/000000010000000100000088" is absent
WARNING: Recovery can be done up to time 2019-05-18 14:36:30+03, xid 0 and LSN 1/2A000198
ERROR: Not enough WAL records to time 2042-04-16 12:26:00+03



Останавливаем 1с
$ sudo systemctl stop srv1cv83.service

Останавливаем postgresql
$ sudo systemctl stop postgresql.service

Удалим кластер main
$ sudo /bin/su postgres -c "rm -rf /var/lib/postgresql/10/main/*"

Восстановим кластер main
$ sudo -u postgres pg_probackup-10 restore -B /backup --instance main -i PRP6Q5 --recovery-target='latest'


INFO: Validating backup PRP6Q5
INFO: Backup PRP6Q5 data files are valid
INFO: Backup PRP6Q5 WAL segments are valid
INFO: Backup PRP6Q5 is valid.
INFO: Restore of backup PRP6Q5 completed.


Запускаем postgresql
$ sudo systemctl start postgresql.service

Запускаем 1с
$ sudo systemctl start srv1cv83.service


Для проверки стандартной wal архивации:

$ sudo mkdir -p /wal
$ sudo chown -R postgres:postgres /wal


$ sudo nano /etc/postgresql/10/main/postgresql.conf

расскоментировать:
archive_command ='test ! -f /wal/%f && cp %p /wal/%f'

Сохранить.

$ sudo systemctl restart postgresql.service

В папку /test положить файлы:
deb64_8_3_15_1565.tar.gz

# установка 1с
$ mkdir -p /tmp/1ctmp
$ cd /tmp/1ctmp
$ sudo apt install imagemagick -y
#$sudo apt install -y unixodbc libgsf-1-114 libglib2.0
$ sudo apt install libfreetype6 libgsf-1-common unixodbc glib2.0
#ubuntu
$ sudo  apt install -y xfonts-utils cabextract
$ sudo apt install ttf-mscorefonts-installer -y
$  ls /home/user/test/
$ cp /home/user/test/deb64_8_3_15_1565.tar.gz /tmp/1ctmp
$ tar xvzf deb64_8_3_15_1565.tar.gz
$ sudo dpkg -i 1c-enterprise83-common_8.3.15-1565_amd64.deb
$ sudo dpkg -i 1c-enterprise83-server_8.3.15-1565_amd64.deb
#$ sudo dpkg -i 1c-enterprise83-ws_8.3.15-1565_amd64.deb
#$ sudo dpkg -i 1c-enterprise83-crs_8.3.15-1565_amd64.deb
#$ sudo apt -f -y install
$ sudo chown -R usr1cv8:grp1cv8 /opt/1C
#$ sudo echo -e "pass\npass\n" | sudo passwd usr1cv8
$ sudo service srv1cv83 start
$ sudo service srv1cv83 status
#$ sudo usermod -aG sudo usr1cv8

$ sudo  apt install -y libc6-i386
$ mkdir /tmp/hasp
$ cd /tmp/hasp
#$ wget http://download.etersoft.ru/pub/Etersoft/HASP/last/x86_64/Ubuntu/18.04/haspd-modules_7.90-eter1ubuntu_amd64.deb
$ wget http://download.etersoft.ru/pub/Etersoft/HASP/last/x86_64/Ubuntu/18.04/haspd-modules_7.90-eter2ubuntu_amd64.deb
# $ wget http://download.etersoft.ru/pub/Etersoft/HASP/last/x86_64/Ubuntu/18.04/haspd_7.90-eter1ubuntu_amd64.deb
$ wget http://download.etersoft.ru/pub/Etersoft/HASP/last/x86_64/Ubuntu/18.04/haspd_7.90-eter2ubuntu_amd64.deb
$ sudo dpkg -i *.deb
#$ sudo apt-get install -f -y
$ sudo service haspd start
$ sudo service haspd status
$ sudo reboot

$ sudo service srv1cv83 status
$ ss -tlnp | grep :15
LISTEN     0      128          *:1560                     *:*
LISTEN     0      128          *:1540                     *:*
LISTEN     0      128          *:1541                     *:*
LISTEN     0      128         :::1560                    :::*
LISTEN     0      128         :::1540                    :::*
LISTEN     0      128         :::1541                    :::*


Не встал скриптом imagemagick?
Без строчки ниже будет ругаться при входе в 1с
$ sudo apt-get install imagemagick  -y

Для программной лицензии (прявязанной к hasp)

в /var/1C/licenses
Положить лицензию


$ sudo mv 20190207114003.lic /var/1C/licenses



Запуск службы сервера администрирования RAS

$ sudo su root -c "cat >/etc/systemd/system/srv1cv8-ras.service <<EOL
[Unit]
Description=1C:Enterprise Remote Administration Service
After=network.target remote-fs.target nss-lookup.target
Requires=srv1cv83.service

[Service]
Type=simple
ExecStart=/opt/1C/v8.3/x86_64/ras cluster --port=1545
KillSignal=SIGINT
PrivateTmp=true
Restart=on-failure
RestartSec=5
User=usr1cv8
Group=grp1cv8

[Install]
WantedBy=multi-user.target
EOL"

или можно так:

$ sudo nano /etc/systemd/system/srv1cv8-ras.service

Вставить:

[Unit]
Description=1C:Enterprise Remote Administration Service
After=network.target remote-fs.target nss-lookup.target
Requires=srv1cv83.service

[Service]
Type=simple
ExecStart=/opt/1C/v8.3/x86_64/ras cluster --port=1545
KillSignal=SIGINT
PrivateTmp=true
Restart=on-failure
RestartSec=5
User=usr1cv8
Group=grp1cv8

[Install]
WantedBy=multi-user.target

Сохранить.

$ sudo systemctl daemon-reload
$ sudo systemctl enable srv1cv8-ras.service
$ sudo systemctl start srv1cv8-ras.service
$ sudo systemctl status srv1cv8-ras.service

Управление серверами 8.3.15

Настройка технологического журнала

$ sudo mkdir -p /var/log/1c/logs/excp
$ sudo mkdir -p /var/log/1c/logs/vrs
$ sudo mkdir -p /var/log/1c/dumps
$ sudo chown -R usr1cv8:grp1cv8 /var/log/1c
$ sudo chmod g+rw /var/log/1c
$ sudo mkdir -p /opt/1C/v8.3/x86_64/conf
 

$ sudo nano /opt/1C/v8.3/x86_64/conf/logcfg.xml

<?xml version="1.0"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
   <log location="/var/log/1c/logs/excp" history="24">
      <event>
         <eq property="name" value="excp"/>
      </event>
      <property name="all"/>
   </log>
   <log location="/var/log/1c/logs/vrs" history="24">
      <event>
         <eq property="name" value="vrsrequest"/>
      </event>
      <event>
         <eq property="name" value="vrsresponse"/>
      </event>
      <property name="all"/>
   </log>
   <dump location="/var/log/1c/dumps" create="1" type="3"/>
</config>
 
Сохранить.

$ sudo chown -R usr1cv8:grp1cv8 /opt/1C

Настройка дампов для Linux 

$ sudo mkdir /dumps
$ sudo chown -R usr1cv8:grp1cv8 /dumps
$ echo 'usr1cv8 soft core unlimited' | sudo tee -a /etc/security/limits.conf
$ echo 'usr1cv8 hard core unlimited' | sudo tee -a /etc/security/limits.conf
$ echo 'kernel.core_pattern=/dumps/core.%e.%p ' | sudo tee -a /etc/sysctl.conf
$ sudo sysctl -p /etc/sysctl.conf

$ sudo su - usr1cv8
$ ulimit -a

Проверим

$ sudo su - usr1cv8
$ bash
$ ps ax | grep bash
$ kill -s SIGSEGV 17952


Ошибка сегментирования (сделан дамп памяти)

$ ls /dumps
core.bash.17952


Настройка резервного копирования

====================================================================
Настройка резервного копирования
Управление серверами 8.3.15

Перед настройкой резервного копирования
необходимо задать Имя и Пароль администратора центрального сервера


также необходимо задать Имя и Пароль администратора кластера


В скрипте backup.sh нужно указать пароль postgres

перед запуском предварительно настроить  скрипт terminate.sh

(Добавить в скрипт terminate.sh
Имя и Пароль администратора кластера) 
$ sudo nano /root/backup.sh



$ sudo nano /root/backup.sh
 

#!/bin/sh -e
# Внимание задать пароль PGPASSWORD !!!
#/backup
inst='/backup'
cd $inst
#sudo sh /root/terminate.sh
# vacuumdb
sudo systemctl stop srv1cv8-ras.service
sudo systemctl stop srv1cv83.service
DATA=`date +"%Y-%m-%d_%H-%M-%S"`
sudo su postgres -c "echo 'vacuumdb $DATA - начало' > $inst/vacuumdb.txt"
sudo su postgres -c "vacuumdb -afz >> $inst/vacuumdb.txt"
sudo systemctl start srv1cv83.service
sudo systemctl start srv1cv8-ras.service
DATA=`date +"%Y-%m-%d_%H-%M-%S"`
if [ $? -ne 0 ]
then
     sudo su postgres -c "echo 'vacuumdb $DATA - неудачное завершение' >> $inst/vacuumdb.txt"
else
     sudo su postgres -c "echo 'vacuumdb $DATA - удачное завершение' >> $inst/vacuumdb.txt"
fi
sudo su postgres -c "echo '-------------------------------------------' >> $inst/vacuumdb.txt"
sudo su postgres -c "cat vacuumdb.txt >> vacuumdb.log"
#cat vacuumdb.txt | mutt -s "vacuumdb" root
#  /backup/pg_probackup
log=$inst'/log/pg_probackup.log'
log1=$inst'/log/probackup.log'
if [ -f $log ]; then rm $log; fi
cd $inst
sudo su postgres -c "PGPASSWORD=1q2w3e4r5 pg_probackup-10 backup -B $inst \
       --instance main -U postgres -d postgres -h 127.0.0.1 -b FULL --stream --compress --expired \
       --delete-wal --log-level-file=info -j 4"
grep completed $log > /dev/null 2>&1
if [ $? -ne 0 ]
then
    msg="$inst неудачное завершение."
else
    msg="$inst удачное завершение."
fi
DATA=`date +"%Y-%m-%d %H:%M:%S"`
msg1="Размер экземпляра pg_probackup: $(du -h -s $inst/backups)"
sudo su postgres -c "echo '$DATA $msg' >> $log"
sudo su postgres -c "echo '$DATA $msg1' >> $log"
sudo su postgres -c "echo '==================================================================' >> $log"
sudo su postgres -c "cat $log >> $log1"
cat $log  | mutt -s "pg_probackup" root
#echo "$DATA $msg" >> $log1
# Сразу архивируем для rsync
COPY_DIR=$inst/copy
#COPY_DIR=/backups/copy
COPY_LOG=$inst/copy/copy.log
#COPY_LOG=/backups/copy/copy.log
#Берем последнюю копию
COPY_ID=$(ls $inst/backups/main -1 | tail -1)
#Она должна быть completed
grep "$COPY_ID completed" $log > /dev/null 2>&1
if [ $? = 0 ]
then
    DATA=`date +"%Y-%m-%d_%H-%M-%S"`
    #rm  $inst/copy/*
    sudo su postgres -c "tar -cvzf $COPY_DIR/pg_pro-$DATA.tar.gz  \
           $inst/backups/main/$COPY_ID > /dev/null 2>&1"
    if [ $? = 0 ]
    then
        msg="создан $COPY_DIR/pg_pro-$DATA.tar.gz"
    else
        msg="ошибка создания $COPY_DIR/pg_pro-$DATA.tar.gz"
    fi
    DATA=`date +"%Y-%m-%d %H:%M:%S"`
    sudo su postgres -c "echo '$DATA $msg' >> $COPY_LOG"
    echo "$DATA $msg" | mutt -s "copy pg_probackup" root
fi
BACKUP_DIR="/backup/pg_dump"
#BACKUP_DIR="/backups/pg_dump"
cd $BACKUP_DIR
echo "====================================================================" > $BACKUP_DIR/backup.log
# останавливаем сервер 1С
echo "останавливаем сервер 1С"
sudo systemctl stop srv1cv8-ras.service
sudo systemctl stop  srv1cv83.service
echo "состояние сервера 1С"  >> $BACKUP_DIR/backup.log
sudo systemctl status  srv1cv83.service | grep 'Active:' >> $BACKUP_DIR/backup.log
echo "--------------------------------------------------------------------" >> $BACKUP_DIR/backup.log
# Устанавливаем дату
DATA=`date +"%Y-%m-%d_%H-%M-%S"`
DATA_NAME=`date +"%Y-%m-%d_%H-%M-%S"`
echo "$DATA Size database file: " >> $BACKUP_DIR/backup.log
sudo du -h -s /var/lib/postgresql/10/main/base  >> $BACKUP_DIR/backup.log
echo "--------------------------------------------------------------------" >> $BACKUP_DIR/backup.log
# делаем  backup
DB_BASE=`sudo /bin/su postgres -c "/usr/bin/psql -qAt -c 'SELECT * FROM pg_database;'" | \
     cut -d"|" -f1 | /bin/grep -v template | /bin/grep -v postgres`
#DB_BASE="demo test" #конкретные базы
#DB_BASE="" #пропустить
echo $DB_BASE
for DB_NAME in $DB_BASE
 do
     DATA=`date +"%Y-%m-%d_%H-%M-%S"`
     # Записываем информацию в лог с секундами
     echo "$DATA Начало backup базы ${DB_NAME}" >> $BACKUP_DIR/backup.log
     # Бэкапим базу данных demo и сразу сжимаем
     echo "$DATA Начало backup базы ${DB_NAME}"
     sudo /bin/su postgres -c "pg_dump -Fc ${DB_NAME}"  > $BACKUP_DIR/${DB_NAME}_$DATA_NAME.dump
     DATA=`date +"%Y-%m-%d_%H-%M-%S"`
     if [ $? -ne 0 ]
     then
         echo "$DATA Ошибка завершения backup для базы ${DB_NAME}"
         echo "$DATA Ошибка завершения backup для для базы ${DB_NAME}" >> $BACKUP_DIR/backup.log
         exit
     else
          echo "$DATA Успешное завершение backup для базы ${DB_NAME}"
          echo "$DATA Успешное завершение backup для базы ${DB_NAME}" >> $BACKUP_DIR/backup.log
     fi
     echo "--------------------------------------------------------------------" >> $BACKUP_DIR/backup.log
done
# запускаем сервер 1С
echo "Запускаем сервер 1С"
sudo systemctl start  srv1cv83.service
sudo systemctl start srv1cv8-ras.service
echo "Состояние сервера 1С"  >> $BACKUP_DIR/backup.log
sudo systemctl status  srv1cv83.service | grep 'Active:' >> $BACKUP_DIR/backup.log
echo "--------------------------------------------------------------------" >> $BACKUP_DIR/backup.log
echo "Закончено"
cat $BACKUP_DIR/backup.log >> $BACKUP_DIR/backupall.log
cat $BACKUP_DIR/backup.log | mutt -s "backup" root


Сохранить.

Проверка:

$ sudo sh /root/backup.sh

Добавить в скрипт terminate.sh
Имя и Пароль администратора кластера:

$ sudo nano /root/terminate.sh
#!/bin/bash
CLUSTER_USER=admin
CLUSTER_PWD=1q2w3e4r5
if pgrep 'ras'
    then
        _cluster=$(/opt/1C/v8.3/x86_64/rac cluster list  | grep 'cluster'| awk -F' ' '{print $3}')
        echo 'кластеры: ' $_cluster
    for cluster in $_cluster
    do
        echo 'кластер: ' $cluster
        _base=$(/opt/1C/v8.3/x86_64/rac infobase --cluster=$cluster \
            --cluster-user=$CLUSTER_USER --cluster-pwd=$CLUSTER_PWD \
            summary list | grep 'infobase '| awk '{print$3}')
        _session=$(/opt/1C/v8.3/x86_64/rac session --cluster=$cluster \
            --cluster-user=$CLUSTER_USER --cluster-pwd=$CLUSTER_PWD \
            list | grep 'session '| awk '{print$3}')
        echo 'базы: ' $_base
        echo 'сессии:  ' $_session
        for session in $_session
        do
             /opt/1C/v8.3/x86_64/rac session --cluster=$cluster --cluster-user=$CLUSTER_USER \
                               --cluster-pwd=$CLUSTER_PWD terminate --session=$session
        done
        _session=$(/opt/1C/v8.3/x86_64/rac session --cluster=$cluster \
            --cluster-user=$CLUSTER_USER --cluster-pwd=$CLUSTER_PWD \
            list | grep 'session '| awk '{print$3}')
        echo 'сессии:  ' $_session
    done
else
    echo 'не запущен ras'
fi


Сохранить.
Проверка

$ sudo sh /root/terminate.sh

$ sudo crontab -e
Добавить в конец:
MAILTO=""
@reboot sh /root/terminate.sh
#*/5 * * * * sh /root/sysinfo.sh
00 5 * * * sh /root/backup.sh

Сохранить.

Восстановление базы из dump

$ sudo systemctl stop  srv1cv83.service

Посмотреть список баз:
$ sudo su postgres -c "psql -l" 

Удаление базы demo
$ sudo su postgres -c "dropdb demo"


Создадим тестовую базу:
$ sudo /bin/su postgres -c "createdb --username postgres -T template0 demo"

$ ls
buh_2019-09-05_05-35-56.dump

Восстановление базы  buh_2019-09-05_05-35-56.dump
$ sudo su postgres -c "pg_restore -d demo /home/user/buh_2019-09-05_05-35-56.dump" 

$ sudo systemctl start  srv1cv83.service

вторник, 30 июля 2019 г.

Тестирование PostgreSQL, версия 10.8-13.1C

В данной статье опишем установку сервера СУБД PostgreSQL версия 10.5-24.1C на ubuntu server 16.04.6.
Драйверы hasp берем etersoft
1. Установка ubuntu 16.04.6
Устанавливаем ubuntu 16.04.6 без swap файла, т.е. размечаем вручную весь диск ext4 root.
RAM (16 GB) монтируем диск для backup /backup


Настройки ubuntu пользователь (привязка в скриптах) user пароль 12345, имя компьютера u1604, позже мы его сменим скриптом, как и ip адрес.

После установки, Ctrl +Alt + T (окно терминала)
$ sudo apt update -y
$ sudo apt upgrade -y
$ sudo apt autoremove -y
$ sudo apt install mc ssh samba -y

Возможно sudo apt upgrade -y не пройдет из за блокировки, тогда sudo reboot и повторите с начала.


2. Настройка сети

Тестовый сервер будет использовать dhcp

Смотрим:
$ cat  /etc/hosts
127.0.0.1       localhost
127.0.1.1       u1604



$ sudo nano /etc/hosts

Меняем:

127.0.0.1       localhost test2

Сохранить.

$ cat /proc/cpuinfo | grep MHz
cpu MHz         : 800.111
cpu MHz         : 800.028
cpu MHz         : 800.377
cpu MHz         : 800.190


3. Тюнинг остального:

Сделаем еще один скрипт для настройки остального:

$ nano tuning.sh


#!/bin/bash
# отключим ipv6
sudo /bin/su -c "echo 'net.ipv6.conf.all.disable_ipv6 = 1' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'net.ipv6.conf.default.disable_ipv6 = 1' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'net.ipv6.conf.lo.disable_ipv6 = 1' >> /etc/sysctl.conf"
#sudo /bin/su -c "echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf"
#тюнинг postgresql
#add a swap file to an Ubuntu 16.04
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo cp /etc/fstab /etc/fstab.bak
sudo echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
sudo /bin/su -c "echo 'vm.swappiness=1' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'kernel.sched_migration_cost_ns = 5000000' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'kernel.sched_autogroup_enabled = 0' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'vm.dirty_background_bytes = 67108864' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'vm.dirty_bytes = 536870912' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'vm.zone_reclaim_mode = 0' >> /etc/sysctl.conf"
sudo sysctl -p
# перезагрузим сеть
#sudo systemctl restart networking.service
#sudo systemctl start networking.service
#sudo systemctl enable networking.service
# Настройка sudo journalctl -b sudo journalctl -b -1 sudo journalctl --list-boots
sudo sed -i 's/#Storage=auto/Storage=persistent/' /etc/systemd/journald.conf
# Отключение уведомлений службы Apport (/var/crash)
sudo sed -i 's/enabled=1/enabled=0/' /etc/default/apport
# Отключим службу ondemand# (для разгона cpu)
# cat /proc/cpuinfo | grep MHz
# systemctl status ondemand
sudo systemctl stop ondemand
sudo systemctl disable ondemand
# shutdown -r now

Сохраним файл tuning.sh

------------------------------------------
Сделаем исполняем
$ chmod +x tuning.sh
$  sudo ./tuning.sh

или
$  sudo sh tuning.sh
------------------------------------------

Перезагрузимся

$ sudo reboot

После перезагрузки по сети можно подключиться MobaXterm

$ cat /proc/cpuinfo | grep MHz 
cat /proc/cpuinfo | grep MHz
cpu MHz         : 4000.489
cpu MHz         : 4000.162
cpu MHz         : 4000.980
cpu MHz         : 4002.072

$ free
              total        used        free      shared  buff/cache   available
Память:    16284616       95512    15944100        1312      245004    15870784
Подкачка:     1048572           0     1048572

Установка СУБД PostgreSQL версия 10.8-13.1C

$ mkdir /home/user/test
В папку /test положить файлы:

postgresql_10.8_13.1C_amd64_deb.tar.bz2
postgresql_10.8_13.1C_amd64_addon_deb.tar.bz2

$ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main" >> /etc/apt/sources.list.d/postgresql.list'
$ sudo apt update -y
$ sudo apt-get install postgresql-common libtcl8.6 -y
$ dpkg -l | grep postgres | awk -F' ' '{print $2}' | sudo xargs apt-mark hold
#pgdg-keyring помечен как зафиксированный.
#postgresql-client-common помечен как зафиксированный.
#postgresql-common помечен как зафиксированный.
$ dpkg -l | grep libtcl8.6 | awk -F' ' '{print $2}' | sudo xargs apt-mark hold
#libtcl8.6 помечен как зафиксированный.
$ mkdir -p /tmp/post
$ cp /home/user/test/postgresql_10.8_13.1C_amd64_deb.tar.bz2 /tmp/post/
$ cp /home/user/test/postgresql_10.8_13.1C_amd64_addon_deb.tar.bz2 /tmp/post/
$ cd /tmp/post
$ tar -xvf postgresql_10.8_13.1C_amd64_deb.tar.bz2
$ ls 
$ cd postgresql-10.8-13.1C_amd64_deb
$ ls
# список файлов:
#libpq5_10.5-24.1C_amd64.deb  postgresql-10_10.5-24.1C_amd64.deb  postgresql-client-10_10.5-24.1C_amd64.deb
$ sudo dpkg -i *.deb
# ниже можно не ставить:
$ cd /tmp/post/
$ tar -xvf postgresql_10.8_13.1C_amd64_addon_deb.tar.bz2
$ ls
$ cd postgresql-10.8-13.1C_amd64_addon_deb
$ sudo dpkg -i *.deb
# конец не ставить
$ dpkg -l | grep 10.8-13.1C | awk -F' ' '{print $2}' | sudo xargs apt-mark hold
#libecpg-compat3 помечен как зафиксированный.
#libecpg-dev помечен как зафиксированный.
#libecpg6 помечен как зафиксированный.
#libpgtypes3 помечен как зафиксированный.
#libpq-dev помечен как зафиксированный.
#libpq5 помечен как зафиксированный.
#postgresql-10 помечен как зафиксированный.
#postgresql-10-dbg помечен как зафиксированный.
#postgresql-client-10 помечен как зафиксированный.
#postgresql-doc-10 помечен как зафиксированный.
#postgresql-plperl-10 помечен как зафиксированный.
#postgresql-plpython-10 помечен как зафиксированный.
#postgresql-plpython3-10 помечен как зафиксированный.
#postgresql-pltcl-10 помечен как зафиксированный.
#postgresql-server-dev-10 помечен как зафиксированный.

$ pg_lsclusters
Ver Cluster Port Status Owner    Data directory              Log file
10  main    5432 online postgres /var/lib/postgresql/10/main pg_log/postgresql-%a.log


$ sudo pg_dropcluster --stop 10 main

$ sudo pg_createcluster --locale ru_RU.UTF-8 10 main --  --data-checksums


$ sudo pg_ctlcluster 10 main start

$ pg_lsclusters
Ver Cluster Port Status Owner    Data directory              Log file
10  main    5432 online postgres /var/lib/postgresql/10/main pg_log/postgresql-%a.log
 
$ sudo -u postgres psql -U postgres -c "alter user postgres with password 'pass';"
$ sudo cp /etc/postgresql/10/main/postgresql.conf /etc/postgresql/10/main/postgresql.conf.bak

#Делаем проверки
$ sudo systemctl status postgresql.service
$ ss -tunpl | grep 5432
tcp    LISTEN     0      128       *:5432                  *:*
tcp    LISTEN     0      128      :::5432                 :::*
$ ps aux | grep postgres | grep -- -D
postgres  4914  0.0  0.1 320972 28864 ?        S    08:37   0:00 /usr/lib/postgresql/10/bin/postgres -D /var/lib/postgresql/10/main -c config_file=/etc/postgresql/10/main/postgresql.conf

-------------------------------------------------------------------------------------------------------

Настройка postgresql.conf для 1С Total Memory (RAM): 16 GB

$ sudo nano /etc/postgresql/10/main/postgresql.conf
Добавить в конец:

# DB Version: 10
# OS Type: linux
# DB Type: oltp
# Total Memory (RAM): 16 GB
# Data Storage: ssd

max_connections = 1000
shared_buffers = 4GB
temp_buffers = 256MB
work_mem = 64MB
effective_cache_size = 8GB # 4GB for 1c
maintenance_work_mem = 1GB
wal_buffers = 16MB
min_wal_size = 2GB
max_wal_size = 4GB

default_statistics_target = 100
effective_io_concurrency = 2
random_page_cost = 1.1
autovacuum = on
autovacuum_max_workers = 4
autovacuum_naptime = 20s
bgwriter_delay = 20ms
bgwriter_lru_multiplier = 4.0
bgwriter_lru_maxpages = 400
synchronous_commit = off
checkpoint_completion_target = 0.9
ssl = off
fsync = on
commit_delay = 1000
commit_siblings = 5
row_security = off
max_files_per_process = 1000
standard_conforming_strings = off
escape_string_warning = off
max_locks_per_transaction = 256
#log_min_duration_statement = 0
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,client=%h '
log_checkpoints = on
log_connections = on
log_disconnections = on
log_lock_waits = on
log_temp_files = 0
#log_autovacuum_min_duration = 0
lc_messages='C'
#log_duration = on
#log_statement = all
log_destination = stderr
plantuner.fix_empty_table = 'on'
online_analyze.table_type = 'temporary'
online_analyze.verbose = 'off'

Сохранить.

$ sudo systemctl restart postgresql.service
 -------------------------------------------------------------------------------------------------------

Установка pg_probackup 

pg_probackup описание

$ sudo su -c "echo 'deb [arch=amd64] http://repo.postgrespro.ru/pg_probackup/deb/ $(lsb_release -cs) main-$(lsb_release -cs)' > /etc/apt/sources.list.d/pg_probackup.list" 
$ sudo su -c "wget -O - http://repo.postgrespro.ru/pg_probackup/keys/GPG-KEY-PG_PROBACKUP | apt-key add -" 
$ sudo apt-get update 
$ sudo apt-get install pg-probackup-10
$ dpkg -l | grep pg-probackup-10 | awk -F' ' '{print $2}' | sudo xargs apt-mark hold
#pg-probackup-10 помечен как зафиксированный.

Инициализация каталога резервных копий 1 экземпляр на примонтированом HDD


Каталог резервных копий /backup/pg_probackup расположено на hdd диске, в нем будем ежедневно сохранять backup за 30 дней без непрерывного архивирования.
Если нет дополнительного диска, выполняем закомментированые команды
$ sudo pg_probackup-10 init -B /backup
$ sudo mkdir /backup/copy
$ sudo mkdir /backup/log
$ sudo mkdir /backup/pg_dump
$ sudo chown -R postgres:postgres /backup/
#$ sudo chmod -R 777 /backup/pg_probackup

Определение копируемого экземпляра 
$ sudo -u postgres pg_probackup-10 add-instance -B /backup -D /var/lib/postgresql/10/main --instance main


$ sudo nano /etc/postgresql/10/main/postgresql.conf

Добавить:

max_wal_senders = 10
wal_level = replica
unix_socket_directories='/var/run/postgresql'
# Для настройки архивного резервного копирования разкомментировать:
archive_mode = on
#archive_command ='test ! -f /wal/%f && cp %p /wal/%f' 
archive_command = '/usr/bin/pg_probackup-10 archive-push -B /backup --compress --instance main --wal-file-path %p --wal-file-name %f'

Сохранить.

$ sudo systemctl restart postgresql.service

Настройка политики сохранения 5 резервных копий

$ sudo -u postgres nano /backup/backups/main/pg_probackup.conf

Добавить:

retention-redundancy=5

Сохранить


Создание полной автономной резервной копии: 

$ sudo -u postgres pg_probackup-10 backup -B /backup --instance main -b FULL --stream --compress --delete-wal --expired


Просмотр:

$ sudo -u postgres pg_probackup-10 show -B /backup


Проверка backup:

Проверка файлов:
$ sudo -u postgres pg_probackup-10 checkdb -B /backup --instance main
INFO: Start checking data files
INFO: Data files are valid

Проверка backup: 
$ sudo -u postgres pg_probackup-10 validate -B /backup
INFO: Validate backups of the instance 'main'
INFO: Validating backup PUVU29
INFO: Backup PUVU29 data files are valid
INFO: Backup PUVU29 WAL segments are valid
INFO: Validating backup PUVTUX
INFO: Backup PUVTUX data files are valid
INFO: Backup PUVTUX WAL segments are valid
INFO: All backups are valid

------------------------------------------------------------------------------------------------------- 

Пример восстановления из полной автономной резервной копии (замена кластера на резервную копию)


Сделали копию:
$ sudo -u postgres pg_probackup-10 backup -B /backup --instance main -b FULL --stream --compress --expired

Перед восстановлением

Просмотр:

$ sudo -u postgres pg_probackup-10 show -B

Проверка backup:
$ sudo -u postgres pg_probackup-10 validate -B /backup

INFO: Validate backups of the instance 'main'
INFO: Validating backup PRP29I
INFO: Backup PRP29I data files are valid
INFO: Backup PRP29I WAL segments are valid

Можно восстанавливать.

Останавливаем 1с
$ sudo systemctl stop srv1cv83.service

Останавливаем postgresql
$ sudo systemctl stop postgresql.service

Удалим кластер main
$ sudo /bin/su postgres -c "rm -rf /var/lib/postgresql/10/main/*"

Восстановим кластер main
$ sudo -u postgres pg_probackup-10 restore -B /backup --instance main -i PRP29I
INFO: Validating backup PRP29I
INFO: Backup PRP29I data files are valid
INFO: Backup PRP29I WAL segments are valid
INFO: Backup PRP29I is valid.
INFO: Restore of backup PRP29I completed.


Запускаем postgresql
$ sudo systemctl start postgresql.service

Запускаем 1с
$ sudo systemctl start srv1cv83.service

------------------------------------------------------------------------------------------------------- 

Пример восстановления из полной автономной резервной копии c непрерывным архивированием (замена кластера на резервную копию)


$ sudo -u postgres pg_probackup-10 backup -B /backup --instance main -b FULL --stream --compress --delete-wal --expired


Просмотр:

$ sudo -u postgres pg_probackup-10 show -B /backup


Проверка backup:
$ sudo -u postgres pg_probackup-10 validate -B /backup

INFO: Validate backups of the instance 'main'
INFO: Validating backup PRP6Q5
INFO: Backup PRP6Q5 data files are valid
INFO: Backup PRP6Q5 WAL segments are valid
 Можно восстанавливать, но проверим непрерывность архивирования:


Войти в 1с создать документ, провести, выйти из 1с.


$ sudo -u postgres pg_probackup-10 validate -B /backup   --instance main -i PRP6Q5 --time='2042-04-16 12:26:00'
INFO: Validating backup PRP6Q5
INFO: Backup PRP6Q5 data files are valid
WARNING: Thread [1]: Could not read WAL record at 1/88000000
ERROR: Thread [1]: WAL segment "/backupwal/wal/main/000000010000000100000088" is absent
WARNING: Recovery can be done up to time 2019-05-18 14:36:30+03, xid 0 and LSN 1/2A000198
ERROR: Not enough WAL records to time 2042-04-16 12:26:00+03



Останавливаем 1с
$ sudo systemctl stop srv1cv83.service

Останавливаем postgresql
$ sudo systemctl stop postgresql.service

Удалим кластер main
$ sudo /bin/su postgres -c "rm -rf /var/lib/postgresql/10/main/*"

Восстановим кластер main
$ sudo -u postgres pg_probackup-10 restore -B /backup --instance main -i PRP6Q5 --recovery-target='latest'


INFO: Validating backup PRP6Q5
INFO: Backup PRP6Q5 data files are valid
INFO: Backup PRP6Q5 WAL segments are valid
INFO: Backup PRP6Q5 is valid.
INFO: Restore of backup PRP6Q5 completed.


Запускаем postgresql
$ sudo systemctl start postgresql.service

Запускаем 1с
$ sudo systemctl start srv1cv83.service


Для проверки стандартной wal архивации:

$ sudo mkdir -p /wal
$ sudo chown -R postgres:postgres /wal


$ sudo nano /etc/postgresql/10/main/postgresql.conf

расскоментировать:
archive_command ='test ! -f /wal/%f && cp %p /wal/%f'

Сохранить.

$ sudo systemctl restart postgresql.service

В папку /test положить файлы:
deb64_8_3_15_1565.tar.gz

# установка 1с
$ mkdir -p /tmp/1ctmp
$ cd /tmp/1ctmp
$ sudo apt install imagemagick -y
#$sudo apt install -y unixodbc libgsf-1-114 libglib2.0
$ sudo apt install libfreetype6 libgsf-1-common unixodbc glib2.0
#ubuntu
$ sudo  apt install -y xfonts-utils cabextract
$ sudo apt install ttf-mscorefonts-installer -y
$  ls /home/user/test/
$ cp /home/user/test/deb64_8_3_15_1565.tar.gz /tmp/1ctmp
$ tar xvzf deb64_8_3_15_1565.tar.gz
$ sudo dpkg -i 1c-enterprise83-common_8.3.15-1565_amd64.deb
$ sudo dpkg -i 1c-enterprise83-server_8.3.15-1565_amd64.deb
#$ sudo dpkg -i 1c-enterprise83-ws_8.3.15-1565_amd64.deb
#$ sudo dpkg -i 1c-enterprise83-crs_8.3.15-1565_amd64.deb
#$ sudo apt -f -y install
$ sudo chown -R usr1cv8:grp1cv8 /opt/1C
$ sudo echo -e "pass\npass\n" | sudo passwd usr1cv8
$ sudo service srv1cv83 start
$ sudo service srv1cv83 status
#$ sudo usermod -aG sudo usr1cv8

$ sudo  apt install -y libc6-i386
$ mkdir /tmp/hasp
$ cd /tmp/hasp
$ wget http://download.etersoft.ru/pub/Etersoft/HASP/last/x86_64/Ubuntu/16.04/haspd-modules_7.90-eter2ubuntu_amd64.deb
$ wget http://download.etersoft.ru/pub/Etersoft/HASP/last/x86_64/Ubuntu/16.04/haspd_7.90-eter2ubuntu_amd64.deb

$ sudo dpkg -i *.deb
#$ sudo apt-get install -f -y
$ sudo service haspd start
$ sudo service haspd status
$ sudo reboot

$ sudo service srv1cv83 status
$ ss -tlnp | grep :15
LISTEN     0      128          *:1560                     *:*
LISTEN     0      128          *:1540                     *:*
LISTEN     0      128          *:1541                     *:*
LISTEN     0      128         :::1560                    :::*
LISTEN     0      128         :::1540                    :::*
LISTEN     0      128         :::1541                    :::*


Не встал скриптом imagemagick?
Без строчки ниже будет ругаться при входе в 1с
$ sudo apt-get install imagemagick  -y

Для программной лицензии (прявязанной к hasp)

в /var/1C/licenses
Положить лицензию


$ sudo mv 20190207114003.lic /var/1C/licenses


Тестирование PostgrSQL 10.5.24-1c vs 10.8.13-1c