ProBackup: быстро, надежно, инкрементально
EgorRogov_pg_probackup_script.txt
Резервное копирование PostgreSQL с помощью pg_probackup | Григорий Смолкин
pg_probackup
PGConf.Сибирь 2018 «PG_PROBACKUP. Резервное копирование и верификация PostgreSQL» Григорий Смолкин
Backup and recovery manager for PostgreSQL
pg_probackup
ubuntu-18.04.3-server-amd64.iso
Устанавливаем 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
$ sudo pg_dropcluster --stop 9.6 main
$ sudo pg_ctlcluster 9.6 main start
#$ sudo systemctl start postgresql.service
$ sudo -u postgres pg_probackup-9.6 backup -B /backup --instance main -b FULL --stream --compress --delete-wal --expired
Сделаем несколько инкрементальных копий
$ sudo -u postgres pg_probackup-9.6 backup -B /backup --instance main -b DELTA --stream --compress --delete-wal --expired
$ sudo -u postgres pg_probackup-9.6 backup -B /backup --instance main -b DELTA --stream --compress --delete-wal --expired
$ sudo -u postgres pg_probackup-9.6 backup -B /backup --instance main -b DELTA --stream --compress --delete-wal --expired
$ sudo -u postgres pg_probackup-9.6 show -B /backup
Объединим последнюю икрементальную копию PYLG52 её родительской полной копией (PYLFNY), вместе со всеми инкрементальными копиями между ними.
$ sudo -u postgres pg_probackup-9.6 merge -B /backup --instance main -i PYLG52
-------------------------------------------------------------------------------------------------------
Ниже не адаптировалось под 9.6
Сделали копию:
$ sudo -u postgres pg_probackup-9.6 backup -B /backup --instance main -b FULL --stream --compress --delete-wal --expired
Перед восстановлением
Просмотр:
$ sudo -u postgres pg_probackup-9.6 show -B
Проверка backup:
$ sudo -u postgres pg_probackup-9.6 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/9.6/main/*"
Восстановим кластер main
$ sudo -u postgres pg_probackup-9.6 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
$ sudo -u postgres pg_probackup-9.6 backup -B /backup --instance main -b FULL --stream --compress --delete-wal --expired
$ sudo -u postgres pg_probackup-9.6 show -B /backup
Проверка backup:
$ sudo -u postgres pg_probackup-9.6 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-9.6 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/9.6/main/*"
Чтобы безопасно запустить восстановленный сервер, надо отключить непрерывное архивирование - иначе новые файлы WAL попадут в тот же каталог.
Восстановим кластер main
$ sudo -u postgres pg_probackup-9.6 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
После проверки восстановления нужно включить непрерывное архивирование.
-------------------------------------------------------------------------------------------------------
Создание дополнительного кластера
#$ sudo pg_dropcluster --stop 9.6 beta
$ sudo pg_createcluster --locale ru_RU.UTF-8 9.6 beta -- --data-checksums
[sudo] пароль для user:
Creating new cluster 9.6/beta ...
config /etc/postgresql/9.6/beta
data /var/lib/postgresql/9.6/beta
locale ru_RU.UTF-8
socket /var/run/postgresql
port 5433
#$ sudo pg_ctlcluster 9.6 beta start
#$ sudo pg_ctlcluster 9.6 beta stop
#$ sudo sudo systemctl status postgresql@9.6-beta.service
Удалим данные кластера beta
$ sudo /bin/su postgres -c "rm -rf /var/lib/postgresql/9.6/beta/*"
$ time sudo -u postgres pg_probackup-9.6 backup -B /backup --instance main -b FULL --stream --compress --delete-wal --expired -j4
.....
INFO: Backup start, pg_probackup version: 2.1.5, instance: main, backup ID: PYRFBC, backup mode: FULL, wal-method: STREAM, remote: false, replica: false, compress-algorithm: zlib, compress-level: 1
......
INFO: Validating backup PYRFBC
.....
Восстановление конкретного экземпляра:
$ sudo -u postgres pg_probackup-9.6 restore -B /backup --instance main -D /var/lib/postgresql/9.6/beta -i PYRFBC
или восстановление последней копии
$ sudo -u postgres pg_probackup-9.6 restore -B /backup --instance main -D /var/lib/postgresql/9.6/beta
=====================================================================
Определение копируемого экземпляра если будем сохранять кластер beta, вообщем то нам это не надо.
$ sudo pg_ctlcluster 9.6 beta start
Подключение 1с ко второму кластеру PostgreSQL
-------------------------------------------------------------------------------------------------------
Для проверки стандартной wal архивации:
$ sudo mkdir -p /wal
$ sudo chown -R postgres:postgres /wal
$ sudo nano /etc/postgresql/9.6/main/postgresql.conf
расскоментировать:
archive_command ='test ! -f /wal/%f && cp %p /wal/%f'
Сохранить.
$ sudo systemctl restart postgresql.service
В папку /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
$ sudo su postgres -c "psql -c \"select pg_size_pretty( pg_database_size('demo'))\""
pg_size_pretty
----------------
9193 MB
(1 строка)
$ time sudo -u postgres pg_probackup-9.6 backup -B /backup --instance main -b FULL --stream --compress --delete-wal --expired
real 2m37,066s
user 1m40,382s
sys 0m34,089s
$ time sudo -u postgres pg_probackup-9.6 backup -B /backup --instance main -b FULL --stream --compress --delete-wal --expired -j 2
real 1m44,581s
user 1m43,316s
sys 0m57,534s
$ time sudo -u postgres pg_probackup-9.6 backup -B /backup --instance main -b FULL --stream --compress --delete-wal --expired -j4
real 1m8,021s
user 1m50,815s
sys 1m12,284s
$ time sudo -u postgres pg_probackup-9.6 backup -B /backup --instance main -b DELTA --stream --compress --delete-wal --expired -j4
real 0m10,455s
user 0m2,287s
sys 0m2,436s
$ time sudo su postgres -c "pg_dump -Fc demo" > ~/demo.dump
Создадим несколько баз:
$ sudo su postgres -c "createdb --username postgres -T template0 demo1"
....
$ sudo su postgres -c "createdb --username postgres -T template0 demo10"
Восстановим указав резервную копию
$ sudo su postgres -c "pg_restore -d demo1 /home/user/demo.dump"
.....
$ sudo su postgres -c "pg_restore -d demo10 /home/user/demo.dump"
$ sudo su postgres -c "psql -c \"select sum(pg_catalog.pg_database_size(d.datname)) from pg_catalog.pg_database d;\""
sum
--------------
103128915240
(1 строка)
$ time sudo -u postgres pg_probackup-9.6 backup -B /backup --instance main -b FULL --stream --compress --delete-wal --expired -j4
real 10m58,273s
user 19m34,595s
sys 11m39,389s
$ time sudo -u postgres pg_probackup-9.6 backup -B /backup --instance main -b DELTA --stream --compress --delete-wal --expired -j4
real 4m34,368s
user 0m32,296s
sys 0m52,805s
$ sudo -u postgres pg_probackup-9.6 show -B /backup
$ time sudo -u postgres pg_probackup-9.6 merge -B /backup --instance main -i PYNHKF -j 4
$ time sudo su postgres -c "
real 11m7,245s
user 1m9,058s
sys 2m0,203s
EgorRogov_pg_probackup_script.txt
Резервное копирование PostgreSQL с помощью pg_probackup | Григорий Смолкин
pg_probackup
PGConf.Сибирь 2018 «PG_PROBACKUP. Резервное копирование и верификация PostgreSQL» Григорий Смолкин
Backup and recovery manager for PostgreSQL
pg_probackup
ubuntu-18.04.3-server-amd64.iso
В данной статье опишем установку сервера СУБД
PostgreSQL 9.6.15 1C от PostgresPRO на 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
$ sudo apt-get update -y
$ sudo apt-get install -y wget gnupg2
$ wget -O - http://1c.postgrespro.ru/keys/GPG-KEY-POSTGRESPRO-1C | sudo apt-key add -
$ sudo su -c "echo deb http://1c.postgrespro.ru/archive/2019_08_15/deb bionic main > /etc/apt/sources.list.d/postgrespro-1c.list"
$ sudo apt-get update -y
$ if dpkg -s libpq5 2>/dev/null; then sudo apt-get remove -y libpq5; fi
$ sudo apt-get install -y wget gnupg2
$ wget -O - http://1c.postgrespro.ru/keys/GPG-KEY-POSTGRESPRO-1C | sudo apt-key add -
$ sudo su -c "echo deb http://1c.postgrespro.ru/archive/2019_08_15/deb bionic main > /etc/apt/sources.list.d/postgrespro-1c.list"
$ sudo apt-get update -y
$ if dpkg -s libpq5 2>/dev/null; then sudo apt-get remove -y libpq5; fi
$ wget http://1c.postgrespro.ru/archive/2019_08_15/deb/pool/main/p/postgresql-pro-1c-9.6/libpq5_9.6.15-1.1C.bionic_amd64.deb
$ sudo dpkg -i libpq5_9.6.15-1.1C.bionic_amd64.deb
$ sudo apt-get install -y postgresql-pro-1c-9.6
$ sudo dpkg -i libpq5_9.6.15-1.1C.bionic_amd64.deb
$ sudo apt-get install -y postgresql-pro-1c-9.6
$ sudo systemctl status postgresql.service
$ sudo su postgres -c "psql -c 'show data_checksums;'"
data_checksums
----------------
off
(1 строка)
----------------
off
(1 строка)
$ sudo pg_lsclusters
Ver Cluster Port Status Owner Data directory Log file
9.6 main 5432 online postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log
Внимание ниже настройки не обратимы!
Будет снесен кластер postgresql /var/lib/postgresql/9.6/main
и его настройки /etc/postgresql/9.6/main
9.6 main 5432 online postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log
Внимание ниже настройки не обратимы!
Будет снесен кластер postgresql /var/lib/postgresql/9.6/main
и его настройки /etc/postgresql/9.6/main
$ sudo pg_dropcluster --stop 9.6 main
$ sudo pg_createcluster --locale ru_RU.UTF-8 9.6 main -- --data-checksums
Creating new cluster 9.6/main ...
config /etc/postgresql/9.6/main
data /var/lib/postgresql/9.6/main
locale ru_RU.UTF-8
socket /var/run/postgresql
port 5432
config /etc/postgresql/9.6/main
data /var/lib/postgresql/9.6/main
locale ru_RU.UTF-8
socket /var/run/postgresql
port 5432
$ sudo pg_ctlcluster 9.6 main start
#$ sudo systemctl start postgresql.service
$ sudo su postgres -c "psql -c 'show data_checksums;'"
data_checksums
----------------
on
(1 строка)
#Делаем проверки
$ 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 4123 0.0 0.1 315200 28236 ? S 15:12 0:00 /usr/lib/postgresql/9.6/bin/postgres -D /var/lib/postgresql/9.6/main -c config_file=/etc/postgresql/9.6/main/postgresql.conf
$ sudo pg_lsclusters
$ sudo -u postgres psql -U postgres -c "alter user postgres with password 'pass';"
$ sudo cp /etc/postgresql/9.6/main/postgresql.conf /etc/postgresql/9.6/main/postgresql.conf.bak
-----------------------------------------------------------------
Добавить в конец:
# 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'
-----------------------------------------------------------------
Установка 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
data_checksums
----------------
on
(1 строка)
#Делаем проверки
$ 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 4123 0.0 0.1 315200 28236 ? S 15:12 0:00 /usr/lib/postgresql/9.6/bin/postgres -D /var/lib/postgresql/9.6/main -c config_file=/etc/postgresql/9.6/main/postgresql.conf
$ sudo pg_lsclusters
$ sudo -u postgres psql -U postgres -c "alter user postgres with password 'pass';"
$ sudo cp /etc/postgresql/9.6/main/postgresql.conf /etc/postgresql/9.6/main/postgresql.conf.bak
-----------------------------------------------------------------
Настройка postgresql.conf для 1С Total Memory (RAM): 16 GB
$ sudo nano /etc/postgresql/9.6/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'
-----------------------------------------------------------------
Установка 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-9.6
$ dpkg -l | grep pg-probackup-9.6 | awk -F' ' '{print $2}' | sudo xargs apt-mark hold
#pg-probackup-9.6 помечен как зафиксированный.
$ sudo -u postgres pg_probackup-9.6 version
Каталог резервных копий /backup/pg_probackup расположено на hdd диске, в нем будем ежедневно сохранять backup за 30 дней без непрерывного архивирования.
Если нет дополнительного диска, выполняем закомментированые команды
$ sudo pg_probackup-9.6 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
# /backups примонтированный диск для архивов
#$ sudo mkdir /backups/copy
#$ sudo mkdir /backups/pg_dump
#$ sudo chown -R postgres:postgres /backups/
Определение копируемого экземпляра
$ sudo -u postgres pg_probackup-9.6 add-instance -B /backup -D /var/lib/postgresql/9.6/main --instance main
$ sudo nano /etc/postgresql/9.6/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-9.6 archive-push -B /backup --compress --instance main --wal-file-path %p --wal-file-name %f'
Сохранить.
$ sudo nano /etc/postgresql/9.6/main/pg_hba.conf
Раскоментировать:
local replication postgres peer
Сохранить.
$ sudo systemctl restart postgresql.service
Добавить:
retention-redundancy=5
Сохранить
$ dpkg -l | grep pg-probackup-9.6 | awk -F' ' '{print $2}' | sudo xargs apt-mark hold
#pg-probackup-9.6 помечен как зафиксированный.
$ sudo -u postgres pg_probackup-9.6 version
Инициализация каталога резервных копий 1 экземпляр на примонтированом HDD
Каталог резервных копий /backup/pg_probackup расположено на hdd диске, в нем будем ежедневно сохранять backup за 30 дней без непрерывного архивирования.
Если нет дополнительного диска, выполняем закомментированые команды
$ sudo pg_probackup-9.6 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
# /backups примонтированный диск для архивов
#$ sudo mkdir /backups/copy
#$ sudo mkdir /backups/pg_dump
#$ sudo chown -R postgres:postgres /backups/
Определение копируемого экземпляра
$ sudo -u postgres pg_probackup-9.6 add-instance -B /backup -D /var/lib/postgresql/9.6/main --instance main
$ sudo nano /etc/postgresql/9.6/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-9.6 archive-push -B /backup --compress --instance main --wal-file-path %p --wal-file-name %f'
Сохранить.
$ sudo nano /etc/postgresql/9.6/main/pg_hba.conf
Раскоментировать:
local replication postgres peer
Сохранить.
$ sudo systemctl restart postgresql.service
Настройка политики сохранения 5 резервных копий
$ sudo -u postgres nano /backup/backups/main/pg_probackup.confДобавить:
retention-redundancy=5
Сохранить
Создание полной автономной резервной копии:
$ sudo -u postgres pg_probackup-9.6 backup -B /backup --instance main -b FULL --stream --compress --delete-wal --expired
Сделаем несколько инкрементальных копий
$ sudo -u postgres pg_probackup-9.6 backup -B /backup --instance main -b DELTA --stream --compress --delete-wal --expired
$ sudo -u postgres pg_probackup-9.6 backup -B /backup --instance main -b DELTA --stream --compress --delete-wal --expired
$ sudo -u postgres pg_probackup-9.6 backup -B /backup --instance main -b DELTA --stream --compress --delete-wal --expired
Просмотр: $ sudo -u postgres pg_probackup-9.6 show -B /backup
Объединим последнюю икрементальную копию PYLG52 её родительской полной копией (PYLFNY), вместе со всеми инкрементальными копиями между ними.
$ sudo -u postgres pg_probackup-9.6 merge -B /backup --instance main -i PYLG52
Проверяет правильность кластера базы данных PostgreSQL, обнаруживая физическое и логическое повреждение.
Проверяет все файлы данных, расположенные в заданном каталоге данных, проводя проверку контрольных сумм на уровне блоков и проверку корректности заголовков страниц. При запуске с ключом
$ sudo -u postgres pg_probackup-9.6 checkdb -B /backup --instance main
INFO: Start checking data files
INFO: Data files are valid
Проверка backup:
Проверяет наличие и целостность всех файлов, необходимых для восстановления кластера.
$ sudo -u postgres pg_probackup-9.6 validate -B /backup
Проверяет все файлы данных, расположенные в заданном каталоге данных, проводя проверку контрольных сумм на уровне блоков и проверку корректности заголовков страниц. При запуске с ключом
--amcheck
эта команда также выполняет логическую проверку всех индексов в указанном экземпляре Postgres Pro, используя расширение amcheck.$ sudo -u postgres pg_probackup-9.6 checkdb -B /backup --instance main
INFO: Start checking data files
INFO: Data files are valid
Проверка backup:
Проверяет наличие и целостность всех файлов, необходимых для восстановления кластера.
$ sudo -u postgres pg_probackup-9.6 validate -B /backup
-------------------------------------------------------------------------------------------------------
Ниже не адаптировалось под 9.6
Пример восстановления из полной автономной резервной копии (замена кластера на резервную копию)
Сделали копию:
$ sudo -u postgres pg_probackup-9.6 backup -B /backup --instance main -b FULL --stream --compress --delete-wal --expired
Перед восстановлением
Просмотр:
$ sudo -u postgres pg_probackup-9.6 show -B
Проверка backup:
$ sudo -u postgres pg_probackup-9.6 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/9.6/main/*"
Восстановим кластер main
$ sudo -u postgres pg_probackup-9.6 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-9.6 backup -B /backup --instance main -b FULL --stream --compress --delete-wal --expired
Просмотр: $ sudo -u postgres pg_probackup-9.6 show -B /backup
Проверка backup:
$ sudo -u postgres pg_probackup-9.6 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-9.6 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/9.6/main/*"
Чтобы безопасно запустить восстановленный сервер, надо отключить непрерывное архивирование - иначе новые файлы WAL попадут в тот же каталог.
Восстановим кластер main
$ sudo -u postgres pg_probackup-9.6 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
После проверки восстановления нужно включить непрерывное архивирование.
-------------------------------------------------------------------------------------------------------
Создание дополнительного кластера
#$ sudo pg_dropcluster --stop 9.6 beta
$ sudo pg_createcluster --locale ru_RU.UTF-8 9.6 beta -- --data-checksums
[sudo] пароль для user:
Creating new cluster 9.6/beta ...
config /etc/postgresql/9.6/beta
data /var/lib/postgresql/9.6/beta
locale ru_RU.UTF-8
socket /var/run/postgresql
port 5433
#$ sudo pg_ctlcluster 9.6 beta start
#$ sudo pg_ctlcluster 9.6 beta stop
#$ sudo sudo systemctl status postgresql@9.6-beta.service
Удалим данные кластера beta
$ sudo /bin/su postgres -c "rm -rf /var/lib/postgresql/9.6/beta/*"
$ time sudo -u postgres pg_probackup-9.6 backup -B /backup --instance main -b FULL --stream --compress --delete-wal --expired -j4
.....
INFO: Backup start, pg_probackup version: 2.1.5, instance: main, backup ID: PYRFBC, backup mode: FULL, wal-method: STREAM, remote: false, replica: false, compress-algorithm: zlib, compress-level: 1
......
INFO: Validating backup PYRFBC
.....
Восстановление конкретного экземпляра:
$ sudo -u postgres pg_probackup-9.6 restore -B /backup --instance main -D /var/lib/postgresql/9.6/beta -i PYRFBC
или восстановление последней копии
$ sudo -u postgres pg_probackup-9.6 restore -B /backup --instance main -D /var/lib/postgresql/9.6/beta
=====================================================================
Определение копируемого экземпляра если будем сохранять кластер beta, вообщем то нам это не надо.
$ sudo -u postgres pg_probackup-9.6 add-instance -B /backup -D /var/lib/postgresql/9.6/beta --instance beta
Проверка:
$ time sudo -u postgres pg_probackup-9.6 backup -B /backup --instance beta -b FULL --stream --compress --delete-wal --expired -j4
=====================================================================
Откорректировать postgresql.conf для кластера beta
$ sudo cp /etc/postgresql/9.6/beta/postgresql.conf /etc/postgresql/9.6/beta/postgresql.conf.bak
$ sudo nano /etc/postgresql/9.6/beta/postgresql.conf
Проверка:
$ time sudo -u postgres pg_probackup-9.6 backup -B /backup --instance beta -b FULL --stream --compress --delete-wal --expired -j4
=====================================================================
Откорректировать postgresql.conf для кластера beta
$ sudo cp /etc/postgresql/9.6/beta/postgresql.conf /etc/postgresql/9.6/beta/postgresql.conf.bak
$ sudo nano /etc/postgresql/9.6/beta/postgresql.conf
$ sudo pg_ctlcluster 9.6 beta start
Подключение 1с ко второму кластеру PostgreSQL
-------------------------------------------------------------------------------------------------------
Для проверки стандартной wal архивации:
$ sudo mkdir -p /wal
$ sudo chown -R postgres:postgres /wal
$ sudo nano /etc/postgresql/9.6/main/postgresql.conf
расскоментировать:
archive_command ='test ! -f /wal/%f && cp %p /wal/%f'
Сохранить.
$ sudo systemctl restart postgresql.service
В папку /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
$ sudo su postgres -c "psql -c \"select pg_size_pretty( pg_database_size('demo'))\""
pg_size_pretty
----------------
9193 MB
(1 строка)
$ time sudo -u postgres pg_probackup-9.6 backup -B /backup --instance main -b FULL --stream --compress --delete-wal --expired
real 2m37,066s
user 1m40,382s
sys 0m34,089s
$ time sudo -u postgres pg_probackup-9.6 backup -B /backup --instance main -b FULL --stream --compress --delete-wal --expired -j 2
real 1m44,581s
user 1m43,316s
sys 0m57,534s
$ time sudo -u postgres pg_probackup-9.6 backup -B /backup --instance main -b FULL --stream --compress --delete-wal --expired -j4
real 1m8,021s
user 1m50,815s
sys 1m12,284s
$ time sudo -u postgres pg_probackup-9.6 backup -B /backup --instance main -b DELTA --stream --compress --delete-wal --expired -j4
real 0m10,455s
user 0m2,287s
sys 0m2,436s
$ time sudo su postgres -c "pg_dump -Fc demo" > ~/demo.dump
Создадим несколько баз:
$ sudo su postgres -c "createdb --username postgres -T template0 demo1"
....
$ sudo su postgres -c "createdb --username postgres -T template0 demo10"
Восстановим указав резервную копию
$ sudo su postgres -c "pg_restore -d demo1 /home/user/demo.dump"
.....
$ sudo su postgres -c "pg_restore -d demo10 /home/user/demo.dump"
$ sudo su postgres -c "psql -c \"select sum(pg_catalog.pg_database_size(d.datname)) from pg_catalog.pg_database d;\""
sum
--------------
103128915240
(1 строка)
$ time sudo -u postgres pg_probackup-9.6 backup -B /backup --instance main -b FULL --stream --compress --delete-wal --expired -j4
real 10m58,273s
user 19m34,595s
sys 11m39,389s
$ time sudo -u postgres pg_probackup-9.6 backup -B /backup --instance main -b DELTA --stream --compress --delete-wal --expired -j4
real 4m34,368s
user 0m32,296s
sys 0m52,805s
$ sudo -u postgres pg_probackup-9.6 show -B /backup
$ time sudo -u postgres pg_probackup-9.6 merge -B /backup --instance main -i PYNHKF -j 4
pg_dumpall > db.out
$ time sudo su postgres -c "
pg_dumpall
" > ~/dump100G.dumpreal 11m7,245s
user 1m9,058s
sys 2m0,203s
$
psql -f db.out postgres
Комментариев нет:
Отправить комментарий