Postgres
Version compatibility: PowerSync requires Postgres version 11 or greater.
- Ensure logical replication is enabled
- Create a PowerSync database user
- Create
powersync
logical replication publication
Supabase
Supabase
1. Ensure logical replication is enabled
No action required: Supabase has logical replication enabled by default.2. Create a PowerSync database user
SELECT
privilege, and for the publication mentioned in the next step (as well as for any other publications that may exist).3. Create “powersync” publication
AWS RDS
AWS RDS
Prerequisites
The instance must be publicly accessible using an IPv4 address.
1. Ensure logical replication is enabled
Set therds.logical_replication
parameter to 1
in the parameter group for the instance:
2. Create a PowerSync database user
Create a PowerSync user on Postgres:SELECT
privilege, and for the publication (as well as for any other publications that may exist).3. Create “powersync” publication
Azure Postgres
Azure Postgres
PowerSync supports both “Azure Database for PostgreSQL” and “Azure Database for PostgreSQL Flexible Server”.To restrict read access to specific tables, explicitly list allowed tables for both the
Prerequisites
The database must be accessible on the public internet. Once you have created your database, navigate to Settings → Networking and enable Public access.1. Ensure logical replication is enabled
Follow the steps as noted in this Microsoft article to allow logical replication.2. Create a PowerSync database user
SELECT
privilege, and for the publication mentioned in the next step (as well as for any other publications that may exist).3. Create “powersync” publication
Google Cloud SQL
Google Cloud SQL
1. Ensure logical replication is enabled
In Google Cloud SQL Postgres, enabling the logical replication is done using flags:
2. Create a PowerSync database user
SELECT
privilege, and for the publication mentioned in the next step (as well as for any other publications that may exist).3. Create “powersync” publication
Neon
Neon
Neon is a serverless Postgres environment with an innovative pricing model that separates storage and compute.To restrict read access to specific tables, explicitly list allowed tables for both the
1. Ensure logical replication is enabled
To Ensure logical replication is enabled:- Select your project in the Neon Console.
- On the Neon Dashboard, select Settings.
- Select Logical Replication.
- Click Enable to Ensure logical replication is enabled.
2. Create a PowerSync database user
SELECT
privilege, and for the publication mentioned in the next step (as well as for any other publications that may exist).3. Create “powersync” publication
Fly Postgres
Fly Postgres
Fly Postgres is a Fly app with flyctl sugar on top to help you bootstrap and manage a database cluster for your apps.
To restrict read access to specific tables, explicitly list allowed tables for both the
1. Ensure logical replication is enabled
Once you’ve deployed your Fly Postgres cluster, you can use the following command to Ensure logical replication is enabled:
2. Create a PowerSync database user
SELECT
privilege, and for the publication mentioned in the next step (as well as for any other publications that may exist).3. Create “powersync” publication
PlanetScale
PlanetScale
1. Ensure logical replication is enabled
No action required: PlanetScale has logical replication (wal_level = logical
) enabled by default.2. Create a PowerSync database user
SELECT
privilege, and for the publication mentioned in the next step (as well as for any other publications that may exist).3. Create “powersync” publication
Other / Self-hosted
Other / Self-hosted
Need help? Simply contact us on Discord and we’ll help you get set up.
Alternatively, you can use the below SQL commands to check and Ensure logical replication is enabled:Note that Postgres must be restarted after changing this config.If you’re using a managed Postgres service, there may be a setting for this in the relevant section of the service’s admin console.To restrict read access to specific tables, explicitly list allowed tables for both the
1. Ensure logical replication is enabled
PowerSync reads the Postgres WAL using logical replication in order to create sync buckets in accordance with the specified PowerSync Sync Rules.If you are managing Postgres yourself, setwal_level = logical
in your config file:
2. Create a PowerSync database user
SELECT
privilege, and for the publication mentioned in the next step (as well as for any other publications that may exist).3. Create “powersync” publication
Unsupported Hosted Postgres Providers
Due to the logical replication requirement, not all Postgres hosting providers are supported. Notably, some “serverless Postgres” providers do not support logical replication, and are therefore not supported by PowerSync yet.MongoDB
Version compatibility: PowerSync requires MongoDB version 6.0 or greater.
Permissions required - MongoDB Atlas
For MongoDB Atlas databases, the minimum permissions when using built-in roles are:changeStreamPreAndPostImages
on replicated collections (the default for new PowerSync instances), additionally add the dbAdmin
permission:
Privileges required - Self-hosted / Custom roles
For self-hosted MongoDB, or for creating custom roles on MongoDB Atlas, PowerSync requires the following privileges/granted actions:listCollections
: This privilege must be granted on the database being replicated.find
: This privilege must be granted either at the database level or on specific collections.changeStream
: This privilege must be granted at the database level (not on individual collections). In MongoDB Atlas, setcollection: ""
or checkApply to any collection
in MongoDB Atlas if you want to apply this privilege on any collection.- If replicating from multiple databases, this must apply to the entire cluster. Specify
db: ""
or checkApply to any database
in MongoDB Atlas.
- If replicating from multiple databases, this must apply to the entire cluster. Specify
- For the
_powersync_checkpoints
collection add the following privileges:createCollection
,dropCollection
,find
,changeStream
,insert
,update
, andremove
- To allow PowerSync to automatically enable
changeStreamPreAndPostImages
on replicated collections, additionally add thecollMod
permission on the database and all collections being replicated.
Post-Images
To replicate data from MongoDB to PowerSync in a consistent manner, PowerSync uses Change Streams with post-images to get the complete document after each change. This requires thechangeStreamPreAndPostImages
option to be enabled on replicated collections.
PowerSync supports three configuration options for post-images:
- Off: (
post_images: off
): UsesfullDocument: 'updateLookup'
for backwards compatibility. This was the default for older instances. However, this may lead to consistency issues, so we strongly recommend enabling post-images instead. - Automatic: (
post_images: auto_configure
) The default for new instances: Automatically enables thechangeStreamPreAndPostImages
option on collections as needed. Requires the permissions/privileges mentioned above. If a collection is removed from Sync Rules, developers can manually disablechangeStreamPreAndPostImages
. - Read-only: (
post_images: read_only
): UsesfullDocument: 'required'
and requireschangeStreamPreAndPostImages: { enabled: true }
to be set on every collection referenced in the Sync Rules. Replication will error if this is not configured. This option is ideal when permissions are restricted.
read_only
mode, run this on each collection:
PowerSync Cloud:
Configure the Post Images setting in the connection configuration in the Dashboard (right-click on your instance to edit it).
Self-Hosted PowerSync:
Configure
post_images
in the config.yaml
file.MongoDB Atlas private endpoints using AWS PrivateLink
If you need to use private endpoints with MongoDB Atlas, see Private Endpoints (AWS only).Migrating from MongoDB Atlas Device Sync
For more information on migrating from Atlas Device Sync to PowerSync, see our migration guide.MySQL (Beta)
Version compatibility: PowerSync requires MySQL version 5.7 or greater.
Binlog Configuration
To ensure that PowerSync can read the binary log, you need to configure your MySQL server to enable binary logging and configure it with the following server command options:- server_id: Uniquely identifies the MySQL server instance in the replication topology. Default value is 1.
- log_bin: ON. Enables binary logging. Default is ON for MySQL 8.0 and later, but OFF for MySQL 5.7.
- enforce_gtid_consistency: ON. Enforces GTID consistency. Default is OFF.
- gtid_mode: ON. Enables GTID based logging. Default is OFF.
- binlog_format: ROW. Sets the binary log format to row-based replication. This is required for PowerSync to correctly replicate changes. Default is ROW.
Database User Configuration
PowerSync also requires a MySQL user with REPLICATION and SELECT permission on the source databases. These can be added by running the following SQL commands:Additional Configuration (optional)
Binlog
The binlog can be configured to limit logging to specific databases. By default, events for tables in all the databases on the MySQL server will be logged.- binlog-do-db: Only updates for tables in the specified database will be logged.
- binlog-ignore-db: No updates for tables in the specified database will be logged.