7 Backing up stuff in Google Cloud Storage
Guillem Borrell Nogueras edited this page 2 years ago

HOWTO

Once you have a subscription, these are the steps:

  1. Create a bucket in Google Cloud Storage. It's better if it's not a public bucket
  2. Create a service account in IAM & Admin of the subscription
  3. When creating the account, there's an option to add a role. This role has to be "Storage object Admin". If that has ever to be edited, it has to be edited in the initial IAM page, together with the other principals.
  4. Create a json file for the key of that service account, in the specific menu for service accounts, where the account was created.
  5. Install the google cloud SDK
  6. Authenticate the google cloud command with the service principal (gcloud auth activate-service-account --key-file=[KEY_FILE] )
  7. Use the gcloud command to copy the local file to the bucket (gcloud alpha storage cp /var/backups/cluster.sql gs://lab-backup-gbn/). You may do it for the users root and postgres, so that they can also back up files.
  8. Copy the following files in the folder /etc/systemd/system
  9. Run systemctl daemon-reload, enable, and start the timers in systemd

Files

database-daily-backup.service

[Unit]
Description=Daily PG Backup
Documentation=man:pg_dumpall(8)
ConditionACPower=true
After=postgresql.service network.target network-online.target systemd-networkd.service NetworkManager.service connman.service

[Service]
Type=oneshot
User=postgres
Group=postgres
ExecStart=/usr/bin/pg_dumpall -c -f /var/backups/cluster.sql
ExecStartPost=/usr/bin/gcloud alpha storage cp /var/backups/cluster.sql gs://lab-backup-gbn/
KillMode=process
TimeoutStopSec=900

database-daily-backup.timer

[Unit]
Description=Daily PG Backup
After=database-daily-backup.timer

[Timer]
OnCalendar=*-*-* 02:00
RandomizedDelaySec=10m
Persistent=true

[Install]
WantedBy=timers.target

lab-daily-backup.service

[Unit]
Description=Daily Lab backpu
Documentation=man:tar(8)
ConditionACPower=true
After=network.target network-online.target systemd-networkd.service NetworkManager.service connman.service

[Service]
Type=oneshot
ExecStart=tar --exclude '/home/guillem/lab/storage' -zcpvf /var/backups/lab.tgz /home/guillem/lab
ExecStartPost=/usr/bin/gcloud alpha storage cp /var/backups/lab.tgz gs://lab-backup-gbn/
KillMode=process
TimeoutStopSec=900

lab-daily-backup.timer

[Unit]
Description=Daily Lab Backup
After=lab-daily-backup.timer

[Timer]
OnCalendar=*-*-* 02:00
RandomizedDelaySec=10m
Persistent=true

[Install]
WantedBy=timers.target