43
A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017

A PostgreSQL DBAs Toolbelt · 2017. 3. 26. · A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017. Fields of interest for DBAs ... wal-e-cloudoriented

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: A PostgreSQL DBAs Toolbelt · 2017. 3. 26. · A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017. Fields of interest for DBAs ... wal-e-cloudoriented

A PostgreSQL DBAs Toolbelt

Kaarel Moppel23.03.2017

Kaarel Moppel23.03.2017

Page 2: A PostgreSQL DBAs Toolbelt · 2017. 3. 26. · A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017. Fields of interest for DBAs ... wal-e-cloudoriented

Fields of interest for DBAs

▶ Setting up Postgres▶ Monitoring▶ Daily DBA tasks▶ Navigating the DB-land▶ Data integration▶ Developing▶ Scaling

Kaarel Moppel23.03.2017

Page 3: A PostgreSQL DBAs Toolbelt · 2017. 3. 26. · A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017. Fields of interest for DBAs ... wal-e-cloudoriented

Setting up Postgres

Kaarel Moppel23.03.2017

Page 4: A PostgreSQL DBAs Toolbelt · 2017. 3. 26. · A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017. Fields of interest for DBAs ... wal-e-cloudoriented

First stop before any tools

Tools are great but understanding the concepts is still moreimportant. Means provided by the Postgres project should be quitesufficient in half of the cases.

▶ Official documentation▶ Mailing lists▶ wiki.postgresql.org

Kaarel Moppel23.03.2017

Page 5: A PostgreSQL DBAs Toolbelt · 2017. 3. 26. · A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017. Fields of interest for DBAs ... wal-e-cloudoriented

pgtune

Reads postgresql.conf file and outputs a new, recommendedconfiguration based on your hardware and workload type (Web,OLTP, DW, mixed).

▶ Online version available - http://pgtune.leopard.in.ua/More hints about tuning:

▶ https://wiki.postgresql.org/wiki/Performance_Optimization▶ https://wiki.postgresql.org/wiki/Category:Benchmarking

Kaarel Moppel23.03.2017

Page 6: A PostgreSQL DBAs Toolbelt · 2017. 3. 26. · A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017. Fields of interest for DBAs ... wal-e-cloudoriented

pgbench

Standard tool for quick hardware benchmarking. Bundeled withserver binaries.

▶ Measures throughput in terms of TPS▶ TPC-B like simple banking schema▶ Custom workloads▶ Foreign keys for more realistic numbers▶ Fillfactor

Kaarel Moppel23.03.2017

Page 7: A PostgreSQL DBAs Toolbelt · 2017. 3. 26. · A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017. Fields of interest for DBAs ... wal-e-cloudoriented

pgbench-tools

A wrapper around pgbench to run test sets with differentscale/concurrency levels and provides nice summaries/graphs

▶ Good for finding out the tipping point for concurrent users orcache ratio

▶ Would be even more useful if one could add the dimension ofpostgresql.conf settings

Kaarel Moppel23.03.2017

Page 8: A PostgreSQL DBAs Toolbelt · 2017. 3. 26. · A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017. Fields of interest for DBAs ... wal-e-cloudoriented

Backups

▶ wal-e - cloud oriented▶ pgbarman - incremental backup, continous WAL streaming▶ pgbackrest - incremental / differential backups, geared for

speed and >TB DBs

Kaarel Moppel23.03.2017

Page 9: A PostgreSQL DBAs Toolbelt · 2017. 3. 26. · A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017. Fields of interest for DBAs ... wal-e-cloudoriented

Monitoring (ad hoc)

Kaarel Moppel23.03.2017

Page 10: A PostgreSQL DBAs Toolbelt · 2017. 3. 26. · A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017. Fields of interest for DBAs ... wal-e-cloudoriented

Unix/Linux tooling

Get acquainted with some as not all are available on all platforms -https://wiki.postgresql.org/wiki/Performance_Analysis_Tools

▶ top / htop▶ iotop / dstat

Kaarel Moppel23.03.2017

Page 11: A PostgreSQL DBAs Toolbelt · 2017. 3. 26. · A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017. Fields of interest for DBAs ... wal-e-cloudoriented

pg_activity

A top like application for PostgreSQL server activity monitoring.Works both locally and remotely.

▶ Blocked/blocking queries view▶ Terminating backends possible

Kaarel Moppel23.03.2017

Page 12: A PostgreSQL DBAs Toolbelt · 2017. 3. 26. · A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017. Fields of interest for DBAs ... wal-e-cloudoriented

pg_view

Activity view utility with very detailed system information.▶ Mainly for “on the server” usage▶ Linux only, but very lightweight▶ Out-of-disk estimate alert▶ Different output formats

Kaarel Moppel23.03.2017

Page 13: A PostgreSQL DBAs Toolbelt · 2017. 3. 26. · A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017. Fields of interest for DBAs ... wal-e-cloudoriented

pgcenter

Command line monitoring/management tool that does almosteverything.

▶ “top” features▶ pg_stat_* monitoring▶ session termination▶ server config editing▶ logfile access

Kaarel Moppel23.03.2017

Page 14: A PostgreSQL DBAs Toolbelt · 2017. 3. 26. · A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017. Fields of interest for DBAs ... wal-e-cloudoriented

pg_stat_statements

A “must have” for quick problem detection. Enables ordering ofoften executed queries by avg. runtime, total time, blockswritten/read, IO time.

▶ Contrib extension▶ Performance penalty of couple of percent▶ Somewhat secure

Kaarel Moppel23.03.2017

Page 15: A PostgreSQL DBAs Toolbelt · 2017. 3. 26. · A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017. Fields of interest for DBAs ... wal-e-cloudoriented

Monitoring frameworks

Kaarel Moppel23.03.2017

Page 16: A PostgreSQL DBAs Toolbelt · 2017. 3. 26. · A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017. Fields of interest for DBAs ... wal-e-cloudoriented

Generic monitoring frameworks

Plugins to generic monitoring frameworks and APM providers -Nagios, Icinga, Munin, New Relic, AppDynamics, etc.

▶ Comes built in with cloud providers like AWS RDS and Heroku▶ Most commercial providers have black-box approach

Kaarel Moppel23.03.2017

Page 17: A PostgreSQL DBAs Toolbelt · 2017. 3. 26. · A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017. Fields of interest for DBAs ... wal-e-cloudoriented

check_postgres

A Perl script with around 50 checks (actions) to answer mostimportant questions around Postgres - is DB answering, how manysessions, longest/idle tx time, last checkpoint, bloat percentage,etc.

▶ Integrates with Nagios and some other general systemsmonitoring frameworks

▶ Knows quite a bit about Postgres ecosystem (PgBouncer,PgAgent, Slony)

▶ Can be well used from command line for ad hoc stuff

Kaarel Moppel23.03.2017

Page 18: A PostgreSQL DBAs Toolbelt · 2017. 3. 26. · A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017. Fields of interest for DBAs ... wal-e-cloudoriented

check_pgactivity

Nagios plugin. Similar to check_postgres but with less checks(services).

▶ Actively maintained

Kaarel Moppel23.03.2017

Page 19: A PostgreSQL DBAs Toolbelt · 2017. 3. 26. · A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017. Fields of interest for DBAs ... wal-e-cloudoriented

PgObserver

Remote data collector daemon + webapp for graphing / tables.▶ Almost all of pg_stat_* + some custom data gatherers▶ Developer friendly - no extensions or special rights, Vagrant /

Docker

Kaarel Moppel23.03.2017

Page 20: A PostgreSQL DBAs Toolbelt · 2017. 3. 26. · A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017. Fields of interest for DBAs ... wal-e-cloudoriented

pgwatch2

A new tool from Cybertec with minimalistic but flexible approach,relies heavily on state-of-the-art components like Grafana andInfluxDB.

▶ Almost all of pg_stat_* + some custom data gatherers▶ User extensible metrics collection with SQL▶ Developer friendly - no extensions or special rights, Docker

first

Kaarel Moppel23.03.2017

Page 21: A PostgreSQL DBAs Toolbelt · 2017. 3. 26. · A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017. Fields of interest for DBAs ... wal-e-cloudoriented

pghero

Health checks, suggested indexes, and more▶ Seems to be the most popular Postgres monitoring project on

Github▶ Thresholds and limits hardcoded▶ Docker for quick testing

Kaarel Moppel23.03.2017

Page 22: A PostgreSQL DBAs Toolbelt · 2017. 3. 26. · A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017. Fields of interest for DBAs ... wal-e-cloudoriented

Tools for common tasks

Kaarel Moppel23.03.2017

Page 23: A PostgreSQL DBAs Toolbelt · 2017. 3. 26. · A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017. Fields of interest for DBAs ... wal-e-cloudoriented

Snippets

There’s a ton of snippets from Postgresql Wiki to help with dailywork. Might not always be 100% up to date but mostly nicelycommented.

▶ Deleting duplicates▶ Fixing sequences▶ Finding / deleting dependencies▶ Invalid / unused / duplicate indexes▶ Unindexed foreign keys▶ Bloat

Kaarel Moppel23.03.2017

Page 24: A PostgreSQL DBAs Toolbelt · 2017. 3. 26. · A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017. Fields of interest for DBAs ... wal-e-cloudoriented

Other script-sets

Activity, biggest tables, indexing problems, bloat, locking, foreignkeys, …

▶ https://github.com/pgexperts/pgx_scripts▶ https://github.com/dataegret/pg-utils

Kaarel Moppel23.03.2017

Page 25: A PostgreSQL DBAs Toolbelt · 2017. 3. 26. · A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017. Fields of interest for DBAs ... wal-e-cloudoriented

Log analyzing

Kaarel Moppel23.03.2017

Page 26: A PostgreSQL DBAs Toolbelt · 2017. 3. 26. · A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017. Fields of interest for DBAs ... wal-e-cloudoriented

Standard Linux tools

▶ grep▶ awk

Kaarel Moppel23.03.2017

Page 27: A PostgreSQL DBAs Toolbelt · 2017. 3. 26. · A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017. Fields of interest for DBAs ... wal-e-cloudoriented

pgBadger

Number one log analyzer for Postgres producing nice HTML pageswith graphs. Dozens and dozens of options.

▶ Slowest/most frequent/most time consuming queries▶ Sessions / locking / temp files▶ TPS / query type distribution▶ autodetects “syslog” log format▶ parallel/incremental processing▶ PgBouncer logfiles support

Kaarel Moppel23.03.2017

Page 28: A PostgreSQL DBAs Toolbelt · 2017. 3. 26. · A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017. Fields of interest for DBAs ... wal-e-cloudoriented

Other approaches

▶ Cloud provider plugins - Loggly, Splunk▶ redislog extension for the ELK stack▶ Importing directly into Postgres tables (CVS format)▶ Exposing logfiles via file_fdw

Kaarel Moppel23.03.2017

Page 29: A PostgreSQL DBAs Toolbelt · 2017. 3. 26. · A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017. Fields of interest for DBAs ... wal-e-cloudoriented

Indexing & bloat

Kaarel Moppel23.03.2017

Page 30: A PostgreSQL DBAs Toolbelt · 2017. 3. 26. · A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017. Fields of interest for DBAs ... wal-e-cloudoriented

Indexing

▶ Snippetes from wiki.postgresql.org▶ hypopg - extension for building “hypothetical” indexes▶ pghero - index suggestions. Uses query parser from

https://github.com/lfittl/pg_query

Kaarel Moppel23.03.2017

Page 31: A PostgreSQL DBAs Toolbelt · 2017. 3. 26. · A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017. Fields of interest for DBAs ... wal-e-cloudoriented

Bloat

Kaarel Moppel23.03.2017

Page 32: A PostgreSQL DBAs Toolbelt · 2017. 3. 26. · A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017. Fields of interest for DBAs ... wal-e-cloudoriented

Spotting bloat

▶ pgstattuple extension▶ Snippets from wiki.postgresql.org▶ check_pgactivity -

https://github.com/OPMDG/check_pgactivity▶ Somekind of indicators from most monitoring tools

Kaarel Moppel23.03.2017

Page 33: A PostgreSQL DBAs Toolbelt · 2017. 3. 26. · A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017. Fields of interest for DBAs ... wal-e-cloudoriented

Removing bloat

▶ VACUUM FULL / CLUSTER▶ pg_repack▶ pg_squeeze▶ pgcompacttable

Kaarel Moppel23.03.2017

Page 34: A PostgreSQL DBAs Toolbelt · 2017. 3. 26. · A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017. Fields of interest for DBAs ... wal-e-cloudoriented

Working with data

Kaarel Moppel23.03.2017

Page 35: A PostgreSQL DBAs Toolbelt · 2017. 3. 26. · A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017. Fields of interest for DBAs ... wal-e-cloudoriented

Navigating Postgres DBs

▶ psql▶ .psqlrc (per version)▶ variable interpolation▶ crosstab

▶ libpq service files (~/.pg_service.conf)▶ psql_switch

▶ pgcli▶ widely popular and actively developed▶ code completes also functions▶ chokes noticably on big datasets

▶ niceupdate▶ controlled chunk-by-chunk updates▶ CPU load and space checking

Kaarel Moppel23.03.2017

Page 36: A PostgreSQL DBAs Toolbelt · 2017. 3. 26. · A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017. Fields of interest for DBAs ... wal-e-cloudoriented

Navigating Postgres DBs graphically

▶ pgadmin3/4▶ DataGrip▶ SqlPad

▶ save and share queries + basic charting

Kaarel Moppel23.03.2017

Page 37: A PostgreSQL DBAs Toolbelt · 2017. 3. 26. · A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017. Fields of interest for DBAs ... wal-e-cloudoriented

Data integrations

▶ Foreign Data Wrappers▶ Your proprietary database / NoSQL store is most probably

already supported▶ https://wiki.postgresql.org/wiki/Foreign_data_wrappers

▶ cstore_fdw▶ pgloader - 1-click MySQL migrations, CSV▶ https://github.com/begriffs/postgrest▶ https://github.com/FRiCKLE/ngx_postgres

Kaarel Moppel23.03.2017

Page 38: A PostgreSQL DBAs Toolbelt · 2017. 3. 26. · A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017. Fields of interest for DBAs ... wal-e-cloudoriented

Helper tools for developers

▶ https://explain.depesz.com/▶ sqlparse - A non-validating SQL parser module for Python.

Supports plpgsql, tokenizing, extracting single statements,formatting with customizations.

▶ pgFormatter - https://github.com/darold/pgFormatter▶ pg_partman / pgslice▶ audit-trigger

Kaarel Moppel23.03.2017

Page 39: A PostgreSQL DBAs Toolbelt · 2017. 3. 26. · A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017. Fields of interest for DBAs ... wal-e-cloudoriented

Helper tools for developers

▶ plpgsql_check - extra validations for your sprocs▶ plprofiler - per line code coverage and performance info▶ pldebugger - step through code visually in PgAdmin▶ pgTap - unit testing for Postgres▶ sqitch - migration management

Kaarel Moppel23.03.2017

Page 40: A PostgreSQL DBAs Toolbelt · 2017. 3. 26. · A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017. Fields of interest for DBAs ... wal-e-cloudoriented

Architecture

Kaarel Moppel23.03.2017

Page 41: A PostgreSQL DBAs Toolbelt · 2017. 3. 26. · A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017. Fields of interest for DBAs ... wal-e-cloudoriented

Scaling

▶ PgBouncer▶ Foreign table inheritance▶ pgpool-II▶ PL/Proxy

Kaarel Moppel23.03.2017

Page 42: A PostgreSQL DBAs Toolbelt · 2017. 3. 26. · A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017. Fields of interest for DBAs ... wal-e-cloudoriented

Thank you!

Kaarel Moppel23.03.2017

Page 43: A PostgreSQL DBAs Toolbelt · 2017. 3. 26. · A PostgreSQL DBAs Toolbelt Kaarel Moppel 23.03.2017 Kaarel Moppel 23.03.2017. Fields of interest for DBAs ... wal-e-cloudoriented

Contact us

Cybertec Schönig & Schönig GmbHKaarel MoppelGröhrmühlgasse 26A-2700 Wiener Neustadt

www.postgresql-support.de

Follow us on Twitter: @PostgresSupport

Kaarel Moppel23.03.2017