Postgres in Amazon RDS 
/ 
Denish Patel 
Lead Database Architect
Who am I ? 
• Database Architect with OmniTI for last 7+ years 
• Expertise in PostgreSQL , Oracle, MySQL, NoSQL 
• Contact : denish@omniti.com , Twitter: @DenishPatel 
• Blog: http://www.pateldenish.com 
• Providing Solutions for business problems to deliver 
• Scalability 
• Reliability 
• High Availability 
• Consistency 
• Security 
1 
We are hiring!! 
Apply @ l42.org/lg
Agenda 
• What is Amazon RDS? 
• Amazon RDS Service Highlights 
• Setting up Postgres RDS Instance 
• Postgres RDS Features 
• Administration and Limitation 
• Q & A 
2
Amazon Relational Database Services 
RDS is a managed RDBMS Service in the cloud that is 
simple to deploy, easy to scale and cost effective. 
3
Service Highlights 
• Managed 
• Compatible 
• Scalable Database in the Cloud 
• Designed for use with other Amazon Web 
Services 
• Inexpensive 
4
Getting Started with Postgres RDS (GA July,2014) 
5
Production? 
6
Select Instance Type and Space 
7
Choose VPC and Postgres config 
8
Backups & Maintenance Window 
9
Postgres Instance is Ready ☺ 
10
Let’s test it out! 
11
Pre-configured Parameters 
• max_connections= {DBInstanceClassMemory/12582880} ; 604 
• effective_cache_size = {DBInstanceClassMemory/16384} ; 
3.6GB 
• shared_buffers = {DBInstanceClassMemory/32768} ; 1.8GB 
• maintenance_work_mem = default ; 16MB (Can be changed) 
• work_mem = default ; 1MB (Can be changed) 
• log_line_prefix = ‘%t:%r:%u@%d:[%p]:’ (cannot changed) 
• log_min_duration_statement (disabled by default, enable it) 
12
Pre-configured Parameters 
• Pros: 
• Easy to create Parameter Groups and apply it to specific 
instance 
• i.e apply to dev instance vs prod 
• Allow dynamic calculation based on 
DBInstanceClassMemory 
• Cons: 
• Can not change some parameters 
13
Automatic Software Patching 
• As of now, Postgres 9.3.1, 9.3.2 and 9.3.3 versions are 
available 
• You can control upgrade time 
• You have to wait till the new version is available 
• Postgres RDS doesn’t support anything older than 9.3 
• Postgres 9.3 replication bugs 
• Delay in upgrade 
14
Point-in-Time Restore 
15
Point-in-Time Restore 
16
DB Snapshots – Manual or Automated 
17
DB Events 
18
DB Event Notifications 
19
Multi-Availability Zone (Multi-AZ) Deployments 
20
Multi AZ , not Multi Region 
21
Provisioned IOPS 
• IOPS Ranges : 1000 - 30,000 
• Storage Ranges : 100 GB - 3 TB 
• Range of IOPS to Storage (GB) Ratio : 3:1 – 10:1 
• For Example, 
• you could start by provisioning an Postgres DB instance 
with 1000 IOPS and 200 GB storage (a ratio of 5:1). 
• You could then scale up to 2000 IOPS with 200 GB of 
storage (a ratio of 10:1), 3000 IOPS with 300 GB of storage 
• Up to the maximum for Postgres DB instance of 30,000 
IOPS with 3 TB (3000 GB) of storage. 
22
Push-Button Scaling 
23
Push-Button Scaling 
• Took about an hour to increase IOPs and Disk space from 1000 
IOPs (100GB) to 2000 IOPs(200GB) 
• Multi AZ was quick because it was applied during instance creation 
24
Isolation and Security 
Access from specific CIDR/IP 
Access from specific EC2 security group 
Limited Default Roles 
SSL is ON 
25
Monitoring & Metrics 
26
Other Features 
• Automatic Host replacement in case of 
hardware failure 
• Replication and automated failover 
• Synchronous replication is used for 
failover 
27
Postgres Logs Monitoring 
• Possible to download postgres logs for analyze with PgBadger 
• Install Amazon RDS Command Line Toolkit 
• rds-watch-db-logfile omniti --log-file-name error/ 
postgresql.log.2014-04-16-22 
• rds-download-db-logfile DBInstanceIdentifier --log-file-name 
$filename 
28
PostgreSQL Supported Extensions 
29
PgBench results 
• m1.large 
• Provisioned iops = 1000 
• Number of clients: 100 
• Number of threads: 1 
• Duration: 600 s 
Single AZ Multi AZ 
# of transaction 
processed 
117611 112009 
tps (including connections 
establishing) 
195.729775 186.482602 
tps (excluding connections 
establishing) 
209.247055 199.764921 
30
Limitations 
• Replica feature is missing 
• Streaming replication (Coming up?) 
• Limited migration/upgrade options 
• pg_dump/restore 
• What about major upgrade? 
• pgbouncer can not be installed on DB server 
• Can not install custom extensions 
• mimeo, pg_partman etc. 
31
Pricing 
m1.large 
2000 IOPs 
200GB 
On Demand Reserved (3 yr) 
Single AZ $400/month $368/month 
Multi AZ $800/month $636/month 
Reserved instance can be 10-20% cheaper 
Price doesn’t include bandwidth 
32
References 
• http://docs.aws.amazon.com/AmazonRDS/latest/ 
UserGuide/CHAP_GettingStarted.html 
• http://docs.aws.amazon.com/AmazonRDS/latest/ 
UserGuide/CHAP_PostgreSQL.html 
• Quick Reference CLI Commands: http:// 
awsdocs.s3.amazonaws.com/RDS/latest/rds-qrc.pdf 
• http://www.postgresql.org/docs/9.2/static/ 
pgbench.html 
• https://console.aws.amazon.com/rds/home 
33
Further Reading …. 
• Accessing PostgreSQL from Amazon RDS article on 
Database Trends and Applications 
• http://www.dbta.com/Editorial/Trends-and- 
Applications/Accessing-PostgreSQL-from-Amazon- 
RDS-96507.aspx 
34
Surge 2014 
35
Questions? 
Twitter: DenishPatel 
Email: denish@omniti.com 
36

Postgres in Amazon RDS

  • 1.
    Postgres in AmazonRDS / Denish Patel Lead Database Architect
  • 2.
    Who am I? • Database Architect with OmniTI for last 7+ years • Expertise in PostgreSQL , Oracle, MySQL, NoSQL • Contact : [email protected] , Twitter: @DenishPatel • Blog: http://www.pateldenish.com • Providing Solutions for business problems to deliver • Scalability • Reliability • High Availability • Consistency • Security 1 We are hiring!! Apply @ l42.org/lg
  • 3.
    Agenda • Whatis Amazon RDS? • Amazon RDS Service Highlights • Setting up Postgres RDS Instance • Postgres RDS Features • Administration and Limitation • Q & A 2
  • 4.
    Amazon Relational DatabaseServices RDS is a managed RDBMS Service in the cloud that is simple to deploy, easy to scale and cost effective. 3
  • 5.
    Service Highlights •Managed • Compatible • Scalable Database in the Cloud • Designed for use with other Amazon Web Services • Inexpensive 4
  • 6.
    Getting Started withPostgres RDS (GA July,2014) 5
  • 7.
  • 8.
  • 9.
    Choose VPC andPostgres config 8
  • 10.
  • 11.
  • 12.
  • 13.
    Pre-configured Parameters •max_connections= {DBInstanceClassMemory/12582880} ; 604 • effective_cache_size = {DBInstanceClassMemory/16384} ; 3.6GB • shared_buffers = {DBInstanceClassMemory/32768} ; 1.8GB • maintenance_work_mem = default ; 16MB (Can be changed) • work_mem = default ; 1MB (Can be changed) • log_line_prefix = ‘%t:%r:%u@%d:[%p]:’ (cannot changed) • log_min_duration_statement (disabled by default, enable it) 12
  • 14.
    Pre-configured Parameters •Pros: • Easy to create Parameter Groups and apply it to specific instance • i.e apply to dev instance vs prod • Allow dynamic calculation based on DBInstanceClassMemory • Cons: • Can not change some parameters 13
  • 15.
    Automatic Software Patching • As of now, Postgres 9.3.1, 9.3.2 and 9.3.3 versions are available • You can control upgrade time • You have to wait till the new version is available • Postgres RDS doesn’t support anything older than 9.3 • Postgres 9.3 replication bugs • Delay in upgrade 14
  • 16.
  • 17.
  • 18.
    DB Snapshots –Manual or Automated 17
  • 19.
  • 20.
  • 21.
  • 22.
    Multi AZ ,not Multi Region 21
  • 23.
    Provisioned IOPS •IOPS Ranges : 1000 - 30,000 • Storage Ranges : 100 GB - 3 TB • Range of IOPS to Storage (GB) Ratio : 3:1 – 10:1 • For Example, • you could start by provisioning an Postgres DB instance with 1000 IOPS and 200 GB storage (a ratio of 5:1). • You could then scale up to 2000 IOPS with 200 GB of storage (a ratio of 10:1), 3000 IOPS with 300 GB of storage • Up to the maximum for Postgres DB instance of 30,000 IOPS with 3 TB (3000 GB) of storage. 22
  • 24.
  • 25.
    Push-Button Scaling •Took about an hour to increase IOPs and Disk space from 1000 IOPs (100GB) to 2000 IOPs(200GB) • Multi AZ was quick because it was applied during instance creation 24
  • 26.
    Isolation and Security Access from specific CIDR/IP Access from specific EC2 security group Limited Default Roles SSL is ON 25
  • 27.
  • 28.
    Other Features •Automatic Host replacement in case of hardware failure • Replication and automated failover • Synchronous replication is used for failover 27
  • 29.
    Postgres Logs Monitoring • Possible to download postgres logs for analyze with PgBadger • Install Amazon RDS Command Line Toolkit • rds-watch-db-logfile omniti --log-file-name error/ postgresql.log.2014-04-16-22 • rds-download-db-logfile DBInstanceIdentifier --log-file-name $filename 28
  • 30.
  • 31.
    PgBench results •m1.large • Provisioned iops = 1000 • Number of clients: 100 • Number of threads: 1 • Duration: 600 s Single AZ Multi AZ # of transaction processed 117611 112009 tps (including connections establishing) 195.729775 186.482602 tps (excluding connections establishing) 209.247055 199.764921 30
  • 32.
    Limitations • Replicafeature is missing • Streaming replication (Coming up?) • Limited migration/upgrade options • pg_dump/restore • What about major upgrade? • pgbouncer can not be installed on DB server • Can not install custom extensions • mimeo, pg_partman etc. 31
  • 33.
    Pricing m1.large 2000IOPs 200GB On Demand Reserved (3 yr) Single AZ $400/month $368/month Multi AZ $800/month $636/month Reserved instance can be 10-20% cheaper Price doesn’t include bandwidth 32
  • 34.
    References • http://docs.aws.amazon.com/AmazonRDS/latest/ UserGuide/CHAP_GettingStarted.html • http://docs.aws.amazon.com/AmazonRDS/latest/ UserGuide/CHAP_PostgreSQL.html • Quick Reference CLI Commands: http:// awsdocs.s3.amazonaws.com/RDS/latest/rds-qrc.pdf • http://www.postgresql.org/docs/9.2/static/ pgbench.html • https://console.aws.amazon.com/rds/home 33
  • 35.
    Further Reading …. • Accessing PostgreSQL from Amazon RDS article on Database Trends and Applications • http://www.dbta.com/Editorial/Trends-and- Applications/Accessing-PostgreSQL-from-Amazon- RDS-96507.aspx 34
  • 36.
  • 37.