postgresopen 12 september 2019
play

PostgresOpen 12 September 2019 1 Speaker Julien Riou DBA since - PowerPoint PPT Presentation

https://knowyourmeme.com/memes/all-the-things PostgresOpen 12 September 2019 1 Speaker Julien Riou DBA since 2012 Tech lead in the databases team at OVH since 2015 pgterminate @ github Speaker PostgresOpen 12 September


  1. https://knowyourmeme.com/memes/all-the-things PostgresOpen – 12 September 2019 1

  2. Speaker • Julien Riou • DBA since 2012 • Tech lead in the databases team at OVH since 2015 • pgterminate @ github Speaker PostgresOpen – 12 September 2019 2

  3. Overview • Definitions • Context • Updates • Upgrades • Conclusion • What’s next? Overview PostgresOpen – 12 September 2019 3

  4. Definitions PostgresOpen – 12 September 2019 4

  5. Versioning policy • Starting from version 10 11.4 Major version Minor version Definitions PostgresOpen – 12 September 2019 5

  6. Versioning policy • Before version 10 9.6.14 Major version Minor version Definitions PostgresOpen – 12 September 2019 6

  7. Versioning policy • Major versions • Minor versions – Released about once a year – Released at least every 3 months – Includes new features – Includes bug and security fixes – Supported for 5 years – Critical fixes are released as soon as possible Definitions PostgresOpen – 12 September 2019 7

  8. Definitions Update Installing a newer minor version of PostgreSQL ”Minor upgrade” accepted too Definitions PostgresOpen – 12 September 2019 8

  9. Definitions Upgrade Installing a newer major version of PostgreSQL ”Major upgrade” accepted too Definitions PostgresOpen – 12 September 2019 9

  10. Context PostgresOpen – 12 September 2019 10

  11. Context PostgresOpen – 12 September 2019 11

  12. Products Cloud Platform Baremetal Kubernetes VPS Logs & Metrics Data Platforms Public cloud Databases Private cloud Big data Storage AI & Machine Learning Web hosting Telecom Domain names Internet offers Website hosting Telephony E-mail solutions SMS / Fax SSL / CDN VDI Office & Microsoft solutions OverTheBox Context PostgresOpen – 12 September 2019 12

  13. Perimeter Internal databases 60 3000 700 400 Clusters Applications Users Databases Context PostgresOpen – 12 September 2019 13

  14. Cluster example • MySQL • PostgreSQL Context PostgresOpen – 12 September 2019 14

  15. Updates PostgresOpen – 12 September 2019 15

  16. Recommendations • “We always recommend that all users run the latest available minor release for whatever major version is in use.” • “For minor releases, the community considers not upgrading to be riskier than upgrading.” https://www.postgresql.org/support/versioning/ Updates PostgresOpen – 12 September 2019 16

  17. https://knowyourmeme.com/memes/all-the-things Updates PostgresOpen – 12 September 2019 17

  18. Method 1. Stop the service 2. Install new binaries 3. Start the service Updates PostgresOpen – 12 September 2019 18

  19. Attention points • Always read the changelog • Downtime – Can be minimized by using pgbouncer and PAUSE/RESUME commands • Write intensive clusters – Run CHECKPOINT before stopping the service – Prepare for a switchover for extreme case • Patroni – Put the cluster on maintenance mode to avoid failovers Updates PostgresOpen – 12 September 2019 19

  20. Initial state Updates PostgresOpen – 12 September 2019 20

  21. Clustershell • “Event -driven open source Python library, designed to run local or distant commands in parallel on server farms or on large Linux clusters” http://cea-hpc.github.io/clustershell/ • Binaries – clush – nodeset • Python API Updates PostgresOpen – 12 September 2019 21

  22. Clustershell • nodeset $ nodeset -ll @all node[1-6] @cluster1 node[1-3] @cluster2 node[4-6] @node node[1-2,4-5] @backup node[3,6] Updates PostgresOpen – 12 September 2019 22

  23. Clustershell • clush $ clush -bw @all $ clush -bw @cluster1\&@backup $ clush -bw @cluster1,@cluster2 Updates PostgresOpen – 12 September 2019 23

  24. Clustershell • clush clush> apt-get update Clush> apt-get upgrade Updates PostgresOpen – 12 September 2019 24

  25. Clustershell • Backups first $ clush -bw @backup Updates PostgresOpen – 12 September 2019 25

  26. Clustershell • Backups first $ clush -bw @backup Updates PostgresOpen – 12 September 2019 26

  27. Clustershell • Backups first $ clush -bw @backup Updates PostgresOpen – 12 September 2019 27

  28. Clustershell • Then nodes one node at a time (fanout) $ clush -f 1 -bw @node Updates PostgresOpen – 12 September 2019 28

  29. Clustershell • Then nodes one node at a time (fanout) $ clush -f 1 -bw @node Updates PostgresOpen – 12 September 2019 29

  30. Clustershell • Then nodes one node at a time (fanout) $ clush -f 1 -bw @node Updates PostgresOpen – 12 September 2019 30

  31. Clustershell • Then nodes one node at a time (fanout) $ clush -f 1 -bw @node Updates PostgresOpen – 12 September 2019 31

  32. Clustershell • Then nodes one node at a time (fanout) $ clush -f 1 -bw @node Updates PostgresOpen – 12 September 2019 32

  33. Clustershell • Then nodes one node at a time (fanout) $ clush -f 1 -bw @node Updates PostgresOpen – 12 September 2019 33

  34. Clustershell • Then nodes one node at a time (fanout) $ clush -f 1 -bw @node Updates PostgresOpen – 12 September 2019 34

  35. Clustershell • Then nodes one node at a time (fanout) $ clush -f 1 -bw @node Updates PostgresOpen – 12 September 2019 35

  36. Clustershell • Then nodes one node at a time (fanout) $ clush -f 1 -bw @node Updates PostgresOpen – 12 September 2019 36

  37. Final state Updates PostgresOpen – 12 September 2019 37

  38. Limitations • clush is great for one-shot human simple operations • Requires development investment to implement complex automation • At our scale, we use our own automation system – Mostly open: PostgreSQL, Flask, Ansible, Celery, … – And some internal systems Updates PostgresOpen – 12 September 2019 38

  39. Upgrades PostgresOpen – 12 September 2019 39

  40. Why? • Support • New features – Materialized views – Limited to 5 years – JSON • Better performance – Logical decoding – Upsert – Parallelism – SCRAM – Optimizations – And more… Upgrades PostgresOpen – 12 September 2019 40

  41. https://knowyourmeme.com/memes/all-the-things Upgrades PostgresOpen – 12 September 2019 41

  42. Method Upgrades PostgresOpen – 12 September 2019 42

  43. Method Upgrades PostgresOpen – 12 September 2019 43

  44. Method Upgrades PostgresOpen – 12 September 2019 44

  45. Method Upgrades PostgresOpen – 12 September 2019 45

  46. Method Upgrades PostgresOpen – 12 September 2019 46

  47. Method Upgrades PostgresOpen – 12 September 2019 47

  48. “Replication” methods • Application • pg_dump / pg_restore • pg_upgrade • Logical replication with pglogical Upgrades PostgresOpen – 12 September 2019 48

  49. “Replication” methods Application Upgrades PostgresOpen – 12 September 2019 49

  50. Application 1. Write objects to both clusters 2. Copy old objects to new cluster 3. Switchover Upgrades PostgresOpen – 12 September 2019 50

  51. Application Pros Cons Developers are autonomous Different object management for too much teams No downtime Requires a single endpoint or inconsistencies RDBMS independent Not a developer priority Upgrades PostgresOpen – 12 September 2019 51

  52. Application • Conclusion https://github.com/googlefonts/noto-emoji/blob/master/svg/emoji_u1f44e.svg Upgrades PostgresOpen – 12 September 2019 52

  53. “Replication” methods pg_dump / pg_restore Upgrades PostgresOpen – 12 September 2019 53

  54. pg_dump / pg_restore 1. Set old cluster to read-only mode 2. Dump old cluster with pg_dump 3. Restore on new cluster with pg_restore 4. Switchover Upgrades PostgresOpen – 12 September 2019 54

  55. pg_dump / pg_restore Pros Cons DBA team is autonomous Extended period of downtime for large databases Easy to setup Wipe table and index bloat Upgrades PostgresOpen – 12 September 2019 55

  56. pg_dump / pg_restore • Conclusion https://github.com/googlefonts/noto-emoji/blob/master/svg/emoji_u1f44d.svg Upgrades PostgresOpen – 12 September 2019 56

  57. “Replication” methods pg_upgrade Upgrades PostgresOpen – 12 September 2019 57

  58. pg_upgrade 1. Install both versions on new cluster 2. Setup streaming replication from old cluster to new cluster 3. Set old cluster to read-only mode 4. Run pg_upgrade on new cluster with hardlinks 5. Update statistics in stage on new cluster 6. Switchover Upgrades PostgresOpen – 12 September 2019 58

  59. pg_upgrade Upgrades PostgresOpen – 12 September 2019 59

  60. pg_upgrade Upgrades PostgresOpen – 12 September 2019 60

  61. pg_upgrade Upgrades PostgresOpen – 12 September 2019 61

  62. pg_upgrade Pros Cons DBA team is autonomous Requires multiple versions of binaries on the same host Very short downtime Rebuild streaming replication to have up-to-date data Easy to setup (the first time) Upgrades PostgresOpen – 12 September 2019 62

  63. A word on statistics Upgrades PostgresOpen – 12 September 2019 63

  64. A word on statistics https://knowyourmeme.com/memes/reality-hits-you-hard-bro Upgrades PostgresOpen – 12 September 2019 64

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend