Percona Backup MongoDB For Lazy Sysadmin

Percona Backup MongoDB ini sangat memudahkan kita agar bisa langsung menyimpan hasil backup ke DigitalOcean Spaces/Amazon S3, (ga usah repot bikin script manual backup, di kompresi ke .tar.gz lalu di upload ke S3).

Percona juga menyediakan versi docker dari Percona Backup MongoDB biar tidak usah repot dalam urusan instalasi.


How To Configure It

Berikut cara konfigurasinya:

  1. Buat docker-compose.yml
version: "3.3"

services:
  pbm:
    image: percona/percona-backup-mongodb:latest
    container_name: pbm-ctr
    environment:
      PBM_MONGODB_URI: mongodb://UsernameMongo:PasswordMongo@192.168.1.2:27017/?authSource=admin
    volumes:
      - ./pbm_config.yaml:/tmp/pbm_config.yaml
    network_mode: host
  1. Buat file config agar Percona Backup MongoDB bisa membaca lokasi Spaces. Beri nama pbm_config.yaml:
storage:
    type: s3
    s3:
      # endpoint is a must if you use other than amazon s3
      endpointUrl: "sgp1.digitaloceanspaces.com"
      region: sgp1.digitaloceanspaces.com
      bucket: namabucket
      # this prefix mean folder location, not name prefix
      prefix: production/
      credentials:
        access-key-id: accesskeydigitalocean
        secret-access-key: secretaccesskeydigitalocean
  1. Jalankan docker-compose up -d. Setelah jalan, apply config dengan cara docker exec -it pbm-ctr pbm config --file /tmp/pbm_config.yaml

    Output Setelah Apply Config

    Output Setelah Apply Config

  2. Jalankan docker exec -it pbm-ctr pbm backup --compression=gzip

    Backup ke Spaces Sukses!

    Backup ke Spaces Sukses!

  3. Untuk retention nya, kita bisa setup melalui s3cmd. Bagi yang belum tahu cara config s3cmd, silahkan kunjungi setup s3cmd . Selanjutnya buat file xml beri nama rule-retention-policy.xml

<?xml version="1.0" ?>
<LifecycleConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <Rule>
        <ID>3 days retention</ID>
        <Filter/>
        <Status>Enabled</Status>
        <Expiration>
            <ExpiredObjectDeleteMarker>true</ExpiredObjectDeleteMarker>
        </Expiration>
        <NoncurrentVersionExpiration>
            <NoncurrentDays>3</NoncurrentDays>
        </NoncurrentVersionExpiration>
        <AbortIncompleteMultipartUpload>
            <DaysAfterInitiation>3</DaysAfterInitiation>
        </AbortIncompleteMultipartUpload>
    </Rule>
</LifecycleConfiguration>

Jalankan perintah untuk set retention/lifecycle s3cmd setlifecycle rule-mongodb-retention.xml s3://backup-mongodb

3 Hari Hapus Otomatis

3 Hari Hapus Otomatis