Book description
Master over 100 recipes to design and implement a highly available server with the advanced features of PostgreSQL
About This Book
Create a PostgreSQL cluster that stays online even when disaster strikes
Avoid costly downtime and data loss that can ruin your business
Updated to include the newest features introduced in PostgreSQL 9.6 with hands-on industry-driven recipes
Who This Book Is For
If you are a PostgreSQL DBA working on Linux systems who want a database that never gives up, this book is for you. If you've ever experienced a database outage, restored from a backup, spent hours trying to repair a malfunctioning cluster, or simply want to guarantee system stability, this book is definitely for you.
What You Will Learn
Protect your data with PostgreSQL replication and management tools such as Slony, Bucardo, pglogical, and WAL-E
Hardware planning to help your database run efficiently
Prepare for catastrophes and prevent them before they happen
Reduce database resource contention with connection pooling using pgpool and PgBouncer
Automate monitoring and alerts to visualize cluster activity using Nagios and collected
Construct a robust software stack that can detect and fix outages
Learn simple PostgreSQL High Availability with Patroni, or dive into the full power of Pacemaker.
In Detail
Databases are nothing without the data they store. In the event of a failure - catastrophic or otherwise - immediate recovery is essential. By carefully combining multiple servers, it's even possible to hide the fact a failure occurred at all.
From hardware selection to software stacks and horizontal scalability, this book will help you build a versatile PostgreSQL cluster that will survive crashes, resist data corruption, and grow smoothly with customer demand. It all begins with hardware selection for the skeleton of an efficient PostgreSQL database cluster. Then it's on to preventing downtime as well as troubleshooting some real life problems that administrators commonly face. Next, we add database monitoring to the stack, using collectd, Nagios, and Graphite. And no stack is complete without replication using multiple internal and external tools, including the newly released pglogical extension. Pacemaker or Raft consensus tools are the final piece to grant the cluster the ability to heal itself. We even round off by tackling the complex problem of data scalability.
This book exploits many new features introduced in PostgreSQL 9.6 to make the database more efficient and adaptive, and most importantly, keep it running.
Style and approach
This book contains practical recipes that will help the reader solve real world problems related to high availability in PostgreSQL. Every recipe is explained in detail, with relevant explanations, tips and tricks provided for quicker and easier understanding.
Table of contents
- Title Page
- Copyright
- Credits
- About the Author
- About the Reviewer
- www.Packtpub.com
- Customer Feedback
- Preface
- Hardware Planning
-
Handling and Avoiding Downtime
- Introduction
- Determining acceptable losses
- Configuration - getting it right the first time
- Configuration - managing scary settings
- Identifying important tables
- Defusing cache poisoning
- Exploring the magic of virtual IPs
- Terminating rogue connections
- Reducing contention with concurrent indexes
- Managing system migrations
- Managing software upgrades
- Mitigating the impact of hardware failure
- Applying bonus kernel tweaks
-
Pooling Resources
- Introduction
- Determining connection costs and limits
- Installing PgBouncer
- Configuring PgBouncer safely
- Connecting to PgBouncer
- Listing PgBouncer server connections
- Listing PgBouncer client connections
- Evaluating PgBouncer pool health
- Installing pgpool
- Configuring pgpool for master/slave mode
- Testing a write query on pgpool
- Swapping active nodes with pgpool
- Combining the power of PgBouncer and pgpool
-
Troubleshooting
- Introduction
- Performing triage
- Installing common statistics packages
- Evaluating the current disk performance with iostat
- Tracking I/O-heavy processes with iotop
- Viewing past performance with sar
- Correlating performance with dstat
- Interpreting /proc/meminfo
- Examining /proc/net/bonding/bond0
- Checking the pg_stat_activity view
- Checking the pg_stat_statements view
- Deciphering database locks
- Debugging with strace
- Logging checkpoints properly
-
Monitoring
- Introduction
- Figuring out what to monitor
- Installing and configuring Nagios
- Configuring Nagios to monitor a database host
- Enhancing Nagios with check_mk
- Getting to know check_postgres
- Installing and configuring collectd
- Adding a custom PostgreSQL monitor to collectd
- Installing and configuring Graphite
- Adding collectd data to Graphite
- Building a graph in Graphite
- Customizing a Graphite graph
- Creating a Graphite dashboard
-
Replication
- Introduction
- Deciding what to copy
- Securing the WAL stream
- Setting up a hot standby
- Upgrading to asynchronous replication
- Bulletproofing with synchronous replication
- Faking replication with pg_receivexlog
- Setting up Slony
- Copying a few tables with Slony
- Setting up Bucardo
- Copying a few tables with Bucardo
- Setting up Londiste
- Copying a few tables with Londiste
- Setting up pglogical
- Copying a few tables with pglogical
-
Replication Management Tools
- Introduction
- Deciding when to use third-party tools
- Installing and configuring Barman
- Backing up a database with Barman
- Restoring a database with Barman
- Installing and configuring OmniPITR
- Managing WAL files with OmniPITR
- Installing and configuring repmgr
- Cloning a database with repmgr
- Swapping active nodes with repmgr
- Installing and configuring walctl
- Cloning a database with walctl
- Managing WAL files with walctl
- Installing and configuring WAL-E
- Managing WAL files with WAL-E
-
Simple Stack
- Introduction
- Preparing systems for the stack
- Installing and configuring etcd
- Installing and configuring Patroni
- Installing and configuring HAProxy
- Performing a managed failover
- Using an outage to test availability
- Adding a node back into the cluster
- Adding additional nodes to the mix
- Replacing etcd with ZooKeeper
- Replacing etcd with Consul
- Upgrading while staying online
-
Advanced Stack
- Introduction
- Preparing systems for the stack
- Getting started with the Linux Volume Manager
- Adding block-level replication
- Incorporating the second LVM layer
- Verifying a DRBD filesystem
- Correcting a DRBD split brain
- Formatting an XFS filesystem
- Tweaking XFS performance
- Maintaining an XFS filesystem
- Using LVM snapshots
- Switching live stack systems
- Detaching a problematic node
-
Cluster Control
- Introduction
- Installing the necessary components
- Configuring Corosync
- Preparing startup services
- Starting with base options
- Adding DRBD to cluster management
- Adding LVM to cluster management
- Adding XFS to cluster management
- Adding PostgreSQL to cluster management
- Adding a virtual IP to hide the cluster
- Adding an e-mail alert
- Grouping associated resources
- Combining and ordering related actions
- Performing a managed resource migration
- Using an outage to test migration
-
Data Distribution
- Introduction
- Identifying horizontal candidates
- Setting up a foreign PostgreSQL server
- Mapping a remote user
- Creating a foreign table
- Using a foreign table in a query
- Optimizing foreign table access
- Transforming foreign tables into local tables
- Creating a scalable nextval replacement
- Building a sharding API
- Talking to the right shard
- Moving a shard to another server
Product information
- Title: PostgreSQL High Availability Cookbook - Second Edition
- Author(s):
- Release date: February 2017
- Publisher(s): Packt Publishing
- ISBN: 9781787125537
You might also like
book
PostgreSQL 12 High Availability Cookbook
A comprehensive guide to understanding key techniques for architecture and hardware planning, monitoring, replication, backups, and …
book
PostgreSQL High Performance Cookbook
Get to know effective ways to improve PostgreSQL’s performance and master query optimization, and database monitoring. …
book
PostgreSQL Replication - Second Edition
Leverage the power of PostgreSQL replication to make your databases more robust, secure, scalable, and fast …
book
PostgreSQL 13 Cookbook
Get to grips with building reliable, scalable, and maintainable database solutions for enterprises and production databases …