Это значит, что одновременно может обратиться 20 человек к базе?

|
surprise_kotov 2022-07-03 11:24:44
Привет, ребята!

Назрела необходимость прокачать резервное копирование на проекте. Предпочитетльным вижу бэкапирование на сетевой диск (в том числе инкрементное). В настоящее время бэкап снимается всего лишь один раз в сутки, что чревато.

Смотрю в сторону wal-g. Почитал статьи на Хабре и «Быстрый старт» в доке.
Подскажите, пожалуйста, я правильно понял, что без доп. телодвижений wal-g поддерживает только бэкапирование в облако? Нашел решение с использованием вместе с Minio, но выглядит, если честно переусложнением. Поэтому, раздумываю в выборе между менее популярном, но имеющием возможность сохранения на диск из коробки
Minio и более популярным wal-g.

gsmolk 2022-07-03 11:59:50
surprise_kotov 2022-07-03 11:24:44
Привет, ребята!

Назрела необходимость прокачать резервное копирование на проекте. Предпочитетльным вижу бэкапирование на сетевой диск (в том числе инкрементное). В настоящее время бэкап снимается всего лишь один раз в сутки, что чревато.

Смотрю в сторону wal-g. Почитал статьи на Хабре и «Быстрый старт» в доке.
Подскажите, пожалуйста, я правильно понял, что без доп. телодвижений wal-g поддерживает только бэкапирование в облако? Нашел решение с использованием вместе с Minio, но выглядит, если честно переусложнением. Поэтому, раздумываю в выборе между менее популярном, но имеющием возможность сохранения на диск из коробки
Minio и более популярным wal-g.

Попробуйте ещё pg_probackup
https://github.com/postgrespro/pg_probackup

GitHub — postgrespro/pg_probackup: Backup and recovery manager for PostgreSQLGitHub
Backup and recovery manager for PostgreSQL. Contribute to postgrespro/pg_probackup development by creating an account on GitHub.
Xavoks 2022-07-03 12:04:58
surprise_kotov 2022-07-03 11:24:44
Привет, ребята!

Назрела необходимость прокачать резервное копирование на проекте. Предпочитетльным вижу бэкапирование на сетевой диск (в том числе инкрементное). В настоящее время бэкап снимается всего лишь один раз в сутки, что чревато.

Смотрю в сторону wal-g. Почитал статьи на Хабре и «Быстрый старт» в доке.
Подскажите, пожалуйста, я правильно понял, что без доп. телодвижений wal-g поддерживает только бэкапирование в облако? Нашел решение с использованием вместе с Minio, но выглядит, если честно переусложнением. Поэтому, раздумываю в выборе между менее популярном, но имеющием возможность сохранения на диск из коробки
Minio и более популярным wal-g.

pgbackrest, умеет и в s3 если надо будет и на сетевой диск и хорошая большая дока

surprise_kotov 2022-07-03 12:52:01
Спасибо, ребята! Уже открыл hello-world-ы по его использованию. Буду пробовать!
Сначала смутило, что непопулярный на Github инструмент.
surprise_kotov 2022-07-03 16:19:37
surprise_kotov 2022-07-03 12:52:01
Спасибо, ребята! Уже открыл hello-world-ы по его использованию. Буду пробовать!
Сначала смутило, что непопулярный на Github инструмент.

Резервное копирование готово! И полное и инкрементное. Попробовал восстановить — даже работает!)

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

Проверил — все отлично работает, изменения в slave утекают из master, а в slave ничего изменить нельзя.

В теории, теперь и чтение может производиться из slave. Но как это проверить — ума не приложу.

Есть идея сгенерировать извне тысячи запросов на чтение и посмотреть, будут ли эти запросы доходить до slave или все нагрузят master. Вижу вариант с парсингом логов access.log, но вручную через ctrl f как то выглядит костылем. Мб есть вариант лучше и удобнее.

Подскажите, пожалуйста, как можно продебажить «путь» исполнения запроса?

zaitsevkv 2022-07-03 16:24:36
surprise_kotov 2022-07-03 16:19:37
Резервное копирование готово! И полное и инкрементное. Попробовал восстановить — даже работает!)

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

Проверил — все отлично работает, изменения в slave утекают из master, а в slave ничего изменить нельзя.

В теории, теперь и чтение может производиться из slave. Но как это проверить — ума не приложу.

Есть идея сгенерировать извне тысячи запросов на чтение и посмотреть, будут ли эти запросы доходить до slave или все нагрузят master. Вижу вариант с парсингом логов access.log, но вручную через ctrl f как то выглядит костылем. Мб есть вариант лучше и удобнее.

Подскажите, пожалуйста, как можно продебажить «путь» исполнения запроса?

Запросы сами на slave не попадут бtз дополлнитиелльных настроек подключния target_session_attrs
и указания нескольких серверов в подключении

molind 2022-07-03 18:12:23
Привет. Быстрый вопрос. Есть записи с timestampz. Хочу их для графиков собрать в группы по 12 часов. date_trunc(‘day’, created_at)- работает отлично, обросить до часа тоже можно. А вот по 12 часов, что-то не соображу как красиво их собрать.
molind 2022-07-03 18:13:45
Попробовал так. select date_trunc(‘day’, created_at) as tf, extract(hour from created_at) < 12 as tf2, count(id) from devices d group by tf, tf2;
Но это что-то плохо совсем. Т.к. уровнем выше идет join по timestamp и там хотелось бы иметь нормальный timestamp а не два поля.
zaitsevkv 2022-07-03 18:32:20
molind 2022-07-03 18:13:45
Попробовал так. select date_trunc(‘day’, created_at) as tf, extract(hour from created_at) < 12 as tf2, count(id) from devices d group by tf, tf2;
Но это что-то плохо совсем. Т.к. уровнем выше идет join по timestamp и там хотелось бы иметь нормальный timestamp а не два поля.

Сделайте date_trunc(‘day’, ) interval 12 часов умножить на date_trunc(‘hour’ , ) > 12

zaitsevkv 2022-07-03 18:38:44
zaitsevkv 2022-07-03 18:32:20
Сделайте date_trunc(‘day’, ) interval 12 часов умножить на date_trunc(‘hour’ , ) > 12

Вернее extaract как у вас hour

Ilya_Portnov 2022-07-03 19:03:32
TIL: если запускаете постгрес в докере, не забудьте при docker run сказать —shm-size=X, где X строго больше вашего shared_buffers.
Хорошо что на девелоперской базе узнал 🙂
amyodov 2022-07-03 19:07:32
Да это классическая схема. Человек «как будто по наивности» говорит свои ключевые слова, на кошельке у него какие-нибудь «дорогие токены», но нет эфира, чтобы их перевести. А чтобы перевести, жертва кидает туда немного эфира,…
… который с него тут же сливает скрипт, следящий за входящими транзакциями.

А самое весёлое – когда «дорогие токены» ещё и залочены, и их по факту даже перевести нельзя

recursiveDesert 2022-07-03 19:07:49
та я понимаю. но вдруг есть такие долбы шо имеют крипту но не знают про биржи или бестчендж
zaitsevkv 2022-07-03 19:09:18
recursiveDesert 2022-07-03 19:07:49
та я понимаю. но вдруг есть такие долбы шо имеют крипту но не знают про биржи или бестчендж

И пишут под разными никами в чат PostgreSQL 🤦‍♀️

vnikiame 2022-07-03 19:15:12
«Нередко может возникать ситуация, когда надо промэппить одну таблицу значениями из другой. В зависимости от задачи, могут использоваться разные типы присоединений.» — что значит промэппить?
alex_goat 2022-07-03 19:15:23
Ilya_Portnov 2022-07-03 19:03:32
TIL: если запускаете постгрес в докере, не забудьте при docker run сказать —shm-size=X, где X строго больше вашего shared_buffers.
Хорошо что на девелоперской базе узнал 🙂

это зОчем?

vnikiame 2022-07-03 19:16:14
а, стоило немного подумать сначала, всем спасибо я понял
Ilya_Portnov 2022-07-03 19:18:43
alex_goat 2022-07-03 19:15:23
это зОчем?

иначе при попытке заюзать весь shared_buffers постгрес вам скажет «no space left on device». Докер по умолчанию контейнерам разрешает использовать только 1 гиг шаренной памяти.

alex_goat 2022-07-03 19:19:08
ок, спс
voin_101 2022-07-03 19:21:19
Здравствуйте.
В /var/lib/postgres/data/postgresql.conf
Установил tcp_user_timeout = 0
Что соответствует каким-то системным настройкам. Не могу понять где эти системные значения…?
Еще такой вопрос, если tcp_user_timeout = 1000, то по идеи TCP соединение с пострегом через секунду должно закрываться?
Frolov_Denis 2022-07-03 20:10:52
voin_101 2022-07-03 19:21:19
Здравствуйте.
В /var/lib/postgres/data/postgresql.conf
Установил tcp_user_timeout = 0
Что соответствует каким-то системным настройкам. Не могу понять где эти системные значения…?
Еще такой вопрос, если tcp_user_timeout = 1000, то по идеи TCP соединение с пострегом через секунду должно закрываться?

Эти системные значения например в Linux можно посмотреть sysctl -a|grep net.ipv4.tcp
На второй вопрос ответ нет. Почитайте как работает tcp соединение.
Вы какую задачу решаете ?

brodev 2022-07-03 20:21:52
как решить такое, есть список ид нужно вернуть те которых нет в базе. тоесть как бы отфильтровать данные из запроса
KoNEWV 2022-07-03 20:25:41
brodev 2022-07-03 20:21:52
как решить такое, есть список ид нужно вернуть те которых нет в базе. тоесть как бы отфильтровать данные из запроса

— воткнуть в values
— left join над целевой таблицей
— выбрать фильтром те, где целевой идентификатор NULL

centralhardware 2022-07-03 20:45:22
KoNEWV 2022-07-03 20:25:41
— воткнуть в values
— left join над целевой таблицей
— выбрать фильтром те, где целевой идентификатор NULL

Так а что мешает сразу id in (…)

KoNEWV 2022-07-03 20:46:16
Можно, но если вдруг источник не рукописный какой-то всё-таки, может быть проще в сборке
Nazarprosto12 2022-07-03 22:21:59
Есть тип данных словари или dict?
Ilya_Portnov 2022-07-03 22:23:08
hstore?
geo666666 2022-07-03 22:23:31
Nazarprosto12 2022-07-03 22:21:59
Есть тип данных словари или dict?

Вроде есть json и jsonb

Nazarprosto12 2022-07-03 22:23:58
geo666666 2022-07-03 22:23:31
Вроде есть json и jsonb

ага оно называется json

geo666666 2022-07-03 22:39:54
Ні, це різні речі)
Я не пам’ятаю точно різниці, раджу погуглити
Komzpa 2022-07-03 22:49:44
geo666666 2022-07-03 22:39:54
Ні, це різні речі)
Я не пам’ятаю точно різниці, раджу погуглити

jsonb бінаорны і перасоўвае ключы ў слоўніках, json захоўвае ўсё як тэкст і толькі валідацыі што ўсё сінтаксічна карэктна спраўджвае

Stan 2022-07-03 22:51:36
Komzpa 2022-07-03 22:49:44
jsonb бінаорны і перасоўвае ключы ў слоўніках, json захоўвае ўсё як тэкст і толькі валідацыі што ўсё сінтаксічна карэктна спраўджвае

Это белорусский?

Hover2 2022-07-03 22:52:04
Скорее всего да )
fatSleeper 2022-07-03 22:52:59
Stan 2022-07-03 22:51:36
Это белорусский?

Ага

Stan 2022-07-03 22:54:39
На украинский похож очень
fatSleeper 2022-07-03 23:06:30
Ну белорусы как правило понимают украинцев а украинцы белорусов
Stan 2022-07-03 23:10:51
Ну логично
tzirechnoy 2022-07-03 23:12:35
Nazarprosto12 2022-07-03 22:21:59
Есть тип данных словари или dict?

Table

sans404 2022-07-04 00:03:36
FATAL: could not create shared memory segment: Function not implemented что это?
oldmanintheoldhousee 2022-07-04 00:06:43
sans404 2022-07-04 00:03:36
FATAL: could not create shared memory segment: Function not implemented что это?

Санес

voin_101 2022-07-04 00:13:35
Frolov_Denis 2022-07-03 20:10:52
Эти системные значения например в Linux можно посмотреть sysctl -a|grep net.ipv4.tcp
На второй вопрос ответ нет. Почитайте как работает tcp соединение.
Вы какую задачу решаете ?

Спасибо за ответ.
Моей задачей является написание Телеграм бота. Ранее я делал бота на mysql но столкнулся с некоторыми техническими сложностями.

Под мою технологию(luvit) поддерживают только библиотеку для postgresql.

И вот к чему был мой вопрос: так выходило, что в mysql нужно было указывать тайм-аут соединения, если за прошедший тайм-аут не было отправлено никакого пакета, mysql закрывал соединение.
Решением было для меня просто пинговать время от времени mysql.

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

a8975cec2907ac3b88021 2022-07-04 02:21:51
pgsql-392813.jpg
Привет! Хотел бы узнать, что такое конекшены в бесплатном тарифе на Хероку. Это значит, что одновременно может обратиться 20 человек к базе? Что будет, если обратится 21 человек?
centralhardware 2022-07-04 03:07:30
a8975cec2907ac3b88021 2022-07-04 02:21:51
Привет! Хотел бы узнать, что такое конекшены в бесплатном тарифе на Хероку. Это значит, что одновременно может обратиться 20 человек к базе? Что будет, если обратится 21 человек?

там даже не постгрес, здесь не оказывает подержку хероку

a8975cec2907ac3b88021 2022-07-04 03:07:53
centralhardware 2022-07-04 03:07:30
там даже не постгрес, здесь не оказывает подержку хероку

постгрес

lesovsky 2022-07-04 04:06:11
a8975cec2907ac3b88021 2022-07-04 02:21:51
Привет! Хотел бы узнать, что такое конекшены в бесплатном тарифе на Хероку. Это значит, что одновременно может обратиться 20 человек к базе? Что будет, если обратится 21 человек?

Получите ошибку что лимит превышен

a8975cec2907ac3b88021 2022-07-04 04:07:53
lesovsky 2022-07-04 04:06:11
Получите ошибку что лимит превышен

Так это 20 одновременных подключений или что? Одновременные это 20 за секунду или за какое время примерно?

lesovsky 2022-07-04 04:09:50
a8975cec2907ac3b88021 2022-07-04 04:07:53
Так это 20 одновременных подключений или что? Одновременные это 20 за секунду или за какое время примерно?

Без разницы за какой период. Это просто ограничение. Это как 21 человек не могут поехать одновременно на лифте

Liran 2022-07-04 08:48:22
I need to sum every hour all the items number of units our store sold from our Orders table. i thought making a side table to have this data (item_id, units_sold).
how should i implement the job?
Ilya_Portnov 2022-07-04 09:53:51
а как обычно в постгресе решают задачу «сделать копию базы»? Ну, например, сделать копию прода, чтобы на ней тестироваться. Или настроенную девелоперскую базу скопировать, чтобы ещё одной команде поиграться дать.
pg_dump ? или pg_basebackup? или ещё какой вариант?
surprise_kotov 2022-07-04 09:55:02
Приветствую, ребята!

Введение.
Вчера настроил репликацию на своем сервере, все работает успешно.

Чтобы вручную не тратить пол часа на разворачивание каждый раз, решил автоматизировать это дело в bash и dockerfile.

Использую дефолтный оф. контейнер postgresql 14 версии.
При просмотре прав на файлы в директории
ls /var/lib/postgresql/ -la
вижу, что некоторые файлы принадлежат пользователю postgres.

Проблема.
Из slave необходимо прокинуть ключ на master с помощью команды
RUN ssh-copy-id postgres@postgres-master
но данная команда запрашивает пароль пользователя, который я не знаю.

Вопрос.
Подскажите, пожалуйста, какой пароль Linux пользователя с именем postgres внутри оф. контейнера postgresql (FROM postgres:14.4).

Пробовал вводить пароли из секции ENV
POSTGRES_PASSWORD итд — не подоходят.

|