
Lestat -
28.09.2018
09:37:08
пришло время объективности!
вот что мне удалось понять из написанного: 1) я бестолковый разработчик 2) у меня скоро сгорит сервер с дисками 3) нужно разработать модель бэкапирования и ресторинга ?)

Yaroslav
28.09.2018
09:37:46

Alexey
28.09.2018
09:38:00

Yaroslav
28.09.2018
09:43:51

Google

Lestat -
28.09.2018
09:46:03


Yaroslav
28.09.2018
09:52:49
1) ?
3) в планах
тут пропадет всего 10 записей максимум (это уже не критично)
> тут пропадет всего 10 записей максимум (это уже не критично)
Ещё одна причина запомнить на будущее возможность сделать "synchronous_commit = off".
(Т.е. потеря есть потеря, раз она допустима (если маловероятна, как я понимаю), причины не так важны, а на Вашем "железе" это может сильно помочь.)
Тем не менее... что с другими вопросами?
> По одной строке, по много? Какой ширины?
10 строк на транзакцию, так? Размер строки Вы посмотрели?
И по нагрузке подробнее... Сколько tps с одного источника? Они все постоянно пишут?
И ещё...
> а когда появляется - пишет всё из очереди в базу
Т.е. в приниципе (если у Вас нагрузка может сильно меняться) Вашим клиентам на самом деле неважно, насколько медленно отвечает сервер, они вполне способны "дописать потом", так?

Demuz
28.09.2018
10:30:42

Terminator
28.09.2018
11:40:37
@dezconnect будет жить. Поприветствуем!

Alex
28.09.2018
12:09:37
Тут интересный вопрос возник, столкнулся с базой, которую рестартанули и она нашла последний чекпоинт месячной давности и начала с него восстанавливаться. Вопрос, как такое могло получиться ? Ведь я как я понимаю чекпоинт должен проходить каждые пять минут (значение по умолчанию), и при бекапах которые делаются через pg_basebackup ?

Demuz
28.09.2018
12:16:56

Andrey
28.09.2018
12:23:21

Alexander
28.09.2018
12:24:05
При установке на Ubuntu 16.04 из репозитория https://apt.2ndquadrant.com/ этот файл создаётся автоматически. Как устанавливаете и на какую систему?

Demuz
28.09.2018
12:25:40

Google

Demuz
28.09.2018
12:28:24
Короче в конфигах repmgr.conf раньше не были прописаны команды для автофэиловера, но теперь прописал, что необходимо сделать, чтобы он переинитил конфигурационный файл? Не пересобирать кластер же. ?

Alex
28.09.2018
12:29:26

Demuz
28.09.2018
12:37:48
так как его место в кластере занял слейв

Alexander
28.09.2018
12:43:23
Удалить его и подключить в качестве standby.

Demuz
28.09.2018
12:47:11

Alexander
28.09.2018
12:58:15

Andrey
28.09.2018
13:07:39
Поздравляю, у вас splitbrain. Автоматизировать невозможно. Почти всегда только человек может решить, какой мастер оставить. Особенно, если после splitbrain писали в оба мастера.

Terminator
28.09.2018
14:03:57
@Snipe24 будет жить. Поприветствуем!

Jack
28.09.2018
14:07:45
всем привет. не очень знаком с sql (раньше работал с nosql). вопрос такой. юзер загружает фото на сайт, надо все это хранить в базе (redshift). структура такая
photo_id: string
takendate : float
photo_tags [массив строк, или массив обьектов]
а потом мне надо делать запрос на теги по отдельному фото, и по всем тегам всех фото в целом. как это лучше организовать. две таблицы, или там теги можно как массив хранить ?

Vladimir
28.09.2018
14:12:10
можно как массив
если устроит, что тег - это просто строка и не надо к нему привязывать допполей

Jack
28.09.2018
14:14:26
ну как массив можно, но тогда взять все теги всех фото не будет сложно ?

Eagle Owl
28.09.2018
14:18:05
Если в SQL раньше не работали, лучше отдельную таблицу, имхо. Более традиционный подход.
И нагуглить, что как выбрать, легче будет. И с привязкой по каждой фотке, и все сразу без проблем.

Jack
28.09.2018
14:19:37

Google

Eagle Owl
28.09.2018
14:20:33
об этом тоже думал, но проблема в том, что я не знаю количество тегов. то есть для одного фото тегов будет 5, для другого 10. ну изначально я думал создать таблицу для тегов с несколько полями, где будет каждый тег, и еще поле id photo, который сслыяется на поле фото в другой таблице, но вот количество тегов я не знаю
Не понимаю, если честно, в чём сложность. Сколько тегов, столько операций INSERT, грубо говоря (bulk insert в качестве упрощения не рассматриваем).

Jack
28.09.2018
14:22:57

Vadim
28.09.2018
14:41:58
Доброго всем.
Слышал слухи, что repmgr может что то похожее на master-master c postgre (бесплатной).
На сколько миф? пробовал мож кто? Есть может ссылка, чтоб прогуляться почитать?

Andrey
28.09.2018
14:43:06

Vadim
28.09.2018
14:43:13
суть как бы проста.
Имея 2 цод - можно сделать master-stb1-stb2-stb3. И если подсети все доступны, проблем особых нет.
Но что делать, если цод-ов - гораздо больше? шт10 например. аля хайлоад
А причем тут repmgr?
Пытаюсь понять на что способен он. Заметил просто обсуждение сегодня на счет failover.
failover - скажем так, решений много. Не самое страшное..

Andrey
28.09.2018
14:44:31
В любом случае мастер у вас будет один.
Из готовых решений: Patroni, Stolon.

Vadim
28.09.2018
14:46:28
Вот патрони как раз изучаю, ковыряю. но с балансировкой, всё равно не до конца понял.
Т.е. - для RW всё равно используем только 1 мастер?
Балансер отдельно как то для этого настравивается?

Alex
28.09.2018
14:49:04
ну патрони вам вроде мастер-мастер не обещает совсем

Alexander
28.09.2018
14:58:30

Terminator
28.09.2018
16:05:24
@akhanteev будет жить. Поприветствуем!

Alexandr
28.09.2018
16:34:30
Господа, вечер добрый, кто может помочь с оптимизацией запросов/индексов на выборку из двух больших таблиц(2м+) с inner_join и сортировкой?
P.S. Гуглил

Yaroslav
28.09.2018
16:40:36

Alexandr
28.09.2018
16:41:17

Yaroslav
28.09.2018
16:41:57

Fike
28.09.2018
16:42:33
:trollface:

Alexandr
28.09.2018
16:43:26
Вопрос следующий, есть две таблицы, джойнятся по ключю, хочется уметь быстро делать выборку с сортировкой по датам/каунтам

Google

Alexandr
28.09.2018
16:57:02
select
rm.member_id,
count(rm.role_id) AS roles_count
from role_member rm
group by rm.member_id
order by roles_count
Sort (cost=415671.79..418096.32 rows=969812 width=25) (actual time=3297.260..3632.730 rows=1576914 loops=1)
" Output: member_id, (count(role_id))"
Sort Key: (count(rm.role_id))
Sort Method: external merge Disk: 63136kB
-> GroupAggregate (cost=0.56..296031.86 rows=969812 width=25) (actual time=0.042..2540.739 rows=1576914 loops=1)
" Output: member_id, count(role_id)"
Group Key: rm.member_id
-> Index Only Scan using role_member_member_id_role_id_index on public.role_member rm (cost=0.56..267080.50 rows=3850648 width=61) (actual time=0.035..1566.461 rows=3850648 loops=1)
" Output: member_id, role_id"
Heap Fetches: 1020171
Planning time: 0.155 ms
Execution time: 3724.649 ms
Как тут быть и что сделать, что бы было быстрее(кроме как создавать отдельное поле для каунта)


DiJey (Pavel)
28.09.2018
16:58:59
patroni
Очень захватывающий видосик, как разруливаются такие ситуации: http://thesecretlivesofdata.com/raft/

Yaroslav
28.09.2018
18:01:25


Alexandr
28.09.2018
18:02:30

DiJey (Pavel)
28.09.2018
18:02:42
Нативно, а патрони в автомате умеет

Yaroslav
28.09.2018
18:04:16


Alexandr
28.09.2018
18:06:50

Yaroslav
28.09.2018
18:08:08

Alexandr
28.09.2018
18:08:55

Yaroslav
28.09.2018
18:09:49
Но, в общем, этот запрос выбирает и возвращает довольно большой результат (1 576 914 rows).
Вы даже просто попробуйте результат этого запроса выбрать в другую таблицу, а потом сделать SELECT * FROM из неё.
Мне кажется, даже его чтение и передача займёт существенное время (это на тему предварительной аггрегации).

Alexandr
28.09.2018
18:25:37

Andrei
28.09.2018
18:44:03
А зачем такой фетч большой? Вы потом где-то этот миллион перебираете?

Demuz
28.09.2018
20:15:00

DiJey (Pavel)
28.09.2018
20:38:14

Google

Let Eat
28.09.2018
21:42:46


Yaroslav
28.09.2018
22:02:18

Let Eat
28.09.2018
23:16:24

Yaroslav
28.09.2018
23:17:08

Let Eat
28.09.2018
23:17:48
Ну можно добавить member_id в индекс :) будет index only
Там наверняка order by limit X

Yaroslav
28.09.2018
23:21:39

Terminator
29.09.2018
02:39:27
@trentclainor будет жить. Поприветствуем!

Demuz
29.09.2018
07:17:28
Подскажите, пожауйлста, а если у меня ничего из этого не стоит, то Patroni не будет работать?

Ivan
29.09.2018
07:22:16
Что-то придется выбрать)