586
Vývoj / Re:DB master/slave - čtení/zápis na straně aplikace
« kdy: 29. 05. 2022, 10:19:30 »Nejsou toto náhodou ortogonální problémy?Směrování na primary/secondary se nemusí dělat po spojeních, ale po transakcích. A jestli je transakce jen pro čtení nebo pro zápis proxy ví, je to jeden z parametrů transakce.
Protože proxy nemůže vědět, jestli moje nová connection bude read-only, nebo read-write, takže mne nemůže sama od sebe správně přesměrovat na master (v případě zápisu) či na slave. A proxy nemůže jen tak v rámci transakce přesunout connection na jiný db server.
Samostatné aplikace (proxy), které umí směrovat transakce na správný server, jsou např. pgBouncer nebo pgPool.
Případně můžete v aplikaci použít dva zdroje dat – jeden pro čtení a druhý pro zápis. Třeba JDBC driver pro PostgreSQL pro to má podporu, můžete mu dát víc serverů najednou a určit, že má používat jen primární servery (to bude datasource pro zápis) nebo že má preferovat sekundární (datasource pro čtení).
Jinak pokud v clusteru nemáte automatický failover (třeba pomocí repmgr), ale ruční, můžete měnit ručně i konfiguraci klientů. Já jsem si pod „cluster“ automaticky představil automatický failover.