sql >> Database >  >> RDS >> PostgreSQL

pghoard-alternatieven - PostgreSQL-back-upbeheer met ClusterControl

Het beheren van back-ups kan een complexe en risicovolle taak zijn om handmatig uit te voeren. U moet weten dat de back-up werkt volgens uw back-upbeleid, omdat u niet in de situatie wilt verkeren dat u de back-up nodig heeft en deze niet werkt of niet bestaat. Dat wordt zeker een groot probleem. Het beste is dus om een ​​beproefde back-upbeheertoepassing te gebruiken om problemen in geval van storing te voorkomen.

PGHoard is een PostgreSQL-back-updaemon en herstelsysteem dat back-upgegevens opslaat in cloudobject-stores. Het ondersteunt PostgreSQL 9.3 of hoger, tot en met PostgreSQL 11, de meest recente ondersteunde versie op dit moment. De huidige PGHoard-versie is 2.1.0, uitgebracht in mei 2019 (1 jaar geleden).

ClusterControl is agentless beheer- en automatiseringssoftware voor databaseclusters. Het helpt bij het implementeren, bewaken, beheren en schalen van uw databaseserver/cluster rechtstreeks vanuit de ClusterControl-gebruikersinterface of met behulp van de ClusterControl CLI. Het bevat functies voor back-upbeheer en ondersteunt PostgreSQL 9.6, 10, 11 en 12 versies. De huidige ClusterControl-versie is 1.7.6, vorige maand uitgebracht, in april 2020.

In deze blog vergelijken we PGHoard met de ClusterControl Backup Management-functie en zien we hoe we beide systemen kunnen installeren en gebruiken. Hiervoor gebruiken we een Ubuntu 18.04-server en PostgreSQL11 (omdat dit de nieuwste ondersteunde versie is voor het gebruik van PGHoard). We installeren PGHoard op dezelfde databaseserver en importeren het in ClusterControl.

Back-ups Beheer Functies Vergelijking

PGHoard

Enkele van de belangrijkste PGHoard-functies zijn:

  • Automatische periodieke basisback-ups
  • Automatische back-ups van transactielogboeken
  • Standalone Hot Backup-ondersteuning
  • Ondersteuning voor opslag van cloudobjecten (AWS S3, Google Cloud, OpenStack Swift, Azure, Ceph)
  • Back-upherstel rechtstreeks vanuit objectopslag, gecomprimeerd en versleuteld
  • Point-in-time-recovery (PITR)
  • Initialiseer een nieuwe stand-by van objectopslagback-ups, automatisch geconfigureerd als een replicerende hot-standby
  • Parallelle compressie en codering

Een van de manieren om het te gebruiken is om een ​​aparte back-upmachine te hebben, zodat PGHoard verbinding kan maken met pg_receivexlog om WAL-bestanden uit de database te ontvangen. Een andere modus is om pghoard_postgres_command te gebruiken als een PostgreSQL archive_command. In beide gevallen maakt PGHoard periodieke basisback-ups met pg_basebackup.

ClusterControl

Laten we ook enkele van de belangrijkste kenmerken van dit systeem bekijken:

  • Gebruiksvriendelijke gebruikersinterface
  • Back-up maken en terugzetten (in hetzelfde knooppunt of in een apart knooppunt)
  • Back-ups plannen
  • Een cluster maken vanuit Back-up
  • Automatische back-upverificatie
  • Compressie
  • Encryptie
  • Automatisch uploaden naar de cloud
  • Point-in-time-recovery (PITR)
  • Verschillende back-upmethoden (logisch, fysiek, volledig, incrementeel, enz.)
  • Backup operationele rapporten

Omdat dit niet alleen een back-upbeheersysteem is, zullen we ook verschillende belangrijke functies noemen, niet alleen de back-upgerelateerde:

  • Databases implementeren/importeren:standalone, cluster/replicatie, load balancers
  • Scaling:knooppunten toevoegen/verwijderen, replica's lezen, clusterklonen, replicatie van cluster naar cluster
  • Monitoring:aangepaste dashboards, foutdetectie, querymonitor, prestatieadviseurs, alarmen en meldingen, aangepaste adviseurs ontwikkelen
  • Automatisch herstel:knooppunt- en clusterherstel, failover, omgevingen met hoge beschikbaarheid
  • Beheer:configuratiebeheer, upgrades van databasepatches, databasegebruikersbeheer, cloudintegratie, operationele rapporten, proxySQL-beheer
  • Beveiliging:sleutelbeheer, op rollen gebaseerd toegangscontrole, authenticatie met LDAP/Active Directory, SSL-codering

De aanbevolen topologie is om een ​​apart knooppunt te hebben om ClusterControl uit te voeren, om ervoor te zorgen dat u in geval van storing kunt profiteren van de automatische herstel- en failover-functies van ClusterControl (en andere handige functies) .

Systeemvereisten

PGHoard

Volgens de documentatie kan PGHoard een back-up maken van PostgreSQL-versies 9.3 en hoger en deze herstellen. De daemon is geïmplementeerd in Python en werkt met CPython versie 3.5 of nieuwer. De volgende Python-modules kunnen nodig zijn, afhankelijk van de vereisten:

  • psycopg2 om metadata van transactielogboeken op te zoeken
  • verzoeken voor de interne client-server-architectuur
  • azure voor Microsoft Azure-objectopslag
  • botocore voor AWS S3 (of Ceph-S3) objectopslag
  • google-api-client voor objectopslag in Google Cloud
  • cryptografie voor back-up encryptie en decryptie (versie 0.8 of nieuwer vereist)
  • snappy voor Snappy compressie en decompressie
  • zstandard voor Zstandard (zstd) compressie en decompressie
  • systemd voor systeemintegratie
  • swiftclient voor OpenStack Swift-objectopslag
  • paramiko voor opslag van sftp-objecten

Er is geen melding gemaakt van het ondersteunde besturingssysteem, maar er staat dat het is getest op moderne Linux x86-64-systemen, maar zou moeten werken op andere platforms die de vereiste modules bieden.

ClusterControl

De volgende software is vereist voor de ClusterControl-server:

  • MySQL-server/client
  • Apache-webserver (of nginx)
  • mod_rewrite
  • mod_ssl
  • overschrijven .htaccess toestaan
  • PHP (5.4 of hoger)
  • RHEL:php, php-mysql, php-gd, php-ldap, php-curl
  • Debian:php5-common, php5-mysql, php5-gd, php5-ldap, php5-curl, php5-json
  • Linux-kernelbeveiliging (SElinux of AppArmor) - moet worden uitgeschakeld of in de permissieve modus worden gezet
  • OpenSSH-server/client
  • BASH (aanbevolen:versie 4 of hoger)
  • NTP-server - De tijd van alle servers moet onder één tijdzone worden gesynchroniseerd
  • socat of netcat - voor het streamen van back-ups

En het ondersteunt verschillende besturingssystemen:

  • Red Hat Enterprise Linux 6.x/7.x/8.x
  • CentOS 6.x/7.x/8.x
  • Ubuntu 12.04/14.04/16.04/18.04 LTS
  • Debian 7.x/8.x/9.x/10.x

Als ClusterControl wordt geïnstalleerd via installatiescript (install-cc) of pakketbeheerder (yum/apt), wordt automatisch aan alle afhankelijkheden voldaan.

Voor PostgreSQL ondersteunt het 9.6/10.x/11.x/12.x-versies. U vindt een volledige lijst van de ondersteunde databases in de documentatie.

Het vereist alleen wachtwoordloze SSH-toegang tot de databaseknooppunten (met behulp van privé- en openbare sleutels) en een bevoorrechte OS-gebruiker (dit kan een root- of sudo-gebruiker zijn).

Het installatieproces

PGHoard-installatieproces

We gaan ervan uit dat u uw PostgreSQL-database in gebruik heeft, dus laten we de resterende pakketten installeren. PGHoard is een Python-pakket, dus nadat je de vereiste pakketten hebt geïnstalleerd, kun je het installeren met het pip-commando:

$ apt install postgresql-server-dev-11 python3 python3-pip python3-snappy

$ pip3 install pghoard

Als onderdeel van dit installatieproces moet je de PostgreSQL-instantie voorbereiden om met deze tool te werken. Hiervoor moet je de postgresql.conf bewerken om WAL-archief toe te staan ​​en de max_wal_senders verhogen:

wal_level = logical

max_wal_senders = 4

archive_mode = on

archive_command = pghoard_postgres_command --mode archive --site default --xlog %f

Voor deze wijziging moet de database opnieuw worden opgestart:

$ service postgresql restart

Laten we nu een databasegebruiker maken voor PGHoard:

$ psql

CREATE USER pghoard PASSWORD 'Password' REPLICATION;

En voeg de volgende regel toe aan het bestand pg_hba.conf:

host    replication  pghoard  127.0.0.1/32/32  md5

Laad de databaseservice opnieuw:

$ service postgresql reload

Om het te laten werken, moet je een JSON-configuratiebestand voor PGHoard maken. We zullen dit zien in het volgende gedeelte 'Gebruik'.

ClusterControl-installatieproces

Er zijn verschillende installatiemethoden zoals vermeld in de documentatie. In het geval van handmatige installatie worden de vereiste pakketten gespecificeerd in dezelfde documentatie en is er een stapsgewijze handleiding voor het hele proces.

Laten we een voorbeeld bekijken met het automatische installatiescript.

$ wget http://www.severalnines.com/downloads/cmon/install-cc

$ chmod +x install-cc

$ sudo ./install-cc   # omit sudo if you run as root

Het installatiescript zal proberen de volgende taken te automatiseren:

  • Installeer en configureer een lokale MySQL-server (gebruikt door ClusterControl om monitoringgegevens op te slaan)
  • Installeer en configureer het ClusterControl-controllerpakket via pakketbeheerder
  • ClusterControl-afhankelijkheden installeren via pakketbeheerder
  • Apache en SSL configureren
  • ClusterControl API-URL en token configureren
  • Configureer ClusterControl Controller met minimale configuratie-opties
  • Schakel de CMON-service in bij het opstarten en start het op

Als u het genoemde script uitvoert, ontvangt u een vraag over het verzenden van diagnostische gegevens:

$ sudo ./install-cc

!!

Only RHEL/Centos 6.x|7.x|8.x, Debian 7.x|8.x|9.x|10.x, Ubuntu 14.04.x|16.04.x|18.04.x LTS versions are supported

Minimum system requirements: 2GB+ RAM, 2+ CPU cores

Server Memory: 1024M total, 922M free

MySQL innodb_buffer_pool_size set to 512M

Severalnines would like your help improving our installation process.

Information such as OS, memory and install success helps us improve how we onboard our users.

None of the collected information identifies you personally.

!!

=> Would you like to help us by sending diagnostics data for the installation? (Y/n):

Vervolgens begint het met het installeren van de vereiste pakketten. De volgende vraag gaat over de hostnaam die zal worden gebruikt:

=> The Controller hostname will be set to 192.168.100.116. Do you want to change it? (y/N):

Wanneer de lokale database is geïnstalleerd, zal het installatieprogramma deze beveiligen door een root-wachtwoord aan te maken dat u moet invoeren:

=> Starting database. This may take a couple of minutes. Do NOT press any key.

Redirecting to /bin/systemctl start mariadb.service

=> Securing the MySQL Server ...

=> !! In order to complete the installation you need to set a MySQL root password !!

=> Supported special password characters: [email protected]#$%^&*()_+{}<>?

=> Press any key to proceed ...

En een CMON-gebruikerswachtwoord, dat door ClusterControl zal worden gebruikt:

=> Set a password for ClusterControl's MySQL user (cmon) [cmon]

=> Supported special characters: [email protected]#$%^&*()_+{}<>?

=> Enter a CMON user password:

Dat is het. Op deze manier heb je alles op zijn plaats zonder iets handmatig te installeren of te configureren.

=> ClusterControl installation completed!

Open your web browser to http://192.168.100.116/clustercontrol and enter an email address and new password for the default Admin User.

Determining network interfaces. This may take a couple of minutes. Do NOT press any key.

Public/external IP => http://10.10.10.10/clustercontrol

Installation successful. If you want to uninstall ClusterControl then run install-cc --uninstall.

De eerste keer dat u de gebruikersinterface opent, moet u zich registreren voor de gratis proefperiode van 30 dagen.

Nadat uw gratis proefperiode van 30 dagen is afgelopen, wordt uw installatie automatisch omgezet in de community-editie, tenzij je een commerciële licentie hebt.

Gebruik van back-upsbeheer

PGHoards-gebruik

Nadat deze tool is geïnstalleerd, moet je een JSON-bestand (pghoard.json) maken met de PGHoard-configuratie. Dit is een voorbeeld:

{

"backup_location": "/var/lib/pghoard",

"backup_sites": {

"default": {

"nodes": [

{

"host": "127.0.0.1",

"password": "Password",

"port": 5432,

"user": "pghoard"

}

],

"object_storage": {

"storage_type": "local",

"directory": "./backups"

},

"pg_data_directory": "/var/lib/postgresql/11/main/"

}

}

}

In dit voorbeeld nemen we een back-up en slaan we deze lokaal op, maar u kunt ook een cloudaccount configureren en daar opslaan:

"object_storage": {

"aws_access_key_id": "AKIAQTUN************",

"aws_secret_access_key": "La8YZBvN********************************",

"bucket_name": "pghoard",

"region": "us-east-1",

"storage_type": "s3"

},

Meer details over de configuratie vindt u in de documentatie.

Laten we nu de back-up uitvoeren met dit JSON-bestand:

$ pghoard --short-log --config pghoard.json

INFO pghoard initialized, own_hostname: 'pg1', cwd: '/root'

INFO Creating a new basebackup for 'default' because there are currently none

INFO Started: ['/usr/lib/postgresql/11/bin/pg_receivewal', '--status-interval', '1', '--verbose', '--directory', '/var/lib/pghoard/default/xlog_incoming', '--dbname', "dbname='replication' host='127.0.0.1' port='5432' replication='true' user='pghoard'"], running as PID: 19057

INFO Started: ['/usr/lib/postgresql/11/bin/pg_basebackup', '--format', 'tar', '--label', 'pghoard_base_backup', '--verbose', '--pgdata', '/var/lib/pghoard/default/basebackup_incoming/2020-05-21_13-13_0', '--wal-method=none', '--progress', '--dbname', "dbname='replication' host='127.0.0.1' port='5432' replication='true' user='pghoard'"], running as PID: 19059, basebackup_location: '/var/lib/pghoard/default/basebackup_incoming/2020-05-21_13-13_0/base.tar'

INFO Compressed 83 byte open file '/var/lib/pghoard/default/xlog_incoming/00000003.history' to 76 bytes (92%), took: 0.001s

INFO 'UPLOAD' transfer of key: 'default/timeline/00000003.history', size: 76, origin: 'pg1' took 0.001s

INFO Compressed 16777216 byte open file '/var/lib/postgresql/11/main/pg_wal/000000030000000000000009' to 799625 bytes (5%), took: 0.175s

INFO 'UPLOAD' transfer of key: 'default/xlog/000000030000000000000009', size: 799625, origin: 'pg1' took 0.002s

127.0.0.1 - - [21/May/2020 13:13:31] "PUT /default/archive/000000030000000000000009 HTTP/1.1" 201 -

INFO Compressed 16777216 byte open file '/var/lib/pghoard/default/xlog_incoming/000000030000000000000009' to 799625 bytes (5%), took: 0.190s

INFO 'UPLOAD' transfer of key: 'default/xlog/000000030000000000000009', size: 799625, origin: 'pg1' took 0.028s

INFO Compressed 16777216 byte open file '/var/lib/pghoard/default/xlog_incoming/00000003000000000000000A' to 789927 bytes (5%), took: 0.109s

INFO 'UPLOAD' transfer of key: 'default/xlog/00000003000000000000000A', size: 789927, origin: 'pg1' took 0.002s

INFO Compressed 16777216 byte open file '/var/lib/postgresql/11/main/pg_wal/00000003000000000000000A' to 789927 bytes (5%), took: 0.114s

INFO 'UPLOAD' transfer of key: 'default/xlog/00000003000000000000000A', size: 789927, origin: 'pg1' took 0.002s

127.0.0.1 - - [21/May/2020 13:13:32] "PUT /default/archive/00000003000000000000000A HTTP/1.1" 201 -

INFO Ran: ['/usr/lib/postgresql/11/bin/pg_basebackup', '--format', 'tar', '--label', 'pghoard_base_backup', '--verbose', '--pgdata', '/var/lib/pghoard/default/basebackup_incoming/2020-05-21_13-13_0', '--wal-method=none', '--progress', '--dbname', "dbname='replication' host='127.0.0.1' port='5432' replication='true' user='pghoard'"], took: 1.940s to run, returncode: 0

INFO Compressed 24337408 byte open file '/var/lib/pghoard/default/basebackup_incoming/2020-05-21_13-13_0/base.tar' to 4892408 bytes (20%), took: 0.117s

INFO 'UPLOAD' transfer of key: 'default/basebackup/2020-05-21_13-13_0', size: 4892408, origin: 'pg1' took 0.008s

In de map "backup_location" (in dit geval /var/lib/pghoard), vindt u een pghoard_state.json-bestand met de huidige status:

$ ls -l /var/lib/pghoard

total 48

drwxr-xr-x 6 root root  4096 May 21 13:13 default

-rw------- 1 root root 42385 May 21 15:25 pghoard_state.json

En een sitemap (in dit geval "default/" genoemd) met de back-up:

$ ls -l /var/lib/pghoard/default/

total 16

drwxr-xr-x 2 root root 4096 May 21 13:13 basebackup

drwxr-xr-x 3 root root 4096 May 21 13:13 basebackup_incoming

drwxr-xr-x 2 root root 4096 May 21 13:13 xlog

drwxr-xr-x 2 root root 4096 May 21 13:13 xlog_incoming

U kunt de back-uplijst controleren met het volgende commando:

$ pghoard_restore list-basebackups --config pghoard.json

Available 'default' basebackups:

Basebackup                                Backup size    Orig size  Start time

----------------------------------------  -----------  -----------  --------------------

default/basebackup/2020-05-21_13-13_0            4 MB        23 MB  2020-05-21T13:13:31Z

ClusterControl-gebruik

Hiervoor gaan we ervan uit dat u uw PostgreSQL-databasecluster hebt geïmporteerd in ClusterControl of dat u deze met dit systeem hebt geïmplementeerd.

Selecteer in ClusterControl uw cluster en ga naar het gedeelte "Back-up" en selecteer vervolgens "Back-up maken".

Voor dit voorbeeld gebruiken we de optie "Back-up plannen". Wanneer u een back-up plant, moet u naast het selecteren van de algemene opties zoals methode of opslag ook de planning/frequentie specificeren.

U moet één methode kiezen, de server waarvan de back-up wordt genomen , en waar u het wilt opslaan. U kunt uw back-up ook uploaden naar de cloud (AWS, Google of Azure) door de bijbehorende knop in te schakelen.

Vervolgens moet u het gebruik van compressie, codering en de retentie specificeren van uw back-up. In deze stap kunt u ook de functie "Back-up verifiëren" inschakelen, waarmee u kunt bevestigen dat de back-up bruikbaar is door deze in een ander knooppunt te herstellen.

Als u de optie "Upload back-up naar de cloud" inschakelt, zie een sectie om de cloudprovider en de referenties op te geven. Als u uw cloudaccount niet met ClusterControl hebt geïntegreerd, moet u naar ClusterControl -> Integraties -> Cloud Providers gaan om het toe te voegen.

In de back-upsectie kunt u de voortgang van de back-up zien, en informatie zoals de methode, grootte, locatie en meer.

ClusterControl-opdrachtregel (s9s)

Voor het scripten en automatiseren van taken, of zelfs als je gewoon de voorkeur geeft aan de opdrachtregel, heeft ClusterControl de s9s-tool. Het is een opdrachtregelprogramma voor het beheren van uw databasecluster. Laten we een voorbeeld bekijken van het maken en weergeven van back-ups met deze tool:

$ s9s backup --list --cluster-id=40 --long --human-readable
$ s9s backup --create --backup-method=pg_basebackup --cluster-id=40 --nodes=192.168.100.125 --backup-directory=/tmp --wait

U kunt meer voorbeelden en informatie vinden in de documentatiesectie van ClusterControl CLI.

Conclusie

Als conclusie van het vergelijken van deze genoemde back-upbeheersystemen kunnen we stellen dat PGHoard een gratis maar complexe oplossing is voor deze taak. Je hebt wat tijd nodig om te begrijpen hoe het werkt en hoe je het moet configureren, omdat de officiële documentatie daar een beetje slecht over is. Het ziet er ook een beetje verouderd uit, aangezien de laatste release 1 jaar geleden was. Bovendien is ClusterControl een alles-in-één beheersysteem met veel functies, niet alleen back-upbeheer, met een gebruiksvriendelijke en gebruiksvriendelijke gebruikersinterface. Het heeft een community (met beperkte beschikbare functies) en betaalde versies met een gratis proefperiode van 30 dagen. De documentatie is duidelijk en volledig, met voorbeelden en gedetailleerde informatie.

We hopen dat deze blog je helpt om de beste beslissing te nemen om je gegevens veilig te houden.


  1. Een Excel-spreadsheet maken vanuit een Oracle-database

  2. Breng gegevens over tussen databases met PostgreSQL

  3. Hoe MySQL-databases en tabellen te repareren

  4. Meerdere vertraagde replicatieslaves voor noodherstel met lage RTO