- PostgreSQL Replication(Second Edition)
- Hans Jürgen Sch?nig
- 391字
- 2021-07-16 13:33:53
Efficient cleanup and the end of recovery
In recent years, recovery.conf
has become more and more powerful. Back in the early days (that is, before PostgreSQL 9.0), there was barely anything more than restore_command
and some setting related to recovery_target_time
. More modern versions of PostgreSQL already offer a lot more and give you the chance to control your replay process in a nice and professional way.
In this section, you will learn what kind of settings there are and how you can make use of those features easily.
Gaining control over the restart points
So far, we have archived the XLOG indefinitely. Just like in real life, infinity is a concept that causes trouble. As John Maynard Keynes stated in his famous book, The General Theory of Employment, Interest, and Money:
"In the long run, we are all dead."
What applies to Keynesian stimulus is equally true in the case of XLOG archiving; you simply cannot keep doing it forever. At some point, the XLOG has to be thrown away.
To make cleanup easy, you can put archive_cleanup_command
into recovery.conf
. Just like most other commands (for example, restore_command
), this is a generic shell script. The script you will put in here will be executed at every restart point. What is a restart point? Every time PostgreSQL switches from file-based replay to streaming-based replay, you face a restart point. In fact, starting streaming again is considered to be a restart point.
You can make PostgreSQL execute some cleanup routine (or anything else) as soon as the restart point is reached. It is easily possible to clean the older XLOG or trigger some notifications.
The following script shows how you can clean any XLOG that is older than a day:
#!/bin/sh find /archive "-type f -mtime +1 -exec rm -f {} \;
Keep in mind that your script can be of any kind of complexity. You have to decide on a proper policy to handle the XLOG. Every business case is different, and you have all the flexibility to control your archives and replication behavior.
Tweaking the end of your recovery
The recovery_end_command
parameter serves purposes similar to archive_cleanup_command
. It triggers some script execution when your recovery (or XLOG streaming) has completed.
Again, you can use this to clean the old XLOG, send out notifications, or perform any other kind of desired action.
- 高手是如何做產品設計的(全2冊)
- 從零構建知識圖譜:技術、方法與案例
- 觸·心:DT時代的大數據精準營銷
- Learning Apex Programming
- GraphQL學習指南
- Mastering SVG
- INSTANT Sencha Touch
- Cassandra Design Patterns(Second Edition)
- SQL基礎教程(視頻教學版)
- FFmpeg開發實戰:從零基礎到短視頻上線
- Java Web開發實例大全(基礎卷) (軟件工程師開發大系)
- Java EE Web應用開發基礎
- Angular Design Patterns
- MySQL 8從零開始學(視頻教學版)
- 人人都能開發RPA機器人:UiPath從入門到實戰