Scalingo Database Addons
You applications need databases to store your data. As we believe your data should be located geographically close to your application servers we support the most common types of database.
We ensure your database is located at the same location as your applications. It provides the best performances and latency possible. Moreover you know where your data is.
Database Plans
Scalingo offers three classes of service with distinct characteristics, enabling you to choose the level of performance, replication, security and price that suits your use case. All our plans are 100% managed and billed on demand.
You can seamlessly switch between plans and service classes in just a few seconds, from the smallest single-node instance plan to the largest multi-node cluster plan, and everything in between.
Sandbox
The Sandbox class is designed for testing and development environments. It is ideal for evaluating our service or testing new technology.
It is not suitable for hosting production workloads due to its performance limitations and lack of guaranteed availability and backups.
Starter
The Starter class is designed for applications under development and non-critical, production environments. With an SLA of 98% and back-up retention of one month, it offers a secure, high-performance environment for a wide range of use cases.
Business
The Business class is Scalingo’s flagship. It guarantees high availability and reliability, which are essential for critical production applications. Thanks to hot replication of your data on a standby instance, we ensure service continuity along with a 99.96% SLA. For complete protection, backup retention is extended to 1 year.
Database Types
SQL
NoSQL
Backups Retention Policy
If your database is in a paid plan (i.e. it’s not “free plan”), we’ll automatically make periodic backups of your database on a daily basis, at around 1:00 AM Central European Time (CET or UTC+0100). The time of your daily backup is configurable via the web dashboard of your database or using the CLI. The scheduled date is not strongly enforced: it might get delayed depending on the load on our infrastructure.
Using the Database Dashboard
- From your web browser, open your database dashboard
- Click the Backups tab
- Locate the Backup schedule block
- Click the Schedule button
- Make sure to check the I want to enable scheduled backups checkbox
- Pick an hour (timezone is UTC)
- Validate by clicking the Update button
Using the Command Line
- Make sure you have correctly setup the Scalingo command line tool
- Configure the time of backup:
- By setting an hour:
scalingo --app my-app --addon [YOUR ADDON KIND] backups-config --schedule-at 3
In this example, we ask the platform to create the backups at ~03:00. Note: The timezone used is the local timezone of the machine running the command.
- By setting an hour and a timezone:
scalingo --app my-app --addon [YOUR ADDON KIND] backups-config --schedule-at "4:00 UTC"
In this example, we ask the platform to create the backup at ~04:00 UTC. The output should look like this:
-----> Periodic backups will be done daily at 6:00 CET
- By setting an hour:
Retention Policy for Daily Backups
We keep a limited amount of backups depending on your database plan. A daily backup is retained for the last 7 days. That means that 7 backups will exist, one for each of the last 7 days. A weekly backup means that only one backup is saved over a 7 days period. A monthly backup means that only 1 backup is saved over the course of a month.
Plan | Weekly Backups Retained | Monthly Backup Retained |
---|---|---|
Sandbox/Free | N/A | N/A |
Starter | 4 weeks | 0 months |
Business | 8 weeks | 12 months |
Retention Policy for Manual Backups
You can also manually trigger a backup for your database at any time you want. The number of manual backups that you can retain is limited by your plan:
Plan | Backups Retained |
---|---|
Sandbox/Free | N/A |
Starter | 10 |
Business | 50 |
In case a database is removed from an application, the retention policy remains untouched: backups are not instantly deleted.
Creating a Manual Backup
Using the Database Dashboard
- From your web browser, open your database dashboard
- Click the Backups tab
- Locate the Backup Settings block
- Click the Make Manual Backup button
- Locate the Backups block
- Click the Trigger manual backup button
Using the Command Line
- Make sure you have correctly setup the Scalingo command line tool
- Ask the platform to backup the database:
scalingo --app my-app --addon [YOUR ADDON KIND] backups-create
After a while, the output should look like this:
-----> Backup successfully finished
Encryption at Rest
All databases created after the 6th of January 2019 have encryption at rest enabled. In other words, all your data is encrypted before being stored on disk.
Encryption at rest leverages a feature of the Linux Kernel allowing to encrypt
data at the disk level named dm-crypt
. The algorithm used is
aes-xts-plain64
with a key size of 256 bits and hashed using SHA-256
. This
method is considered secure and standard in the industry. To reduce the attack
surface, each instance of each database has its own cryptographic key to
protect its data, so getting access to one key wouldn’t allow an attacker to
get plain data from another database. The keys are stored in a database which
is itself encrypted and protected by authentication.
Communication With TLS
We enable for all database types the possibility to connect to them using TLS. By default, you can connect both with or without TLS to your database. You can also enforce all connections to use TLS by activating the “Force TLS Connections” feature in the web dashboard of your addon:
Moreover, we also encrypt all communications between the members of cluster:
- from the gateways to the leader,
- from the leader to the followers,
- between the cluster orchestrator and its database for PostgreSQL databases.
Connection Timeouts
Most of our high availability setups contain a HAProxy as entry point to the actual database nodes. This HAProxy has a few timeouts configured which may impact your application, especially if you reuse connections. The concerned databases are:
- Scalingo for Elasticsearch®:
- Timeout when the client is inactive: 1 minute.
- Timeout when the server is inactive: 2 minutes.
- Maximum allowed time to wait for a complete HTTP request: 5 seconds.
- Scalingo for PostgreSQL®:
- Timeout when the client is inactive: 1 day.
- Timeout when the server is inactive: 30 minutes.
- Inactivity timeout on the client side for half-closed connections: 5 minutes.
- Scalingo for Redis®:
- Timeout when the client is inactive: 5 minutes.
- Timeout when the server is inactive: 5 minutes.
- Inactivity timeout on the client side for half-closed connections: 1 hour.