You may have noticed that we've had a lot of churn in PostgreSQL update releases lately, doing three updates in less than two months. We expect that we're done with that now, so it's time to get on updating all of your servers with today's update release.
Users of PostgreSQL 9.3 and 9.4 should update this weekend if possible. This cumulative update fixes several problems with our "multixact" mechanism which have been plaguing Postgres since the release of 9.3.0. While most users will not hit these issues, if you do, the bugs cause unrecoverable data corruption. In other words, waiting "until you see a problem" is a really, really bad idea.
Additionally, one of the problems fixed requires cleaning up some garbage left by the version of pg_upgrade which shipped with Postgres versions 9.3.0 to 9.3.4. If you used pg_upgrade to upgrade to one of those versions -- even if you subsequently upgraded to 9.4 -- then the server is liable to trigger a database-wide all-table autovacuum as soon as you restart after applying 9.3.9 or 9.4.2.
If you are prepared for minutes to hours of degraded performance after applying the update, this is not a problem. If it is a problem, though, you can do precautionary vacuuming before you apply the update. Detailed instructions are supplied in the release notes on how to do this.
Now, go update those servers!
Showing posts with label update. Show all posts
Showing posts with label update. Show all posts
Friday, June 12, 2015
Thursday, December 5, 2013
Why you need to apply today's update real soon
So, another month, another PostgreSQL update. This one is a lot more critical than most because it patches up to three data loss issues, depending on what version of PostgreSQL you're on and which features you're using. While all users need to plan to apply this update sometime during the next couple weeks, two kinds of users need to schedule an update downtime for this weekend, if at all possible:
Annoyingly, you'll have to do some additional stuff after you update:
VACUUM; -- optionally, ANALYZE as well
This second step is critical for users on 9.3, and a generally good idea for users on other versions. Note that, while VACUUM is a non-blocking operation, it can create a lot of IO, so it's a good idea to do this during a slow traffic period and monitor it for pile-ups.
More information about the replication issue is here.
So, how did this happen? Well, all three issues were unexpected side effects of fixes we applied for other issues in earlier versions. For example, the replication issue is the result of the combination of two independent fixes for failover issues, both of which needed to be fixed. Since all of these issues depend on both timing and heavy traffic, and their effect is subtle (as in, a few missing or extra rows), none of our existing testing was capable of showing them.
If anyone wants to devise destruction tests to detect subtle data corruption issues in PostgreSQL before we release code -- if anyone can -- please offer to help!
- Users on version 9.3
- Users of binary replication
Annoyingly, you'll have to do some additional stuff after you update:
- If using binary replication, you need to take a new base backup of each replica after updating.
- You should run the following on each production database after updating:
VACUUM; -- optionally, ANALYZE as well
This second step is critical for users on 9.3, and a generally good idea for users on other versions. Note that, while VACUUM is a non-blocking operation, it can create a lot of IO, so it's a good idea to do this during a slow traffic period and monitor it for pile-ups.
More information about the replication issue is here.
So, how did this happen? Well, all three issues were unexpected side effects of fixes we applied for other issues in earlier versions. For example, the replication issue is the result of the combination of two independent fixes for failover issues, both of which needed to be fixed. Since all of these issues depend on both timing and heavy traffic, and their effect is subtle (as in, a few missing or extra rows), none of our existing testing was capable of showing them.
If anyone wants to devise destruction tests to detect subtle data corruption issues in PostgreSQL before we release code -- if anyone can -- please offer to help!
Subscribe to:
Posts (Atom)