Recommendations
- It is not recommended to share a PostgreSQL instance with any other services. It should be dedicated to host the Veeam Backup for Microsoft 365 configuration database and cached metadata only.
- For the supported version(s), always check the System Requirements page. Even before performing an upgrade to a newer version.
PgBouncer
For environments with more than 10 Proxies OR more than 100 Object Storage Repositories per VB365 Controller server, PgBouncer is required. This is to avoid overloading the PostgreSQL server’s resources and network, causing performance issues. PgBouncer helps by pooling those connections.
To deploy and configure, follow these steps:
- KB4758 - PostgreSQL and PgBouncer Sizing and Configuration Guide
- KB4728 - How to Install and Configure PgBouncer for Veeam Backup for Microsoft 365
- KB4760 - Overcoming TCP/IP Connection Limits with PgBouncer and PostgreSQL on Windows (Windows-only)
Sizing
| PostgreSQL | ||
|---|---|---|
| OS | Remote Linux server* | |
| CPU | 16 Cores | |
| RAM | 64 GB | |
| Disk | 100 GB | OS + software installation + logs. |
| IOPS | 7500 | Minimum. SSD storage is highly recommended. |
Note: The sizing above provides sufficient resources for ~50 VB365 Proxies. Using > 50 Proxies will require additional compute resources.
Note: Although Windows is supported, it is recommended to use Linux as OS for PostgreSQL. For Linux OS, disable RAM swapping or overcommit as stated in the docs.
Performance tweaking
Consider the following:
- If you select to “Install a new instance, the installation wizard will apply the right performance settings to the PostgreSQL Instance.
- If you select Use existing Instance, you should run Set-VBOPSQLDatabaseServerLimits after installing VB365.
- If the CPU or RAM resources are changed after Veeam Backup for Microsoft 365 installation, you must run this cmdlet again to adjust hardware resources of the PostgreSQL instance.
Note: You must restart the PostgreSQL service after you run this cmdlet.
Cache databases for Object Storage Repositories
Since version 8, cache is stored as a PostgreSQL database and is used to avoid most API calls.
For each Object Storage Repository, a database will be created.
As a rule of thumb provide 1% of the source data size as local cache for metadata.