| Info |
|---|
| title | Spekulatiivista ja tulevaisuuteen katsovaa |
|---|
|
Tällä sivulla mainittuja palvelimia Siilo ja Piilo ei vielä ole otettu käyttöön. Käyttöönotto tapahtuu Traconin (2017) jälkeen. |
Traconin tietojärjestelmien ensisijainen tietokantavaihtoehto on aina PostgreSQL. Syitä ovat ominaisuussetti, luotettavuus, toimintavarmuus, turvallisuus sekä se, että oman PostgreSQL-asennuksemme (palvelimet Siilo ja Piilo) suunnittelu ja toteutus monitorointeineen ja varmuuskopiointeineen on tehty erityisellä huolellisuudella.
...
Tietokantojen varmuuskopiointiratkaisu on Barman. Käytämme Siilon varmuuskopiointiin käytämme Barmanin dokumentaation suosittelemaa varmuuskopiointisetuppia:

Vanhojen Docker-pohjaisten poistuvien PostgreSQL-palvainten varmuuskopiointiin käytämme samaa ilman archive_commandia, koska Japsu on laiska eikä jaksa setupata SSH-avaimia sinne Docker-konttien sisään.
Barman-varmuuskopiointipalvelin on konfiguroitu Ansible-konfiguraationhallintajärjestelmällä. Tästä vastaa rooli postgresql-barman.
Varmuuskopioinnin tila
| Palvelin | PostgreSQL:n versio | Todettu pvm | Tila |
|---|
| Siilo | 10.0 | 7.9.2017 | Ei vielä luotu. |
| Neula | 9.5 | 11.9.2017 | Varmuuskopiointi toiminnassa. |
| Nuoli | 9.5 | 7.9.2017 | Varmuuskopiointi toiminnassa. |
| Monokkeli | 9.5 | 7.9.2017 | Varmuuskopiointi toiminnassa. |
| Kurikka | 9.1 | 7.9.2017 | Ei Barmanin piirissä. Siellä on niin vanha PostgreSQL, että sitä ei yhtä kätevästi saa pultattua kiinni Barmaniin. Täytyy tyytyä jokaöiseen sqldumppiin. |
Palomuuri
SSH kaikkialta.
...
| Code Block |
|---|
| language | bash |
|---|
| theme | Midnight |
|---|
| title | piilossa |
|---|
|
sudo -u barman barman check siilo # onko kaikki hyvin?
sudo -u barman barman backup siilo # tee base-varmuuskopio
sudo -u barman barman list-backup siilo # listaa varmuuskopiot
sudo -u barman barman recover siilo 20170902T162930 /tmp/foo # palauta varmuuskopio annettuun sijaintiin |
Siilo räjähti – Paniikkipalautus Nuolelle
Case: Siilo katosi maan päältä. Piilo toimii, varmuuskopiot tallessa. Hoida tietokannan ajantasaisin tila vaan johonkin jossa conikuvat.fi pääsee käsiksi siihen.
Järjestä barman@piilolle SSH-pääsy Nuolelle esim. omalle käyttäjätunnuksellesi (oma avain barman@piilon authorized_keysiin ja ssh -A barman@piilo).
| Code Block |
|---|
|
barman@piilo $ barman recover siilo 20181025T093714 --remote-ssh-command 'ssh japsu@nuoli.tracon.fi' /home/japsu/main
root@nuoli # curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
root@nuoli # cat > /etc/apt/sources.list/pgdg.list << EOF
deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main
EOF
root@nuoli # apt update && apt install postgresql-11
root@nuoli # rm -rf /var/lib/postgresql/11/main
root@nuoli # mv /home/japsu/main /var/lib/postgresql/11/
root@nuoli # chown -R postgres:postgres /var/lib/postgresql/11/main
root@nuoli # cat >> /etc/postgresql/11/main/pg_hba.conf << EOF
# docker bridge
host all all 172.17.0.1/16 md5
EOF
root@nuoli # cat >> /etc/postgresql/11/main/postgresql.conf << EOF
listen_address = '*'
root@nuoli # sudo ufw allow from 172.17.0.1/16 to any port 5433
root@nuoli # service postgresql start |
Nyt voikin sit muuttaa Ansiblesta esim. edegal_postgresql_hostname = nuoli.tracon.fi:5433 ja deplata.
Tiettyyn ajanhetkeen palaaminen varmuuskopiosta
Voi hitsin pimpulat! Joku Jesse hakkeroi sisään Kompassiin ja sotki datan. Nyt täytyy palata ajassa takaisin päin viimeisimpään tunnettuun ehjään ajanhetkeen. Jos Siilossa on vielä PostgreSQL pystyssä, varmuuskopioidaan sen nykyinen, vahingoittunut tila forensiikkaa ym. varten:
| Code Block |
|---|
| language | bash |
|---|
| theme | Midnight |
|---|
| title | piilossa |
|---|
|
sudo -u barman backup siilo |
Seuraavaksi sammutetaan Siilosta PostgreSQL palautuksen ajaksi:
| Code Block |
|---|
| language | bash |
|---|
| theme | Midnight |
|---|
| title | siilossa |
|---|
|
sudo systemctl stop postgresql |
Etsitään ensin sopiva base backup (todnäk toiseksi uusin, koska uusin on äsken varmuuskopioimamme vahingoittunut tila) ja sitten palautetaan tietokanta kyseistä varmuuskopiota ja transaktiolokia käyttäen haluttuun ajanhetkeen ylikirjoittaen Siilon nykyinen tila:
| Code Block |
|---|
| language | bash |
|---|
| theme | Midnight |
|---|
| title | piilossa |
|---|
|
sudo -u barman barman list-backup siilo
sudo -u barman barman recover siilo 20170902T162930 /var/lib/postgresql/9.6/main --target-time "2017-09-03T20:00:00Z" --remote-ssh-command "ssh postgres@siilo.tracon.fi" |
Siilon PostgreSQL:n datahakemisto on nyt laitettu sellaiseen kuntoon, että kun PostgreSQL seuraavan kerran käynnistyy, se rullaa tietokannan takaisin valittuun ajanhetkeen.
Tutustutaan Barmanin meille generoiman recovery.conf-tiedoston sisältöön ja varmistetaan että se on kosher. Sitten käynnistetään PostgreSQL, jolloin se suorittaa palautuksen. Tarkistetaan PostgreSQL:n lokista, että palautus sujui mallikkaasti. Lopulta poistetaan recovery.done-tiedosto, jolle nimelle PostgreSQL on uudelleennimennyt Barmanin generoiman recovery.confin.
| Code Block |
|---|
| language | bash |
|---|
| theme | Midnight |
|---|
| title | siilossa |
|---|
|
sudo cat /var/lib/postgresql/9.6/main/recovery.conf
sudo systemctl start postgresql
sudo tail -n500 /var/log/postgresql/postgresql-9.6-main.log
sudo rm /var/lib/postgresql/9.6/main/recovery.done |
Tietokannan palautuksen jälkeen varmuuskopiointi pitää vielä resetoida ja potkaista uudelleen käyntiin. Tässä vaiheessa on hyvä tehdä uusi base backup palautetusta, ehjästä tilasta.
| Code Block |
|---|
| language | bash |
|---|
| theme | Midnight |
|---|
| title | piilossa |
|---|
|
sudo -u barman barman check siilo # näyttää parit FAILEDit
sudo -u barman barman receive-wal --create-slot siilo
sudo -u barman barman receive-wal --reset siilo
sudo -u barman barman check siilo # saattaa kestää muutaman sekunnin kunnes FAILEDit ovat vaihtuneet OK:ksi
sudo -u barman barman backup siilo |
PostgreSQL:n päivitys
Oletus: vanha versio 10, uusi versio 11, päivitettävä palvelin Siilo, varmuuskopiointipalvelin Piilo
| Code Block |
|---|
| language | bash |
|---|
| title | piilossa |
|---|
|
# eka on hyvä käydä ottaas täys varmuuskopio piilossa vanhalla versiolla
sudo -u barman barman backup siilo
# ja asentaas uuden version clientit ku vanhat ei oo yhteensopivia uuden serverin kanssa
sudo apt update
sudo apt upgrade
sudo apt install postgresql-client-11 |
| Code Block |
|---|
| language | bash |
|---|
| title | siilossa |
|---|
|
# ÄLÄ poista vanhaa versiota palvelimesta vielä tässä vaiheessa! Sen binäärejä tarvitaan rullaamaan kanna uuteen versioon.
sudo apt update
sudo apt upgrade
sudo apt install postgresql-11
# asennus loi tyhjän tietokannan, joka on tiellä. varmistathan että tässä on UUDEN version numero, ei vanhan
sudo pg_dropcluster 11 main
# ja sit me päivitetään
sudo pg_upgradecluster 10 main
# tässä vaiheessa on hyvä testaa että esim. https://conikuvat.fi toimaa
# sit voiki poistaa vanhan. varmista että tässä on VANHAN version numero, ei uuden
sudo pg_dropcluster 10 main
sudo apt purge postgresql-10 |
| Code Block |
|---|
| language | bash |
|---|
| title | piilossa |
|---|
|
# Sit pitäis vielä suostutella Barman jatkamaan varmuuskopiointia uudesta versiosta. Höhö lol mitenhän se tehdään.
sudo -iu barman
cd /var/lib/barman
mv siilo siilo-10
barman cron
barman switch-wal siilo
# Sit iteroidaan kunnes kaikki FAILEDit muuttuu OK:ks
barman status siilo
# Otetaan täys backup uudesta versiosta
barman backup siilo
# Lopuks hyvä tarkastaa vielä kaikki
for cmd in check status replication-status; do barman $cmd siilo; done |