@pgsql

Страница 120 из 1062
Vadim
13.10.2016
13:34:49
пгадмин тоже не отдает,фишка постгреса может

Darafei
13.10.2016
13:35:23
ну не фишка постгреса же

Vadim
13.10.2016
13:35:38
свойства драйвера

Darafei
13.10.2016
13:36:03
ну работает же copy так

Google
Mike Chuguniy
13.10.2016
13:36:03
А tcpdump-ом посмотреть, что происходит?

Vadim
13.10.2016
13:36:49
copy же не sql команда, а bcp по сути

Sergey
13.10.2016
13:44:04
Если верить gdb pgpool'а то в pgpool и далее в psql данные едут порциями

Dmitriy
13.10.2016
14:09:24
посмотрел wireshark'om (предварительно выключив ssl) - данные идут порциями что в случае copy, что без него.

кстати, wireshark разбирает протокол обмена pgsql

в случае запроса copy данные идут с типом "copy data" (0x64) в случае обычного запроса тип "data rows" (0x44)

скорее всего ограничение на вывод в libpq, надо смотреть исходники

Darafei
13.10.2016
14:12:48
подозреваю, что formatted и unformatted output оба сделаны как buffered

Dmitrii
13.10.2016
22:42:44
Такой вопрос. Есть мастер база, и есть десяток дочерних баз, в них схема чуть отличается от мастер базы процентов на 30%. Задача воссоздать дочернюю базу из мастер базы. Чтобы было более понятно, в мастер базе есть что-то типа app_id. Вот по нему можно дифференцировать данные.

Может кто уже сталкивался с таким?

Не понятно что оптимальнее брать, fdw + SQL скрипт или просто кучу SQL кода который воссоздаст схему дочерней базы.

Или может еще какие способы есть

Vadim
14.10.2016
06:02:15
Партиционирование + логическая репликация. Попробуйте посмотреть в эту сторону.

Google
Dmitrii
14.10.2016
06:12:13
Операция многоразовая

В каком то роде похожа на деперсонализацию

Только тут еще и схему надо будет менять

Т.е. например, мне надо развернуть новый сайт клиенту, но его база должна состоять на 80% из данных мастер базы. Плюс схема на 30% отличается.

После инициализации данные прилетают в базу уже другими путями.

(на проде в смысле)

Andrey
14.10.2016
06:16:54
То, что вы описываете, похоже на ETL :)

Dmitrii
14.10.2016
06:18:49
По сути да. Только не понятно чем это делать, чтобы не костыльно было.

У нас тут даже была идея на правах бреда, т.к. данные в клиент прилетают путем асинхронной синхронизации баз через шину rabbitmq то мы думали, генерить фейковые ивенты на шину для этого клиента. Но вы сами понимаете, тут куча минусов.

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

Зато не надо будет поддерживать фазу "Т". Все это уже написано и является частью приложения.

За наводку на ETL спасибо, очень близко к тому что нам надо, я бы даже сказал именно то что надо, но попахивает кровавым ынтерпрайзом. Если у кого еще идеи будут, буду рад услышать.

Andrey
14.10.2016
06:47:28
Есть опенсорсные ETL средства - Scriptella, Pentaho, KETL.

Dmitrii
14.10.2016
07:26:35
Насколько данные у клиента должны быть свежими?
Они должны быть полностью консистентны

Борис
14.10.2016
07:27:34
Они должны быть полностью консистентны
Да это понятно. На какое время? В режиме онлайн или месячной давности?

Dmitrii
14.10.2016
07:27:43
Онлайн

Эту проблему я думал решать через нашу синхронизацию по шине. Т.е. снимаю бекап и начинаю после этого разрешать писать апдейты в очередь. После заливки базы должна начаться "досинхронизация"

Vadim
14.10.2016
08:36:33
максимальную отказоустойчивость через стриминговую репликацию лучше организовать?

Google
Vadim
14.10.2016
08:37:11
в синхронном режиме

Sergey
14.10.2016
09:01:28
Нет. В синхронном режиме выход из строя любого компонента (primary, standby, канала между базами) приведёт к остановке записи в primary.

Vadim
14.10.2016
09:30:19
и надо в этот момент отключать репликацию, чтоб продолжить работу?

а при асинхронной можно потерять данные при отказе главного сервера

Sergey
14.10.2016
09:33:22
По этому реплики должно быть как минимум две. Когда синхронная помрет, другая станет синхронной и запись будет возможна дальше. Умершую реплику можно поднять как асинхронную после разбора...

Vadim
14.10.2016
09:42:52
1 мастер и 2 слейва с репликой, обе в синхронном режиме

или 1 в синхронном другая в асинхронном?

Sergey
14.10.2016
09:52:21
одна в синхронном, другая в асинхронном

Vadim
14.10.2016
09:57:20
а в случае одного слейва в синхронном режиме, сложно в случае сбоя отменить реплику до починки?

Sergey
14.10.2016
09:58:02
не сложно, но это ведь простой будет пока админ не проснется....

и потом может получится так, что починка затянется на столько, что придется делать полную переналивку реплики.

Vadim
14.10.2016
09:59:39
ясно, ну это надо оценить стоимость +1 сервера и стоимость дополнительного простоя видимо

Sergey
14.10.2016
10:00:30
ну и для переключений посмотрите в сторону pacemaker

оно много умеет делать автоматически

Fike
14.10.2016
10:03:49
У нас как-то автоматический сетап с пеймейкером и коросинком прибил половину базы на mysql.

Sergey
14.10.2016
10:04:38
и такое бывает, к сожалению. По этому автоматике нужно с осторожностью доверять такие вещи.

Fike
14.10.2016
10:04:53
Расследовать тот случай не смогли, но мой небольшой опыт говорит о том, что с ним без должного опыта (как минимум) лучше все-таки не связываться.

dmitriy
14.10.2016
10:05:40
держите 2 реплики всегда, это полезно. Случай с одной репликой похож на RAID 5

Vadim
14.10.2016
10:06:28
спасибо, вариант 1 мастер, 1 слейв синхронный, 1 слейв асинхронный пока оптимальным видится значит

а масштабировать по производительности такой вариант помимо чтения, всякой аналитики и бэкапов со слейвов, как-нибудь еще можно?

Google
Vadim
14.10.2016
10:10:34
бэкапить синхронный слейв наверно можно вместо мастера

Sergey
14.10.2016
10:11:56
можно и асинхронный бекапить

отчеты с тоже с асинхронного можно строить

ros
14.10.2016
10:14:10
с отчетам не будет ругаться что уже неактуальные данные?

Sergey
14.10.2016
10:14:48
ну отчеты разные бывают. например анализ продаж за прошлый год, не требует все самые свежие данные.

Vadim
14.10.2016
10:21:00
а несколько серверов постгрес с одним общим хранилищем чтобы работали, и масштабировать, добавлять сервера в случае необходимости, в мануале об этом все пара строчек

Shared Disk Failover как настраиваются ноды постгреса для работы с одним хранилищем?

можно допустим мастер масштабировать по нодам постгреса на одном хранилище, а к мастеру 2 слейва одиночных для отказоусточивости

Sergey
14.10.2016
10:24:40
два постпастера на одном хранилище не запускается. Это файловер только.

или я отстал?

Admin
ERROR: S client not available

Sergey
14.10.2016
10:25:56
у оракла есть такое, что в одно хранилище смотрят сразу куча мастер-процессов, но они и меж собой как то общаются видимо....

ros
14.10.2016
10:26:12
вроде не отстали

Vadim
14.10.2016
10:28:40
https://postgrespro.ru/docs/postgresql/9.5/different-replication-solutions.html

ну написано

Отказоустойчивость на разделяемых дисках Отказоустойчивость на разделяемых дисках позволяет избежать избыточности синхронизации путём задействования только одной копии базы данных. Она использует единственный дисковый массив, который разделяется между несколькими серверами. Если основной сервер БД откажет, резервный сервер может подключиться и запустить базу данных, что позволит восстановить БД после аварии. Это обеспечивает быстрое переключение без потери данных.

хотя да написано, может подключиться и запустить базу, значит как в оракле нет кластера? одно хранилище - несколько серверов

Sergey
14.10.2016
10:30:32
Аналогово Oracle RAC нет

ros
14.10.2016
10:30:56
у оракла внешний арбитр транзакций наверное есть

в постгре пока к этому все идет

Google
Sergey
14.10.2016
10:31:38
да, там второй мастер опущен, пока первый работает

Vadim
14.10.2016
10:32:11
я вообще не видел нигде про аналог ораклового кластера, все обсуждения про мультимастер реплику, там у каждого сервера свое хранилище

Sergey
14.10.2016
10:32:33
и потом, сразу после запуска такой мастер нужно будет прогреть. С репликой в этом смысле прощще....

Vadim
14.10.2016
10:33:27
и потом, сразу после запуска такой мастер нужно будет прогреть. С репликой в этом смысле прощще....
ну да, он просто не нужен такой, масштабирования производительности не дает,а отказоусточивость репликой лучше реализовывается

Gleb
14.10.2016
10:59:53
не путайте oracle rac one node и полноценный RAC

rac позволяет держать множество активных инстансов с одной БД

архитектура - shared everything

никаких внешних менеджеров транзакций там нет

если интересно - почитайте про cache fusion и global cache service

согласен с товарищем выше - аналогов Oracle RAC нет

Anton
14.10.2016
11:03:39
оракл медленный, несекьюрный и у него тупой оптимизатор

Это все что надо знать про оракл

изыди Глеб ))

Gleb
14.10.2016
11:04:54
пошёл посыпать голову пеплом

Anton
14.10.2016
11:05:10
дадада, и вообще оракл раков в россии нет

Anton
14.10.2016
11:05:56
эт нам так говорили ))

и вообще один тарантул заменит все

а вы тут за постгрес

Alex
14.10.2016
11:06:24
тарантул добро, да

Anton
14.10.2016
11:06:27
/me пятница моде офф )

Gleb
14.10.2016
11:06:37
"Если совсем кратко, то Tarantool - это замена Oracle. Tarantool обрабатывает транзакции или аналитические запросы в десятки раз быстрее чем Oracle (или чем другие реляционные баз даных, например Postgres или MySQL)."

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