Streaming replication in practice.
My slides about PostgreSQL Streaming Replication from PgConf 2016 Russia.
A key aspect of maintaining backup integrity is understanding data checksums. Without proper checksum validation, detecting data corruption becomes virtually impossible. Therefore, we will start with The…
Last Wednesday (September 11, 2024), PGDay UK took place in London. Some of my colleagues live in the area (or not too far away), so it was…
Recently, I had to address a support case where a user was struggling to perform Point-in-Time Recovery in his PostgreSQL cluster using streaming replication. We have already…
Introduction PgBouncer is a popular connection pooler for PostgreSQL that helps optimize database performance by reducing the number of open connections and improving overall efficiency. It’s widely…
Популярные темы семинаров:
В процессе Аудита проводится:
Настоящее предложение не является офертой.
Указанные условия, включая стоимость оказываемых услуг в рублях РФ, не являются офертой, и могут быть изменены в зависимости от согласованных в дальнейшем существенных условий договора и предпочтительной для клиента валюты платежа.
Работая с нами, вы получаете возможность использовать знания и опыт высококвалифицированных специалистов по PostgreSQL для оптимизации работы вашей БД, при этом не меняя состав вашей команды.
Приобретая пакет консалтинговых часов, вы можете обратиться к нам для решения как горящих, так и плановых задач, получения помощи в масштабировании БД и консультаций по архитектуре. Заявки на консультации принимаются с 09:00 по 18:00 МСК.
Указанные условия, включая стоимость оказываемых услуг в рублях РФ, не являются офертой, и могут быть изменены в зависимости от согласованных в дальнейшем существенных условий договора и предпочтительной для клиента валюты платежа.
Поддержка от Data Egret — это сочетание регулярных проверок (Health Checks), круглосуточная доступность команды DBA для ответа на аварийные обращения и решение рутинных задач по оптимизации работы баз данных, включая:
Базовый | Премиум | Enterprise |
До 10 серверов | До 40 серверов | До 100 серверов |
Чат, аварийный телефон | Чат, аварийный телефон | Чат, аварийный телефон |
до 10 часов работы DBA/месяц* | до 25 часов работы DBA/месяц* | до 60 часов работы DBA/месяц* |
SLA
проблема — до 1 ч., |
SLA
проблема — до 1 ч., |
SLA
проблема — до 1 ч., |
24/7 SLA на аварии — 1 ч. | 24/7 SLA на аварии — 1 ч. | 24/7 SLA на аварии — 30 мин |
Автоматические Health Check | Автоматические Health Check с рекомендациями от DBA | Индивидуальная проверка ваших БД нашими DBA |
Цена может варьировать в зависимости от индивидуальных требований клиента и обсуждается индивидуально. Настоящее предложение не является публичной офертой.*Возможно платное увеличение лимита часов на базовые работы.**При выработке лимита часов, включенных в пакет, дополнительные часы оплачиваются по дополнительному тарифу. По предварительной договоренности возможно увеличение лимита часов, включенных в пакет, по сниженному тарифу. Указанные условия, включая стоимость оказываемых услуг в рублях РФ, могут быть изменены в зависимости от согласованных в дальнейшем существенных условий договора и предпочтительной для клиента валюты платежа. Минимальная длительность контракта — 6 месяцев.
|
select case when setting::bigint < 90600 then 'Вы используете старую версию PostgreSQL, которая более не поддерживается сообществом.'||chr(10)|| 'Рекомендуем вам перейти на последнюю актуальную версию как можно скорее.' when setting::bigint < 100000 then 'Вы используете старую версию PostgreSQL, которая пока что поддерживается сообществом.'||chr(10)|| 'Рекомендуем вам перейти на последнюю актуальную версию.' when setting::bigint < 110000 then 'Вы используете достаточно современную версию PostgreSQL, которая активно поддерживается сообществом.'||chr(10)|| 'У вас все неплохо, но можно обновиться и на последнюю актуальную версию при возможности.' when setting::bigint < 140000 then 'Вы пользуетесь одной из самых последних версий PostgreSQL.'||chr(10)|| 'У вас все отлично.' else 'Вы используете версию которая находится в разработке,'||chr(10)|| 'если это production, то рекомендуем вам перейти на стабильную версию PostgreSQL.' end as "Проверка мажорной версии PostgreSQL" , case when setting::bigint between 130002 and 139999 or setting::bigint between 120006 and 129999 or setting::bigint between 110010 and 119999 or setting::bigint between 100015 and 109999 or setting::bigint between 90620 and 90699 then 'У вас стоит один из последних патчей PostgreSQL для вашей версии.'||chr(10)|| 'Похоже вы следите за обновлениями PostgreSQL. Это хороший факт.' else 'Похоже вы не обновляли PostgreSQL, после установки/последнего мажорного обновления, совсем.'||chr (10)|| 'Это плохо, рекомендуем вам обновиться до последней актуальной версии PostgreSQL.' end as "Проверка минорной версии PostgreSQL" , 'Актуальные версии на данный момент следующие, в порядке убывания актуальности:'||chr (10)|| '13.3, 12.7, 11.12, 10.17, 9.6.22' as "Список актуальных версий" from pg_settings where name = 'server_version_num';
SELECT (clock_timestamp() - xact_start) AS ts_age, state, pid, query FROM pg_stat_activity WHERE query ~ 'autovacuum' AND NOT pid=pg_backend_pid();
SELECT now()-pg_postmaster_start_time() "Uptime", now()-stats_reset "Minutes since stats reset", round(100.0*checkpoints_req/checkpoints,1) "Forced checkpoint ratio (%)", round(min_since_reset/checkpoints,2) "Minutes between checkpoints", round(checkpoint_write_time::numeric/(checkpoints*1000),2) "Average write time per checkpoint (s)", round(checkpoint_sync_time::numeric/(checkpoints*1000),2) "Average sync time per checkpoint (s)", round(total_buffers/pages_per_mb,1) "Total MB written", round(buffers_checkpoint/(pages_per_mb*checkpoints),2) "MB per checkpoint", round(buffers_checkpoint/(pages_per_mb*min_since_reset*60),2) "Checkpoint MBps" FROM ( SELECT checkpoints_req, checkpoints_timed + checkpoints_req checkpoints, checkpoint_write_time, checkpoint_sync_time, buffers_checkpoint, buffers_checkpoint + buffers_clean + buffers_backend total_buffers, stats_reset, round(extract('epoch' from now() - stats_reset)/60)::numeric min_since_reset, (1024.0 * 1024 / (current_setting('block_size')::numeric))pages_per_mb FROM pg_stat_bgwriter ) bg
Запрос покажет статистику по контрольным точкам с момента, когда она в последний раз обнулялась.
Важными показателями будут минуты между контрольными точками и объем записываемой информации.
После идентификации запроса необходимо посмотреть его план. Скопируйте код ниже, который добавит `EXPLAIN (analyze)` в начало вашего запроса, потом запустите запрос.
Будьте осторожны с запросами, которые меняют данные т.к. они будут исполнены!
explain (analyze) select 10/2; /* Вместо select 10/2 вставьте пожалуйста ваш запрос который работает медленно */
При выводе вы получите два параметра — время планирования и время исполнения запроса, например:
Planning time: 3667.361 ms
Execution time: 1.652 ms
В рамках настоящей Политики под информацией Пользователя понимаются:
Информацию Пользователя Оператор может использовать в следующих целях:
Оператор вправе передать информацию Пользователя третьим лицам в следующих случаях:
При обработке информации, являющейся персональными данными Пользователей, Оператор руководствуется Федеральным законом № 152-ФЗ «О персональных данных».