@pgsql

Страница 261 из 1062
Роман
04.03.2017
05:57:23
http://www.cnews.ru/news/top/2017-03-03_v_rossii_sozdana_subd_dlya_raboty_s_gostajnoj

raksita
04.03.2017
06:08:41
Цитата из статьи: "PostgreSQL – это реляционная СУБД для UNIX-подобных платформ, написанная одноименным сообществом разработчиков на языке SQL, с добавлением С и C++."

Роман
04.03.2017
06:09:33
?

Pavel
04.03.2017
06:13:46
Да-да, журналисты хорошо курнули

Google
Yuriy
04.03.2017
06:16:19
Ни хуя себе на sql с добавлением С

Нормально

С вкраплениями С. Прям СУБД для хипстеров и вайперов

Viktor
04.03.2017
06:18:14
кто-то скомпилял из исходников что-то опять?

Pavel
04.03.2017
06:21:04
Нежный sql с вкраплением С Прямо слоган для рекламы шоколада

Yuriy
04.03.2017
06:23:56
Расходимся пацаны, в постгрю добавили С и С++

Robert
04.03.2017
06:31:04
Блин, теперь на каждый селект объявлять тип данных?

Andrey
04.03.2017
06:39:07
Блин, теперь на каждый селект объявлять тип данных?
А также не забывать выделять достаточно памяти под результат запроса и освобождать ее впоследствии :)

Артур
04.03.2017
13:57:37
http://m.cnews.ru/news/top/2017-03-03_v_rossii_sozdana_subd_dlya_raboty_s_gostajnoj

Dan
04.03.2017
18:56:56
Коллеги, нубский вопрос. Я простеньким скриптом раз в 20 секунд пишу в базу несколько значений. Чаще всего входящие значения меняются реже чем раз в 20 секунд, и второй раз их писать смысла нет. Сейчас я реализовал проверку на существующие значения через сравнение хэшей (беру за основу некоторые уникальные параметры), а в базе хэши записываются сразу же при внесении. Если такая запись уже есть, то новая не уникальная - поэтому не пишется. Это правильный подход? Или есть намного более простые способы проверки на уникальность?

Я просто в pg пока еще не сильно хорошо разбираюсь ?

Evgeniy
04.03.2017
18:58:49
апсерт

Google
Evgeniy
04.03.2017
18:59:01
а так норм чо

Dan
04.03.2017
19:09:29
апсерт
Круто, спасибо, попробую.

py_postgresql использую

а тут пишут что есть ON CONFLICT UPDATE в >9.5 версиях

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

Evgeniy
04.03.2017
19:15:51
пожалуйста

Dmitrii
04.03.2017
19:27:53
Но зачем хэши?

UNIQUE индекс по полям "хэша" + ON CONFLICT UPDATE

Dan
04.03.2017
20:00:31
так и сделал, так и работает. я просто не знал про ON CONFLICT при инсерте, и у меня был лишний селект.

оптимизация, однако

Darafei
05.03.2017
18:16:26
а посмотрите глазами и покоментьте, тут openstreetmap.org на 9.6 перетаскивают https://github.com/openstreetmap/operations/issues/94#issuecomment-284243528

Evgeniy
05.03.2017
18:51:45
главное чтобы консолькой не ошиблись

Alexey
05.03.2017
19:24:36
Коллеги, нужна помочь. Изредка у меня отваливается репликация между мастером и слейвом. Но это не самая большая проблема. После разрыва при попытке восстановления через pg_basebackup, в логах я вижу сообщение типа: ERROR: requested WAL segment N has already been removed

Где N - имя WAL-лога

Как это лечить? Может кто-то сталкивался с подобным

Evgeniy
05.03.2017
19:27:05
-X stream

replication slot

wal_keep_segments

на любой вкус!

Dan
05.03.2017
19:39:24
Коллеги, опять к вам со странным вопросом. Относительно производительности.

Google
Alexey
05.03.2017
19:40:51
на любой вкус!
Replication slot для pg_basebackup, вроде сделали только в 9.6, а у меня 9.4. Думаю и правда над увеличением wal_keep_segment, но пока заюзал -X stream. Надеюсь, что поможет. Спасибо!

Dan
05.03.2017
19:42:53
В одну простую табличку раз в 20 секунд у меня заходят данные. По старой привычке я добавил поле id (int4) и сделал его primary key. Тем не менее, этот id объективно не нужен, так как таблица ни с чем более не связана, редактирование и удаление записей не предусмотрено, а при добавлении идёт проверка на уникальность поля hash, где char(64). Правильно ли я понимаю, что: 1. id мне не нужен в данном случае вообще? 2. hash может и должен быть primary 3. hash должен индексироваться для лучшего (более быстрого) поиска 4. будет ли в данном случае регресс и ощутимый проигрышь в скорости работы?

скорость "роста" этой таблицы aprx. 100 тысяч записей в день

Darafei
05.03.2017
19:44:10
а что за хеш?

Dan
05.03.2017
19:45:07
хэш это sha256 от конкатенации 4 элементов записи из разных полей для уникальности

Darafei
05.03.2017
19:45:52
а uuid там не подойдёт? :)

Dan
05.03.2017
19:48:11
я не совсем в курсе подойдёт или нет: мне нужно при инсерте проверять, есть ли уже такая запись в таблице. on conflict do nothing соответственно

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

Darafei
05.03.2017
20:03:30
просто сделай unique / pkey и вставляй

Alexey
05.03.2017
20:19:25
есть в 9.4 слоты
вообще - да, а в pg_basebackup - нет

Dmitry
06.03.2017
05:26:55
Replication slot для pg_basebackup, вроде сделали только в 9.6, а у меня 9.4. Думаю и правда над увеличением wal_keep_segment, но пока заюзал -X stream. Надеюсь, что поможет. Спасибо!
А что думать. Надо увеличивать. А в restore_command у вас что прописано? Куда он за валами ходит в случае гэпа?

Петр
06.03.2017
05:28:10
архивация логов ему поможет

Dmitry
06.03.2017
05:29:44
А есть отчаянные, у которых в БД не включена архивация логов?

Петр
06.03.2017
05:32:12
тогда я не очень понимаю, для чего он каждый раз с бэкапов восстанавливается. Если логи архивируются - хоть месяц стендбай в дауне, все равно накатится

Dmitry
06.03.2017
05:33:35
Наверно из бэкапа быстрее, чем месяц логов с нагруженной БД проигрывать. Не зря же народ так инкрементальный бэкап хочет

Петр
06.03.2017
05:34:25
так он наверное не через месяц замечает, что репликация у него отвалилась)

Alexey
06.03.2017
05:34:27
А что думать. Надо увеличивать. А в restore_command у вас что прописано? Куда он за валами ходит в случае гэпа?
Параметр restore_command в моём конфиге отсутствует. И что ты имеешь ввиду под гэпом?

Dmitry
06.03.2017
05:37:05
А ты (раз уж мы першли на ты :) ) можешь свой recovery.conf показать? Реальные названия хостов можно поправить.

Под гэпом я понимаю такую задержку , в которой пропущен накат более одного xlog

Google
Dmitry
06.03.2017
05:38:54
Gap, lag - по-англтйски задержка

Alexey
06.03.2017
05:55:11
А ты (раз уж мы першли на ты :) ) можешь свой recovery.conf показать? Реальные названия хостов можно поправить.
standby_mode = 'on' primary_conninfo = 'host=db01 port=5432 user=replic password=password' trigger_file = '/tmp/postgresql.trigger.5432'

Dmitry
06.03.2017
06:02:31
Я бы добавил restore_command = 'scp postgres@db0:/data/pgwal/%f %p' archive_cleanup_command = 'ssh postgres@db0 "pg_archivecleanup /data/pgwal %r"' /data/pgwal - папка, куда архивируется wal файлы pg_archivecleanup - зачищает файлы, которые применились на стендбай. Для ssh должен быть настроен доступ по ключам для пользователя postgres (ну или из под какого у тебя постгря работает)

Alexey
06.03.2017
06:07:31
Я бы добавил restore_command = 'scp postgres@db0:/data/pgwal/%f %p' archive_cleanup_command = 'ssh postgres@db0 "pg_archivecleanup /data/pgwal %r"' /data/pgwal - папка, куда архивируется wal файлы pg_archivecleanup - зачищает файлы, которые применились на стендбай. Для ssh должен быть настроен доступ по ключам для пользователя postgres (ну или из под какого у тебя постгря работает)
Спасибо, сделаем! Только есть один вопрос: я всегда думал, что wal'ы надо хранить максимальное количество времени, дабы сделать один файловый бэкап раз в неделю и дальше всё wal'ами накатывать. А тут получается, что wal'ы толком не будут храниться, а почти сразу же удаляться

Admin
ERROR: S client not available

Петр
06.03.2017
06:10:40
pg_archivecleanup убери и накатанные логи не будут удаляться, будешь их чистить после бэкапа или архивируй в 2 места, вариантов масса

Dmitry
06.03.2017
06:34:16
Лучше архивировать в 2 пути как хардлинки. Тогда лишнее место не будет занимать

У меня в 3 места архивируется вот таким скриптом: #!/bin/sh cp $1 /data/pgwal/$2 if [ ${2##*.} != "backup" ] then ln /data/pgwal/$2 /data/pgwal/walbackup/$2 ln /data/pgwal/$2 /data/pgwal/archive/$2 fi

archive_command = '/data/bin/wal_arch %p %f'

Петр
06.03.2017
06:51:50
@dmitrykremer в 3-е место для чего?

Dmitry
06.03.2017
06:54:38
Чтобы суточный архив валов делать. Мы храним за 3-4 дня прямо на сервере, чтоб далеко не бегать. Но это так, перестраховка для параноиков по жизни :) Опять же, если у вас несколько стендбаев, можете по этой схеме сколько угодно путей напилить.

Петр
06.03.2017
06:55:25
понятно

Nikolay
06.03.2017
06:55:45
Dmitry
06.03.2017
06:56:43
И чем это лучше?

Nikolay
06.03.2017
07:00:07
pg_receivexlog работает по протоколу репликации и успеет забрать все, что не успела передать archive_commend до падения.

Dmitry
06.03.2017
07:00:44
Я за счет хардлинка экономлю место. Сколько бы я копий не сделал. Любая удаленная копия оставляет файл на месте, пока не удалена последняя копия файла. А у вас в чем профит от использования pg_receivexlog? Вы гарантируете синхронность появления логов в обоих местах, и что не произойдет сбой, из-за которого во втором пути лога не будет?

А в каком месте вы вызываете pg_receivexlog?

Nikolay
06.03.2017
07:02:31
barnam запускает/ перезапускает если упадет канал

Dmitry
06.03.2017
07:02:31
Я вот очень сомневаюсь, что внешняя утилита отработает быстрее archive_command

Google
Dmitry
06.03.2017
07:02:50
Какой канал? Все локально на мастере

Dmitry
06.03.2017
07:03:46
Вы вносите лишние точки отказа в цепочку

Dmitry
06.03.2017
07:04:29
Файлы архива забираются на бэкап сервер. Но это другой процесс

Речь о том, как разнести валы для бэкапа и репликации

Nikolay
06.03.2017
07:41:51
Вы вносите лишние точки отказа в цепочку
Я говорю о том, что если у вас оперативный WAL не запишется, то archive_command не спасет.

Артур
06.03.2017
07:43:39
https://www.postgresql.org/docs/9.5/static/functions-json.html Почитал это - не понял какой аналог tags = ANY ("tag1","tag2")

Помогите пожалуйста

Dmitry
06.03.2017
07:50:21
Я говорю о том, что если у вас оперативный WAL не запишется, то archive_command не спасет.
Вы под оперативным валом что понимаете? xlog ? Если он не запишется, то вас и pg_receivexlog не спасет.

Скажем так. Не гарантирует ваше спасение :)

А если вы передаете с помощью pg_receivexlog логи на бэкап сервер, то вносите дополнительную точку отказа в виде сетевого сбоя. Повторить передачу лога, записанного на диск, по сети нет проблем. А если у вас лог побился на передаче и wal_keep_segments недостаточно большой - всем привет.

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

Sergey
06.03.2017
08:30:26
Гхм. Вот чтоб применять не успевал на standby приходилось видеть. А вот чтоб не успевал отсылать не замечал такого.

Dmitry
06.03.2017
08:40:51
Ну тут дело вкуса. Можно так, а можно эдак. Мы решили обойтись без pg_receivexlog, но можно и с ним... Главное, что бы restore_command был, и находил нужные валы, когда необходимо.

Страница 261 из 1062