PostgreSQL 16 Administration Cookbook

Book description

Written by a team of well-known PostgreSQL experts, this new edition will cover all the latest updates of PostgreSQL 16 including 12+ new and improved recipes on logging, monitoring, security and high-performance Purchase of the print or Kindle book includes a free PDF eBook

Key Features

  • Skill-up as a database administrator by achieving improved query performance, backup, and recovery management, setting up replication and so on
  • Get to grips with the essentials of database management with a recipe-based approach using the latest features of PostgreSQL 16
  • New and updated recipes on crucial PostgreSQL topics like Monitoring, Logging, Scalability and so on

Book Description

PostgreSQL has seen a huge increase in its customer base in the past few years and is becoming one of the go-to solutions for anyone who has a database-specific challenge. This PostgreSQL book touches on all the fundamentals of Database Administration in a problem-solution format. It is intended to be the perfect desk reference guide.

This new edition focuses on recipes based on the new PostgreSQL 16 release. The additions include handling complex batch loading scenarios with the SQL MERGE statement, security improvements, running Postgres on Kubernetes or with TPA and Ansible, and more. This edition also focuses on certain performance gains, such as query optimization, and the acceleration of specific operations, such as sort. It will help you understand roles, ensuring high availability, concurrency, and replication. It also draws your attention to aspects like validating backups, recovery, monitoring, and scaling aspects. This book will act as a one-stop solution to all your real-world database administration challenges.

By the end of this book, you will be able to manage, monitor, and replicate your PostgreSQL 16 database for efficient administration and maintenance with the best practices from experts.

What you will learn

  • Discover how to improve batch data loading with the SQL MERGE statement
  • Use logical replication to apply large transactions in parallel
  • Improve your back up and recovery performance with server-side compression
  • Tackle basic to high-end and real-world PostgreSQL challenges with practical recipes
  • Monitor and fine-tune your database with ease
  • Learn to navigate the newly introduced features of PostgreSQL 16
  • Efficiently secure your PostgreSQL database with new and updated features

Who this book is for

This Postgres book is for database administrators, data architects, database developers, and anyone with an interest in planning and running live production databases using PostgreSQL 14. Those looking for hands-on solutions to any problem associated with PostgreSQL 14 administration will also find this book useful. Some experience with handling PostgreSQL databases will help you to make the most out of this book, however, it is a useful resource even if you are just beginning your Postgres journey

Table of contents

  1. Preface
    1. Who this book is for
    2. What this book covers
    3. To get the most out of this book
    4. Get in touch
  2. First Steps
    1. Introducing PostgreSQL 16
      1. What makes PostgreSQL different?
        1. Robustness
        2. Security
        3. Ease of use
        4. Extensibility
        5. Performance and concurrency
        6. Scalability
        7. SQL and NoSQL data models
        8. Popularity
        9. Commercial support
        10. Research and development funding
    2. How to get PostgreSQL
      1. How to do it...
      2. How it works...
      3. There’s more…
    3. Connecting to the PostgreSQL server
      1. Getting ready
      2. How to do it...
      3. How it works…
      4. There’s more…
      5. See also
    4. Enabling access for network/remote users
      1. How to do it…
      2. How it works…
      3. There’s more…
      4. See also
    5. Using the pgAdmin 4 GUI tool
      1. How to do it…
      2. How it works…
      3. See also
    6. Using the psql query and scripting tool
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
      5. See also
    7. Changing your password securely
      1. How to do it…
      2. How it works…
    8. Avoiding hardcoding your password
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    9. Using a connection service file
      1. How to do it…
      2. How it works…
      3. There’s more...
    10. Troubleshooting a failed connection
      1. How to do it…
      2. There’s more…
    11. PostgreSQL in the cloud
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    12. PostgreSQL with Kubernetes
      1. Getting ready
      2. How to do it...
      3. How it works…
      4. There’s more...
    13. PostgreSQL with TPA
      1. Getting ready
      2. How to do it...
      3. There’s more
  3. Exploring the Database
    1. What type of server is this?
      1. How to do it…
      2. There’s more...
    2. What version is the server?
      1. How to do it…
      2. How it works…
      3. There’s more…
    3. What is the server uptime?
      1. How to do it…
      2. How it works…
      3. See also
    4. Locating the database server files
      1. Getting ready
      2. How to do it...
      3. How it works...
      4. There’s more…
    5. Locating the database server’s message log
      1. Getting ready
      2. How to do it...
      3. How it works...
      4. There’s more...
    6. Locating the database’s system identifier
      1. Getting ready
      2. How to do it…
      3. How it works…
    7. Listing databases on the database server
      1. How to do it…
      2. How it works...
      3. There’s more...
    8. How many tables are there in a database?
      1. How to do it...
      2. How it works…
      3. There’s more…
    9. How much disk space does a database use?
      1. How to do it...
      2. How it works...
    10. How much memory does a database currently use?
      1. How to do it…
      2. How it works…
    11. How much disk space does a table use?
      1. How to do it…
      2. How it works…
      3. There’s more…
    12. Which are my biggest tables?
      1. How to do it...
      2. How it works…
    13. How many rows are there in a table?
      1. How to do it…
      2. How it works...
    14. Quickly estimating the number of rows in a table
      1. How to do it…
      2. How it works…
      3. There’s more…
    15. Listing extensions in this database
      1. How to do it…
      2. How it works…
      3. There’s more…
      4. See also
    16. Understanding object dependencies
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
  4. Server Configuration
    1. Read the fine manual (RTFM)
      1. How to do it…
      2. How it works…
      3. There’s more…
    2. Planning a new database
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    3. Setting the configuration parameters for the database server
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    4. Setting the configuration parameters in your programs
      1. How to do it…
      2. How it works…
      3. There’s more…
    5. Finding the configuration settings for your session
      1. How to do it…
      2. How it works…
    6. Finding parameters with non-default settings
      1. How to do it…
      2. How it works...
      3. There’s more...
    7. Setting parameters for particular groups of users
      1. How to do it…
      2. How it works…
    8. A basic server configuration checklist
      1. Getting ready
      2. How to do it…
      3. There’s more…
    9. Adding an external module to PostgreSQL
      1. Getting ready
      2. How to do it…
        1. Installing modules using a software installer
        2. Installing modules from PGXN
        3. Installing modules from source code
      3. How it works...
    10. Using an installed module/extension
      1. Getting ready
      2. How to do it…
      3. How it works...
    11. Managing installed extensions
      1. How to do it…
      2. How it works…
      3. There’s more…
  5. Server Control
    1. An overview of controlling the database server
    2. Starting the database server manually
      1. Getting ready
      2. How to do it…
      3. How it works…
    3. Stopping the server safely and quickly
      1. How to do it…
      2. How it works…
      3. See also
    4. Stopping the server in an emergency
      1. How to do it…
      2. How it works…
    5. Reloading server configuration files
      1. How to do it…
      2. How it works…
      3. There’s more…
    6. Restarting the server quickly
      1. How to do it…
      2. There’s more…
    7. Preventing new connections
      1. How to do it…
      2. How it works…
    8. Restricting users to only one session each
      1. How to do it…
      2. How it works…
    9. Pushing users off the system
      1. How to do it…
      2. How it works…
    10. Deciding on a design for multitenancy
      1. How to do it…
      2. How it works…
    11. Using multiple schemas
      1. Getting ready
      2. How to do it…
      3. How it works…
    12. Giving users their own private databases
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
      5. See also
    13. Running multiple servers on one system
      1. Getting ready
      2. How to do it…
      3. How it works…
    14. Setting up a connection pool
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    15. Accessing multiple servers using the same host and port
      1. Getting ready
      2. How to do it…
      3. There’s more…
    16. Running multiple PgBouncer on the same port to leverage multiple cores
      1. Getting ready
      2. How to do it…
      3. How it works…
  6. Tables and Data
    1. Choosing good names for database objects
      1. Getting ready
      2. How to do it…
      3. There’s more…
    2. Handling objects with quoted names
      1. Getting ready
      2. How to do it...
      3. How it works…
      4. There’s more…
    3. Identifying and removing duplicates
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    4. Preventing duplicate rows
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more...
        1. Duplicate indexes
        2. Uniqueness without indexes
        3. A real-world example – IP address range allocation
        4. A real-world example – a range of time
    5. Finding a unique key for a set of data
      1. Getting ready
      2. How to do it…
      3. How it works…
    6. Generating test data
      1. How to do it...
      2. How it works…
      3. There’s more…
      4. See also
    7. Randomly sampling data
      1. How to do it…
      2. How it works...
    8. Loading data from a spreadsheet
      1. Getting ready
      2. How to do it...
      3. How it works...
      4. There’s more...
    9. Loading data from flat files
      1. Getting ready
      2. How to do it...
      3. How it works…
      4. There’s more…
    10. Making bulk data changes using server-side procedures with transactions
      1. Getting ready
      2. How to do it…
      3. There’s more…
    11. Dealing with large tables with table partitioning
      1. How to do it…
      2. How it works…
      3. There’s more…
    12. Finding good candidates for partition keys
      1. Getting ready
      2. How to do it…
      3. There’s more…
    13. Consolidating data with MERGE
      1. Getting ready
      2. How to do it…
      3. There’s more...
    14. Deciding when to use JSON data types
      1. Getting ready
      2. How to do it…
        1. Example: moving sparse columns to JSON
        2. Example: expose JSON data using a view
      3. There’s more…
  7. Security
    1. An overview of PostgreSQL security
      1. Typical user roles
    2. The PostgreSQL superuser
      1. How to do it…
      2. How it works…
      3. There’s more…
        1. Other superuser-like attributes
      4. See also
    3. Revoking user access to tables
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
        1. Database creation scripts
        2. Default search path
        3. Securing views
    4. Granting user access to a table
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    5. Granting user access to specific columns
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    6. Granting user access to specific rows
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    7. Creating a new user
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    8. Temporarily preventing a user from connecting
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
        1. Limiting the number of concurrent connections by a user
      5. Revoking a user’s database access
      6. How it works…
        1. Forcing NOLOGIN users to disconnect
    9. Removing a user without dropping their data
      1. Getting ready
      2. How to do it…
      3. How it works…
    10. Checking whether all users have a secure password
      1. How to do it…
      2. How it works…
    11. Giving limited superuser powers to specific users
      1. Getting ready
      2. How to do it…
        1. Assigning backup privileges to a user
      3. How it works…
      4. There’s more…
    12. Auditing database access
      1. Getting ready
      2. Auditing access
      3. Auditing SQL statements
      4. Auditing table access
      5. Managing the audit log
      6. Auditing data changes
    13. Always knowing which user is logged in
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
        1. Not inheriting user attributes
    14. Integrating with LDAP
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
        1. Setting up the client to use LDAP
        2. Replacement for the User Name Map feature
      5. See also
    15. Connecting using encryption (SSL / GSSAPI)
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
        1. Getting the SSL key and certificate
        2. Setting up a client to use SSL
        3. Checking server authenticity
    16. Using SSL certificates to authenticate
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
        1. Avoiding duplicate SSL connection attempts
        2. Using multiple client certificates
        3. Using the client certificate to select a database user
      5. See also
    17. Mapping external usernames to database roles
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    18. Using column-level encryption
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
        1. For really sensitive data
        2. For really, really, really sensitive data
      5. See also
    19. Setting up cloud security using predefined roles
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
  8. Database Administration
    1. Writing a script that either succeeds entirely or fails entirely
      1. How to do it…
      2. How it works…
      3. There’s more…
    2. Writing a psql script that exits on the first error
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    3. Using psql variables
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    4. Placing query output into psql variables
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    5. Writing a conditional psql script
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    6. Investigating a psql error
      1. Getting ready
      2. How to do it…
      3. There’s more…
    7. Setting the psql prompt with useful information
      1. Getting ready
      2. How to do it…
      3. How it works…
    8. Using pgAdmin for DBA tasks
      1. Getting ready
      2. How to do it…
      3. How it works...
      4. There’s more…
    9. Scheduling jobs for regular background execution
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    10. Performing actions on many tables
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    11. Adding/removing columns on a table
      1. How to do it…
      2. How it works…
      3. There’s more…
    12. Changing the data type of a column
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    13. Changing the definition of an enum data type
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    14. Adding a constraint concurrently
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    15. Adding/removing schemas
      1. How to do it…
      2. There’s more…
        1. Using schema-level privileges
    16. Moving objects between schemas
      1. How to do it…
      2. How it works…
      3. There’s more…
    17. Adding/removing tablespaces
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
        1. Putting pg_wal on a separate device
        2. Tablespace-level tuning
    18. Moving objects between tablespaces
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    19. Accessing objects in other PostgreSQL databases
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    20. Accessing objects in other foreign databases
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    21. Making views updatable
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    22. Using materialized views
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    23. Using GENERATED data columns
      1. How to do it…
      2. How it works…
      3. There’s more…
    24. Using data compression
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
  9. Monitoring and Diagnosis
    1. Cloud-native monitoring
    2. Providing PostgreSQL information to monitoring tools
      1. Finding more information about generic monitoring tools
    3. Real-time viewing using pgAdmin
      1. Getting ready
      2. How to do it…
    4. Monitoring the PostgreSQL message log
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    5. Checking whether a user is connected
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    6. Checking whether a computer is connected
      1. How to do it…
      2. There’s more…
    7. Repeatedly executing a query in psql
      1. How to do it…
      2. There’s more…
    8. Checking which queries are running
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
        1. Catching queries that only run for a few milliseconds
        2. Watching the longest queries
        3. Watching queries from ps
      5. See also
    9. Monitoring the progress of commands
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    10. Checking which queries are active or blocked
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    11. Knowing who is blocking a query
      1. Getting ready
      2. How to do it…
      3. How it works…
    12. Killing a specific session
      1. How to do it…
      2. How it works…
      3. There’s more…
        1. Using statement_timeout to clean up queries that take too long to run
        2. Killing idle in-transaction sessions
    13. Knowing whether anybody is using a specific table
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more...
    14. Knowing when a table was last used
      1. Getting ready
      2. How to do it…
      3. How it works...
    15. Monitoring I/O statistics
      1. Getting ready
      2. How to do it...
      3. How it works...
      4. There’s more…
    16. Usage of disk space by temporary data
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
        1. Finding out whether a temporary file is in use anymore
        2. Logging temporary file usage
    17. Understanding why queries slow down
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
        1. Do queries return significantly more data than they did earlier?
        2. Do queries also run slowly when they run alone?
        3. Is the second run of the same query also slow?
        4. Table and index bloat
      5. See also
    18. Analyzing the real-time performance of your queries
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    19. Tracking important metrics over time
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
  10. Regular Maintenance
    1. Controlling automatic database maintenance
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
      5. See also
    2. Avoiding auto-freezing
      1. How to do it…
    3. Removing issues that cause bloat
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    4. Actions for heavy users of temporary tables
      1. How to do it…
      2. How it works…
    5. Identifying and fixing bloated tables and indexes
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    6. Monitoring and tuning a vacuum
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    7. Maintaining indexes
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    8. Finding unused indexes
      1. How to do it…
      2. How it works…
    9. Carefully removing unwanted indexes
      1. Getting ready
      2. How to do it…
      3. How it works…
    10. Planning maintenance
      1. How to do it…
      2. How it works…
      3. There’s more…
  11. Performance and Concurrency
    1. Finding slow SQL statements
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    2. Finding out what makes SQL slow
      1. Getting ready
      2. How to do it…
      3. There’s more…
        1. Locking problems
        2. EXPLAIN options
        3. Not enough CPU power or disk I/O capacity for the current load
      4. See also
    3. Reducing the number of rows returned
      1. How to do it…
      2. There’s more…
    4. Simplifying complex SQL queries
      1. Getting ready
      2. How to do it…
      3. There’s more…
        1. Using materialized views
        2. Using set-returning functions for some parts of queries
    5. Speeding up queries without rewriting them
      1. How to do it…
        1. Increasing work_mem
        2. Setting recursive_worktable_factor
        3. More ideas with indexes
      2. There’s more…
        1. Time-series partitioning
        2. Using a view that contains TABLESAMPLE
        3. In case of many updates, set fillfactor on the table
        4. Rewriting the schema – a more radical approach
    6. Discovering why a query is not using an index
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    7. Forcing a query to use an index
      1. Getting ready
      2. How to do it…
      3. There’s more…
    8. Using parallel query
      1. How to do it…
      2. How it works…
    9. Using Just-In-Time (JIT) compilation
      1. Getting ready
      2. How it works…
    10. Creating time-series tables using partitioning
      1. How to do it…
      2. How it works…
      3. There’s more…
    11. Using optimistic locking to avoid long lock waits
      1. How to do it…
      2. How it works…
      3. There’s more…
    12. Reporting performance problems
      1. How to do it…
      2. There’s more…
  12. Backup and Recovery
    1. Understanding and controlling crash recovery
      1. How to do it…
      2. How it works…
      3. There’s more…
    2. Planning your backups
      1. How to do it…
      2. There’s more…
    3. Hot logical backup of one database
      1. How to do it…
      2. How it works…
      3. There’s more…
      4. See also
    4. Hot logical backup of all databases
      1. How to do it…
      2. How it works…
      3. See also
    5. Backup of database object definitions
      1. How to do it…
      2. There’s more…
    6. A standalone hot physical backup
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    7. Hot physical backups with Barman
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    8. Recovery of all databases
      1. Getting ready
      2. How to do it…
        1. Logical – from the custom dump taken with pg_dump -F c
        2. Logical – from the script dump created by pg_dump -F p
        3. Logical – from the script dump created by pg_dumpall
        4. Physical – from a standalone backup
        5. Physical – with Barman
      3. How it works…
      4. There’s more…
    9. Recovery to a point in time
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
      5. See also
    10. Recovery of a dropped/damaged table
      1. How to do it…
        1. Logical – from the custom dump taken with pg_dump -F c
        2. Logical – from the script dump
        3. Physical
      2. How it works…
      3. See also
    11. Recovery of a dropped/damaged database
      1. How to do it…
        1. Logical – from the custom dump -F c
        2. Logical – from the script dump created by pg_dump
        3. Logical – from the script dump created by pg_dumpall
        4. Physical
    12. Extracting a logical backup from a physical one
      1. Getting ready
      2. How to do it…
      3. There’s more…
    13. Improving the performance of logical backup/recovery
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    14. Improving the performance of physical backup/recovery
      1. Getting ready
      2. How to do it...
      3. How it works…
      4. There’s more…
      5. See also
    15. Validating backups
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
  13. Replication and Upgrades
    1. Replication concepts
      1. Topics
      2. Basic concepts
      3. History and scope
      4. Practical aspects
      5. Data loss
      6. Single-master replication
      7. Multinode architectures
      8. Multi-master replication
      9. Other approaches to replication
    2. Replication best practices
      1. Getting ready
      2. How to do it…
      3. There’s more…
    3. Setting up streaming replication
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    4. Setting up streaming replication security
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    5. Hot Standby and read scalability
      1. Getting ready
      2. How to do it…
      3. How it works…
    6. Managing streaming replication
      1. Getting ready
      2. How to do it…
      3. There’s more…
      4. See also
    7. Using repmgr
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    8. Using replication slots
      1. Getting ready
      2. How to do it…
      3. There’s more…
      4. See also
    9. Setting up replication with TPA
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more...
    10. Setting up replication with CloudNativePG
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    11. Monitoring replication
      1. Getting ready
      2. How to do it…
      3. There’s more…
    12. Performance and synchronous replication (sync rep)
      1. Getting ready
      2. How to do it...
      3. How it works…
      4. There’s more…
    13. Delaying, pausing, and synchronizing replication
      1. Getting ready
      2. How to do it…
      3. There’s more…
      4. See also
    14. Logical replication
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    15. EDB Postgres Distributed
      1. Getting ready
      2. How to do it…
      3. How it works...
      4. There’s more…
    16. Archiving transaction log data
      1. Getting ready
      2. How to do it…
      3. There’s more...
      4. See also
    17. Upgrading minor releases
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more…
    18. Major upgrades in-place
      1. Getting ready
      2. How to do it…
      3. How it works…
      4. There’s more...
    19. Major upgrades online
      1. How to do it…
      2. How it works...
  14. Other Books You May Enjoy
  15. Index

Product information

  • Title: PostgreSQL 16 Administration Cookbook
  • Author(s): Gianni Ciolli, Boriss Mejías, Jimmy Angelakos, Vibhor Kumar, Simon Riggs
  • Release date: December 2023
  • Publisher(s): Packt Publishing
  • ISBN: 9781835460580