No description
Find a file
2022-09-01 17:10:40 +02:00
.github/workflows Build with composer included. 2022-08-28 13:18:57 +02:00
syncer Pruner implemented. 2022-09-01 17:10:40 +02:00
.gitignore Working on CTRL+C and everything. 2022-09-01 16:31:45 +02:00
.php-cs-fixer.php Initial working version. 2022-08-23 14:19:05 +02:00
bake.hcl Fix: Push on Trapped Container Termination, Postgres Healthcheck & Typos 2022-09-01 15:28:13 +02:00
composer.json Pruner implemented. 2022-09-01 17:10:40 +02:00
composer.lock Pruner implemented. 2022-09-01 17:10:40 +02:00
docker-compose.yml Fix: generated sql has varying timestamps breaking the cache hash 2022-09-01 16:36:30 +02:00
Dockerfile.mariadb Pruner implemented. 2022-09-01 17:10:40 +02:00
Dockerfile.postgres Pruner implemented. 2022-09-01 17:10:40 +02:00
Dockerfile.traptest Working on CTRL+C and everything. 2022-09-01 16:31:45 +02:00
LICENSE Initial commit 2022-08-21 04:35:12 +02:00
mysql.runit Fix: Push on Trapped Container Termination, Postgres Healthcheck & Typos 2022-09-01 15:28:13 +02:00
postgres.runit Initial working version. 2022-08-23 14:19:05 +02:00
postgres_healthcheck.sh Fix: Push on Trapped Container Termination, Postgres Healthcheck & Typos 2022-09-01 15:28:13 +02:00
README.md Add readme 2022-08-28 13:45:10 +02:00
start.sh Working on CTRL+C and everything. 2022-09-01 16:31:45 +02:00
sync Initial working version. 2022-08-23 14:19:05 +02:00
sync-prune.runit Pruner implemented. 2022-09-01 17:10:40 +02:00
sync-pull.runit Fix: Push on Trapped Container Termination, Postgres Healthcheck & Typos 2022-09-01 15:28:13 +02:00
sync-push.runit Initial working version. 2022-08-23 14:19:05 +02:00
TODO.md Pruner implemented. 2022-09-01 17:10:40 +02:00
traptest.sh Working on CTRL+C and everything. 2022-09-01 16:31:45 +02:00

S3 backed Maria & Postgres Databases

This project comes out of frustration with ephemeral services not providing a trivial database for non-critical services that can be persisted beyond a restart.

This system starts and checks an s3 bucket for database dumps, downloads loads the most recent one and resets the database to that state.

Every 600 seconds after that, it dumps the database and persists it to s3 if there have been any changes.

This is extremely not meant for production workloads or anything you want to keep. QA systems, silly side projects, anything you don't want to pay Bezos for RDS for. On that note, please consider using Minio or any other S3 provider than AWS.

Configuration:

MariaDB

      MARIADB_RANDOM_ROOT_PASSWORD: "yes"
      MARIADB_USER: example
      MARIADB_PASSWORD: changeme
      MARIADB_DATABASE: s3db
      S3_ENDPOINT: http://minio:9000/
      S3_API_KEY: <<secret>>
      S3_API_SECRET: <<secret>>
      S3_USE_PATH_STYLE_ENDPOINT: "yes" # This is only strictly neccisary with Minio, maybe others. 
      S3_BUCKET: "s3db"
      S3_PREFIX: "test/mariadb/"

Postgres

      POSTGRES_USER: example
      POSTGRES_PASSWORD: changeme
      S3_ENDPOINT: http://minio:9000/
      S3_API_KEY: <<secret>>
      S3_API_SECRET: <<secret>>
      S3_USE_PATH_STYLE_ENDPOINT: "yes" # This is only strictly neccisary with Minio, maybe others. 
      S3_BUCKET: "s3db"
      S3_PREFIX: "test/postgres/"