Slide 1

Slide 1 text

Lifecycle of a WAL segment on Heroku Postgres Harold Giménez @hgmnz @herokupostgres

Slide 2

Slide 2 text

Heroku Postgres?

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

Adding heroku-postgresql on demo-app… done, v129 (free) Attached as HEROKU_POSTGRESQL_ORANGE_URL Database has been created and is available Use `heroku addons:docs heroku-postgresql` to view documentation. $ $ heroku addons:add heroku-postgresql --app demo-app

Slide 5

Slide 5 text

Adding heroku-postgresql on demo-app… done, v129 (free) Attached as HEROKU_POSTGRESQL_ORANGE_URL Database has been created and is available Use `heroku addons:docs heroku-postgresql` to view documentation. $ $ heroku addons:add heroku-postgresql --app demo-app Plan: Dev Status: available Connections: 1 PG Version: 9.2.4 Data Size: 6.3 MB Tables: 0 Rows: 0/10000 (In compliance) Fork/Follow: Unsupported heroku pg:info -a demo-app

Slide 6

Slide 6 text

INSERT INTO … 1. Write to WAL ! ! 2. Data pages in memory 3. Respond to client 4. Flush data pages to heap

Slide 7

Slide 7 text

pg_xlog separate /wal partition 64GB ext4 options: nosuid, noatime, nodev

Slide 8

Slide 8 text

archive_command invoked by postgres to archive WAL segments we built WAL-E github.com/wal-e/wal-e

Slide 9

Slide 9 text

archive_command multi-datacenter storage

Slide 10

Slide 10 text

forks byte-by-byte copy of your database heroku addons:add heroku-postgresql --fork=blue

Slide 11

Slide 11 text

fork

Slide 12

Slide 12 text

followers read replicas heroku addons:add heroku-postgresql --follow=blue

Slide 13

Slide 13 text

follower

Slide 14

Slide 14 text

problem

Slide 15

Slide 15 text

eventual consistency auth issues instability

Slide 16

Slide 16 text

Archive reaper

Slide 17

Slide 17 text

Archive reaper

Slide 18

Slide 18 text

thanks! Harold Giménez @hgmnz @herokupostgres