PostgreSQL

From PostgreSQL_wiki
Revision as of 08:32, 20 September 2023 by Martin (talk | contribs)
Jump to: navigation, search

HA Cluster

In PostgreSQL spreekt men altijd van een cluster, omdat serieuze toepassingen voor ononderbroken werking een terugval op een kopie van de database nodig hebben. Een cluster bestaat in dat geval uit tenminste één Primary en één Standby node. De standby neemt de taak van primary op zich als de primary stopt.
Een High Availability Cluster (HA) gaat verder en voldoet aan de volgende criteria:

  • Het cluster bestaat uit één primary node en twee standby nodes
  • Automatische failover met minimale downtime, met beveiliging tegen een terugkomende node die primary claimt
  • Efficiënte afhandeling van connection met behulp van pooling
  • Afscherming van de database nodes door middel van een proxy
  • Afsplitsing van zware lees queries met load balancing op de standby nodes

Het Webhuis PostgreSQL Cluster is opgezet met Patroni, HAProxy, etcd en PGBouncer.

Toepassingen

MySQL is op het moment de meest gebruikte database voor Mediawiki. Webhuis is de wiki in het verleden begonnen met een MySQL backend, maar is overgestapt PostgreSQL als standaard database backend.

Mediawiki

Installatie

De installatie procedure met de PostgreSQL backend is een beetje gammel, maar als je eenmaal een PostgreSQL database hebt gaat het soepel.

Webserver

# apt-get install mediawiki php-pgsql

In /etc/php/7.3/apache2/php.ini uncomment:

extension=pdo_pgsql
extension=pgsql

PostgreSQL Server

Als de database is geïnstalleerd is de volgende voorbereiding op de import uit MySQL noodzakelijk, vanwege andere afhandeling van de autoincrement op keys in tabllen. In PostgreSQL doen we dat met een sequence.

create sequence page_id_seq owned by page.page_id;
alter table page alter page_id set default nextval('page_id_seq');
create sequence pagecontent_old_id_seq owned by pagecontent.old_id;
alter table pagecontent alter old_id set default nextval('pagecontent_old_id_seq');
create sequence revision_rev_id_seq owned by revision.rev_id;
alter table revision alter rev_id set default nextval('revision_rev_id_seq');
create sequence job_job_id_seq owned by job.job_id;
alter table job alter job_id set default nextval('job_job_id_seq');

Migratie

php importDump.php --conf /etc/mediawiki/LocalSettings.php ~/tmp/mediawiki-dump.xml --username-prefix='wiki_database_rolename'

Terug naar: Voorpagina