All Products
Search
Document Center

AnalyticDB:Zero-ETL

Last Updated:Mar 28, 2026

Zero-ETL lets you replicate data from your online transaction processing (OLTP) databases to AnalyticDB for PostgreSQL in real time—without building or maintaining a data pipeline. It integrates transaction processing with data analysis, enabling end-to-end data synchronization and management.

Overview

Traditional extract, transform, load (ETL) pipelines introduce three common problems:

  • Cost: Each data source often requires a separate ETL tool, adding licensing and operational fees.

  • Complexity: Managing ETL jobs increases operational overhead and pulls engineering time away from application development.

  • Latency: Batch-based ETL runs on a schedule, so near-real-time analytics isn't feasible.

Zero-ETL addresses all three. It continuously replicates data from an OLTP source to an online analytical processing (OLAP) destination—AnalyticDB for PostgreSQL—so you can run analytics on fresh data without managing pipelines.

AnalyticDB for PostgreSQL supports zero-ETL tasks from the following sources:

  • PolarDB for PostgreSQL to AnalyticDB for PostgreSQL

  • PolarDB for MySQL to AnalyticDB for PostgreSQL

  • ApsaraDB RDS for PostgreSQL to AnalyticDB for PostgreSQL

  • ApsaraDB RDS for MySQL to AnalyticDB for PostgreSQL

Key concepts

TermDefinition
Zero-ETL taskA managed replication job between one source instance or cluster and one AnalyticDB for PostgreSQL destination instance.
Source instance/clusterThe OLTP database where data originates: ApsaraDB RDS for PostgreSQL, ApsaraDB RDS for MySQL, PolarDB for PostgreSQL, or PolarDB for MySQL.
Destination instanceThe AnalyticDB for PostgreSQL instance that receives the replicated data for analytics.
DDL synchronizationSchema-level changes (CREATE, ALTER, DROP, RENAME, TRUNCATE) replicated from source to destination.
DML synchronizationRow-level changes (INSERT, UPDATE, DELETE) replicated from source to destination.

Benefits

  • No pipeline management: Select source and destination instances or clusters to create a real-time sync task. No data pipelines to build or maintain.

  • No extra charges: Zero-ETL tasks are free. You pay only for the source and destination instances.

  • Multi-source analytics: Aggregate data from multiple source instances or clusters into a single AnalyticDB for PostgreSQL instance for global analysis.

Limitations

For the full list of limitations by source type, see the "Usage notes" sections of the corresponding Data Transmission Service (DTS) guides:

Billing

Zero-ETL tasks have no additional charge. You are billed only for the source instance or cluster and the destination AnalyticDB for PostgreSQL instance.

Supported regions

China (Shenzhen), China (Hangzhou), China (Shanghai), China (Beijing), China (Zhangjiakou), China (Ulanqab), China (Qingdao), China (Guangzhou), China East 2 Finance, China (Chengdu), China (Hong Kong), Malaysia (Kuala Lumpur), US (Virginia), US (Silicon Valley), Germany (Frankfurt), Indonesia (Jakarta), Japan (Tokyo), and Singapore.

Prerequisites

Before you begin, make sure you have:

Set up zero-ETL

Step 1: Create a service-linked role

Before creating a zero-ETL task, check that the service-linked role AliyunServiceRoleForADBPG exists in your account.

  1. Log on to the Resource Access Management (RAM) console. In the left-side navigation pane, choose Identities > Roles.

  2. Check whether AliyunServiceRoleForADBPG appears in the role list.

  3. If the role does not exist, click Create Role in the upper-left corner.

  4. Select Alibaba Cloud Service and enter a Principal Name.

  5. Click OK, then complete the Security Verification step in the confirmation dialog.

For details, see Create a RAM role for a trusted Alibaba Cloud service.

Step 2: Grant RAM user permissions

To let a RAM user create and manage zero-ETL tasks, attach two sets of permissions.

Permissions to manage AnalyticDB for PostgreSQL

Attach the AliyunGPDBFullAccess policy to the RAM user. See Grant permissions to a RAM user.

Permissions to create zero-ETL tasks

Create a custom policy that grants DTS access for data synchronization. Use one of the following sample scripts based on the scope you need.

Grant access to all instances and clusters:

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "dts:*",
            "Resource": [
                "acs:gpdb:*:*:*",
                "acs:rds:*:*:*",
                "acs:polardb:*:*:*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "dts:DescribeRegions",
                "dts:DescribeConfigRelations",
                "dts:DescribeSrcLinkConfig",
                "dts:DescribeDestLinkConfig",
                "dts:DescribeLinkConfig"
            ],
            "Resource": [
                "acs:gpdb:*:*:*"
            ]
        }
    ]
}

Grant access to specific instances and clusters:

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "dts:*",
            "Resource": [
                "acs:gpdb:*:*:dbinstanc****",
                "acs:rds:*:*:dbinstance****",
                "acs:polardb:*:*:dbclus****"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "dts:DescribeRegions",
                "dts:DescribeConfigRelations",
                "dts:DescribeSrcLinkConfig",
                "dts:DescribeDestLinkConfig",
                "dts:DescribeLinkConfig"
            ],
            "Resource": "acs:dts:*:*:*"
        }
    ]
}

Create the custom policy in the RAM console. See Create custom policies.

Step 3: Create a zero-ETL task

  1. Log on to the AnalyticDB for PostgreSQL console.

  2. In the upper-left corner, select the region where your instance resides.

  3. Find the target instance and click its instance ID.

  4. In the left-side navigation pane, choose Zero-ETL. Click Create Zero-ETL Task in the upper-left corner.

    image

  5. In the Configure Source and Destination Databases step, configure the source and destination parameters.

    Source parameters:

    ParameterDescriptionExample
    Task NameName of the zero-ETL taskZeroetltest
    Database TypeEngine of the source instance or cluster. Select RDS for PostgreSQL, RDS for MySQL, PolarDB for MySQL, or PolarDB for PostgreSQL.RDS for PostgreSQL
    Access MethodAccess method for the source. Automatically set to Alibaba Cloud Instance.Alibaba Cloud Instance
    Instance RegionRegion where the source instance or cluster residesChina (Shanghai)
    Instance IDID of the source instance or clusterpgm-2ze****
    Database NameName of the database in the source instance or clustertestdb
    Database AccountDatabase account for the sourcetest
    Database PasswordPassword for the database accountpassword****
    EncryptionConnection encryption method. Select Non-encrypted or SSL-encrypted. SSL encryption uses certificates to protect data in transit.SSL-encrypted

    Destination parameters:

    ParameterDescriptionExample
    Database TypeAutomatically set to AnalyticDB for PostgreSQLAnalyticDB for PostgreSQL
    Access MethodAutomatically set to Alibaba Cloud InstanceAlibaba Cloud Instance
    Instance RegionRegion where the AnalyticDB for PostgreSQL instance residesChina (Shanghai)
    Instance IDID of the AnalyticDB for PostgreSQL instancegp-2zeod****
    Database NameName of the database in the destination instancetestdb
    Database AccountDatabase account for the destinationtest
    Database PasswordPassword for the database accountpassword****
  6. Click Test Connectivity and Proceed. In the Configure Zero-ETL step, set the following parameters.

    ParameterDescriptionExample
    DDL and DML operations to be synchronizedDML operations (INSERT, UPDATE, DELETE) and DDL operations (CREATE, ALTER, DROP, RENAME, TRUNCATE) to replicateDML: INSERT, UPDATE, DELETE; DDL: CREATE, ALTER, DROP, RENAME, TRUNCATE
    Source objects and selected objectsObjects to include in the syncpublic
    Advanced settings (optional)Retry time for failed connections and other issues between source and destinationRetry time for failed connections: 10 minutes; Retry time for other issues: 10 minutes
  7. Click Next: Configure Database and Table Fields. Configure the table mapping parameters.

    ParameterDescriptionExample
    Database NameName of the selected databasepublic
    Table NameName of the selected tabletable1
    Primary key columnPrimary key column for the tableid
    Distribution keyOne or more distribution key columnsid
    TypeData partition type for the tableHash-Distributed Table
    Definition statusConfiguration status of the table. Changes from Undefined to Defined after you configure the table fields.Defined
  8. Click Next: Save Task Settings and Precheck.

    image

  9. If the precheck passes, the system automatically starts the zero-ETL task. Track progress in the task list.

    image

Monitor zero-ETL tasks

After a task starts, use Cloud Monitor to track sync latency and set up alerts.

View monitoring data

  1. Log on to the Cloud Monitor console.

  2. In the left-side navigation pane, choose Cloud Service Monitoring > Cloud Service Monitoring > Database.

  3. Move the pointer over the AnalyticDB for PostgreSQL card and click AnalyticDB for PostgreSQL - Zero-ETL Latency.

  4. Click the instance ID to view monitoring details for its zero-ETL tasks.

Create an alert rule

  1. In the left-side navigation pane, choose Alerts > Alert Rules.

  2. Click Create Alert Rule and configure alert parameters for your zero-ETL tasks. See Create an alert rule.

Create a subscription policy

  1. In the left-side navigation pane, choose Event Center > Event Subscription.

  2. Click Create Subscription Policy and configure subscription parameters for your zero-ETL tasks. See Manage event subscription policies (recommended).

What's next

After data is flowing into AnalyticDB for PostgreSQL, run analytical queries directly on the synced tables. For query guidance and data type mapping between source and destination, refer to the AnalyticDB for PostgreSQL documentation.