isotopp, German
@isotopp@chaos.social avatar

MySQL folks take a lot of things for granted that are not present in this form in Postgres, and that may be a bad surprise when you try out "the other system".

MySQL for example has a stable and upwards- and slightly-downwards-compatible on-disk format, mostly. Oracle sometimes forgets how important that is and makes changes, or unannounced changes, and then needs to be corrected, hard, by their development partners and testers.

But in general the following things are true:

ovid,
@ovid@fosstodon.org avatar

@isotopp I definitely prefer PostgreSQL to , but deciding that collation derives from your system's locale settings when PostgreSQL installed means identical setups on different boxes can behave differently. This is NOT FUN to debug.

I've heard that there was discussion to change this, but I don't know if it happened.

isotopp,
@isotopp@chaos.social avatar

@ovid To my knowledge this is still the case. And yes, I had to debug similar problems in MySQL during a failed funky upgrade and boy, does that hurt.

truls46,
@truls46@mastodon.social avatar

@ovid

You can initialize your Postgres instance using an ICU locale/collation. That should be identical across systems.

Or initialize it with the "C" locale and use explicit COLLATE when you need something different.

ascherbaum,
@ascherbaum@mastodon.social avatar

@truls46 @ovid But then that "different" is still dependend on your system. It's not nice, overall.

truls46,
@truls46@mastodon.social avatar

@ascherbaum Even when using ICU?

ascherbaum,
@ascherbaum@mastodon.social avatar

@truls46 No, I was referring to the "or" part and assumed that the second part of your post is not talking about this.

isotopp,
@isotopp@chaos.social avatar

Indices are materalized sorted extracts of data from one or more columns.

In MySQL, charsets are an attribute of columns, and collations are immutable across versions and independent from libc changes.

That means, the OS can be upgraded without affecting indexes.

The database can be upgraded without affecting indexes.

Indexes can be upgraded one-by-one in the background with the usual online alter-table stuff to new collations.

Collations are changed in sync across a replication tree.

isotopp,
@isotopp@chaos.social avatar

MySQL snapshots the OS timezone database into a database table. This is shared with replication.

OS upgrades do not affect database timezone information.

Database timezone handling is in sync across a replication tree.

isotopp,
@isotopp@chaos.social avatar

On-disk database formats are always in-place upgrade-able in binary form. They are usually downgrade-able at least between the current and the previous form.

If not, this is documented.

Strategies exist to migrate a replication tree, live, and transparently to a newer or back to the previous version of the database.

Replication wire format is compatible across a large range of versions, and guaranteed to be so for version-forward trees (ie the primary is the oldest version of the database).

isotopp, (edited )
@isotopp@chaos.social avatar

Replication events are materialized on disk in the binlog, and replication scales out cheaply, to hundreds of replicas from a single primary or intermediate.

Databases can be cloned by snapshotting and recovering the datadir, copying it over to a new instance and making the copy a replica of the primary. This is straightforward even without GTID, and automatic with GTID.

isotopp,
@isotopp@chaos.social avatar

Tooling exists to automatically manage, reshape, grow and shrink replication trees based on the results of predictive autosizing information.

That means, DBAs can drag and drop nodes across a replication tree in a web interface and the replicas will be detached and reattached in the replication tree at will, including changes to the primary.

This makes several replication based HA concepts viable.

isotopp,
@isotopp@chaos.social avatar

Mitigations for these things exist "for the other database", but they need to be relearned and be done differently.

This is why migrations are mostly an ops story and not a dev story.

icing,
@icing@chaos.social avatar

@isotopp you make that sound as if this was done intentionally.😌

isotopp, (edited )
@isotopp@chaos.social avatar

@icing

All of these things were done intentionally. I know this, because I had and continue to have firm opinions based on personal operational experience that I injected into these discussions at the appropriate time.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • random
  • tacticalgear
  • DreamBathrooms
  • khanakhh
  • mdbf
  • InstantRegret
  • magazineikmin
  • everett
  • cubers
  • rosin
  • Youngstown
  • slotface
  • ngwrru68w68
  • kavyap
  • thenastyranch
  • JUstTest
  • modclub
  • Durango
  • GTA5RPClips
  • cisconetworking
  • osvaldo12
  • ethstaker
  • Leos
  • tester
  • anitta
  • normalnudes
  • provamag3
  • megavids
  • lostlight
  • All magazines