Beginning PostgreSQL on the Cloud Simplifying Database as a Service on Cloud Platforms — Baji Shaik Avinash Vallarapu Beginning PostgreSQL on the Cloud Simplifying Database as a Service on Cloud Platforms Baji Shaik Avinash Vallarapu Beginning PostgreSQL on the Cloud Baji Shaik Avinash Vallarapu Hyderabad, Andhra Pradesh, India Hyderabad, Andhra Pradesh, India ISBN-13 (pbk): 978-1-4842-3446-4 ISBN-13 (electronic): 978-1-4842-3447-1 https://doi.org/10.1007/978-1-4842-3447-1 Library of Congress Control Number: 2018937882 Copyright © 2018 by Baji Shaik, Avinash Vallarapu This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way, and transmission or information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter developed. Trademarked names, logos, and images may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, logo, or image we use the names, logos, and images only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to proprietary rights. While the advice and information in this book are believed to be true and accurate at the date of publication, neither the authors nor the editors nor the publisher can accept any legal responsibility for any errors or omissions that may be made. The publisher makes no warranty, express or implied, with respect to the material contained herein. Managing Director, Apress Media LLC: Welmoed Spahr Acquisitions Editor: Nikhil Karkal Development Editor:Matthew Moodie Coordinating Editor: Divya Modi Cover designed by eStudioCalamar. Cover image by Freepik (www.freepik.com) Distributed to the book trade worldwide by Springer Science+Business Media New York, 233 Spring Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail [email protected], or visit www.springeronline.com. Apress Media, LLC is a California LLC and the sole member (owner) is Springer Science + Business Media Finance Inc (SSBM Finance Inc). SSBM Finance Inc is a Delaware corporation. For information on translations, please e-mail [email protected], or visit http://www.apress. com/rights-permissions. Apress titles may be purchased in bulk for academic, corporate, or promotional use. eBook versions and licenses are also available for most titles. For more information, reference our Print and eBook Bulk Sales web page at http://www.apress.com/bulk-sales. Any source code or other supplementary material referenced by the author in this book is available to readers on GitHub via the book's product page, located at www.apress.com/978-1-4842-3446-4. For more detailed information, please visit http://www.apress.com/source-code. Printed on acid-free paper “Dedicated to our be-loved parents and family” Table of Contents About the Authors ������������������������������������������������������������������������������xiii About the Technical Reviewer ������������������������������������������������������������xv Acknowledgments ����������������������������������������������������������������������������xvii Introduction ���������������������������������������������������������������������������������������xix Chapter 1: Introduction to Databases in the Cloud �������������������������������1 What Is Database as a Service? ����������������������������������������������������������������������������1 Who Should Use DBaaS? ���������������������������������������������������������������������������������2 What Database Platform Does an Organization Need? �����������������������������������3 Features of DBaaS ������������������������������������������������������������������������������������������������7 Provisioning �����������������������������������������������������������������������������������������������������7 Administration �������������������������������������������������������������������������������������������������9 Monitoring �����������������������������������������������������������������������������������������������������10 High Availability ���������������������������������������������������������������������������������������������10 Scalability ������������������������������������������������������������������������������������������������������11 Security ���������������������������������������������������������������������������������������������������������11 Cloud Versus On-Premise Computing �����������������������������������������������������������������12 The Pros and Cons of Cloud and On-Premise Computing ������������������������������12 Should You Move Your Databases to the Cloud? �������������������������������������������������14 Cloud Vendors Available for PostgreSQL �������������������������������������������������������������15 Amazon ����������������������������������������������������������������������������������������������������������16 Rackspace �����������������������������������������������������������������������������������������������������18 Google Cloud �������������������������������������������������������������������������������������������������19 Microsoft Azure ���������������������������������������������������������������������������������������������21 v TTaabbllee ooff CCoonnTTeennTTss IaaS ���������������������������������������������������������������������������������������������������������������������23 Migrating to the Cloud ����������������������������������������������������������������������������������������24 Before Migrating to the Cloud �����������������������������������������������������������������������25 Planning Your Infrastructure on the Cloud �����������������������������������������������������26 Tools and Extensions �������������������������������������������������������������������������������������29 Summary�������������������������������������������������������������������������������������������������������������31 Chapter 2: PostgreSQL Architecture ���������������������������������������������������33 Key Features of PostgreSQL��������������������������������������������������������������������������������33 PostgreSQL Architecture �������������������������������������������������������������������������������������37 Components of Shared Memory �������������������������������������������������������������������������38 Shared Buffers �����������������������������������������������������������������������������������������������39 WAL Buffers ���������������������������������������������������������������������������������������������������39 Temp Buffers �������������������������������������������������������������������������������������������������39 CLOG (Commit LOG) Buffers ��������������������������������������������������������������������������39 Lock Space ����������������������������������������������������������������������������������������������������39 Other Memory Areas ��������������������������������������������������������������������������������������40 Utility Processes �������������������������������������������������������������������������������������������������40 Directory Structure����������������������������������������������������������������������������������������������42 Installation ����������������������������������������������������������������������������������������������������������44 Source Installation �����������������������������������������������������������������������������������������44 Binary Installation ������������������������������������������������������������������������������������������47 RPM Installation���������������������������������������������������������������������������������������������48 Installers for Windows and Mac ��������������������������������������������������������������������49 Setting Environment Variables ����������������������������������������������������������������������������49 Getting Started with PostgreSQL ������������������������������������������������������������������������50 Configuration Parameters �����������������������������������������������������������������������������������53 Connection Settings ��������������������������������������������������������������������������������������54 vi TTaabbllee ooff CCoonnTTeennTTss Security and Authentication Settings ������������������������������������������������������������55 Memory Settings �������������������������������������������������������������������������������������������55 Query Planner Settings ����������������������������������������������������������������������������������56 Write Ahead Log Settings ������������������������������������������������������������������������������56 Where to Log �������������������������������������������������������������������������������������������������57 When to Log ���������������������������������������������������������������������������������������������������58 What to Log ���������������������������������������������������������������������������������������������������59 Background Writer Settings ���������������������������������������������������������������������������60 Vacuum Cost Settings������������������������������������������������������������������������������������60 Autovacuum Settings�������������������������������������������������������������������������������������61 Summary�������������������������������������������������������������������������������������������������������������61 Chapter 3: Amazon Cloud �������������������������������������������������������������������63 Amazon Cloud or Amazon Web Services �������������������������������������������������������������63 AWS Regions and Availability Zones ��������������������������������������������������������������63 Getting Started with AWS ������������������������������������������������������������������������������64 Creating an AWS Account ������������������������������������������������������������������������������65 Choosing an AWS Service �����������������������������������������������������������������������������������68 RDS ����������������������������������������������������������������������������������������������������������������68 EC2 ����������������������������������������������������������������������������������������������������������������79 Summary�����������������������������������������������������������������������������������������������������������105 Chapter 4: Rackspace Cloud �������������������������������������������������������������107 Managed Hosting ����������������������������������������������������������������������������������������������107 Creating a Dedicated Server ������������������������������������������������������������������������111 Creating a Virtual Server �����������������������������������������������������������������������������117 Connecting to the Virtual Machine and Installing PostgreSQL ��������������������121 Cloud Block Storage ������������������������������������������������������������������������������������������124 Summary�����������������������������������������������������������������������������������������������������������132 vii TTaabbllee ooff CCoonnTTeennTTss Chapter 5: Google Cloud �������������������������������������������������������������������133 Getting Started with GCP ����������������������������������������������������������������������������������133 What Is a GCP Project? ��������������������������������������������������������������������������������133 Project Quota �����������������������������������������������������������������������������������������������134 Creating a Project Using the Console ����������������������������������������������������������135 Deleting a Project ����������������������������������������������������������������������������������������136 Types of Google Cloud Platforms ����������������������������������������������������������������������137 Compute Engine ������������������������������������������������������������������������������������������137 Google Cloud Storage ����������������������������������������������������������������������������������151 Cloud SQL ����������������������������������������������������������������������������������������������������153 Summary�����������������������������������������������������������������������������������������������������������167 Chapter 6: Azure Cloud ���������������������������������������������������������������������169 Virtual Machines �����������������������������������������������������������������������������������������������169 Virtual Machine Creation �����������������������������������������������������������������������������172 Connecting to Virtual Machines �������������������������������������������������������������������184 Installing PostgreSQL on a Virtual Machine �������������������������������������������������185 Dealing with Storage �����������������������������������������������������������������������������������������188 Azure Database for PostgreSQL ������������������������������������������������������������������������189 Advantages of Azure Database ��������������������������������������������������������������������189 Azure Database for PostgreSQL Service Creation ���������������������������������������190 Summary�����������������������������������������������������������������������������������������������������������197 Chapter 7: Security on the Cloud ������������������������������������������������������199 Security on Amazon Cloud ��������������������������������������������������������������������������������199 Identity and Access Management ���������������������������������������������������������������199 Create a User Using AWS IAM ����������������������������������������������������������������������201 Restricting Access to an RDS or an EC2 Instance ���������������������������������������206 viii TTaabbllee ooff CCoonnTTeennTTss Rackspace Cloud Security ��������������������������������������������������������������������������������212 Securing the Rackspace Account ����������������������������������������������������������������212 Securing the Dedicated Cloud Server of Rackspace �����������������������������������218 Security for the Google Cloud ���������������������������������������������������������������������������219 Control Access to the Compute Engine��������������������������������������������������������220 Restricting Compute Engine VM Instances ��������������������������������������������������226 Managing SSH Keys ������������������������������������������������������������������������������������226 Microsoft Azure Security �����������������������������������������������������������������������������������227 Security for VM Machines����������������������������������������������������������������������������228 Security for SQL Database ���������������������������������������������������������������������������232 Summary�����������������������������������������������������������������������������������������������������������234 Chapter 8: Backups on the Cloud �����������������������������������������������������235 Backups on the AWS Cloud �������������������������������������������������������������������������������235 Backing Up an RDS Instance �����������������������������������������������������������������������236 Restore an AWS RDS Instance from Backup �����������������������������������������������237 Backup of an EC2 Instance ��������������������������������������������������������������������������239 Performing Backups on an EC2 Instance ����������������������������������������������������243 Restore Your Backup to an EC2 Instance �����������������������������������������������������244 Backups on Rackspace Cloud ���������������������������������������������������������������������������245 Backups to Google Cloud ����������������������������������������������������������������������������������250 Backups Using the Snapshot Option �����������������������������������������������������������250 Back Up Your Files Using Storage ���������������������������������������������������������������254 Back Up Your Cloud SQL for PostgreSQL �����������������������������������������������������258 Backups to Microsoft Azure ������������������������������������������������������������������������������259 Virtual Machines ������������������������������������������������������������������������������������������260 Storage ��������������������������������������������������������������������������������������������������������264 Azure Database for PostgreSQL ������������������������������������������������������������������269 Summary�����������������������������������������������������������������������������������������������������������269 ix TTaabbllee ooff CCoonnTTeennTTss Chapter 9: Replication and High Availability on the Cloud ���������������271 The Purpose of Replication and High Availability ����������������������������������������������271 Replication and High Availability in AWS �����������������������������������������������������������274 Read Replicas for RDS ���������������������������������������������������������������������������������274 High Availability for EC2 �������������������������������������������������������������������������������278 Replication and High Availability of Rackspace Cloud ��������������������������������������281 Replication and High Availability of Google Cloud Instances ����������������������������282 Configure an Instance for High Availability ��������������������������������������������������283 How Failover Works �������������������������������������������������������������������������������������285 Read Replicas ����������������������������������������������������������������������������������������������286 Replication and High Availability of Azure Services ������������������������������������������288 Azure Database for PostgreSQL ������������������������������������������������������������������288 Virtual Machines ������������������������������������������������������������������������������������������289 Summary�����������������������������������������������������������������������������������������������������������291 Chapter 10: Encryption on the Cloud ������������������������������������������������293 Encryption for Amazon Cloud Servers ��������������������������������������������������������������294 Enable Encryption for an RDS Instance �������������������������������������������������������297 Encryption on an Amazon EC2 Instance ������������������������������������������������������299 Encryption for Rackspace Cloud Servers ����������������������������������������������������������301 Encryption for Google Cloud Instances �������������������������������������������������������������303 Encrypting Cloud Storage ����������������������������������������������������������������������������304 Cloud SQL Encryption ����������������������������������������������������������������������������������304 Encryption for Azure Cloud Services �����������������������������������������������������������������305 Summary�����������������������������������������������������������������������������������������������������������308 x
Description: