All Products
Search
Document Center

Data Transmission Service:Synchronize data from RDS for MySQL to SelectDB

Last Updated:Jul 17, 2026

ApsaraDB for SelectDB supports sub-second query responses on massive datasets, tens of thousands of concurrent point queries, and high-throughput complex analytics. Data Transmission Service (DTS) synchronizes data from MySQL sources, such as a self-managed MySQL database or an ApsaraDB RDS for MySQL instance, to an ApsaraDB for SelectDB instance for large-scale data analytics. Using an ApsaraDB RDS for MySQL instance as an example, this topic demonstrates the procedure.

Prerequisites

You have created a target ApsaraDB for SelectDB instance with storage space exceeding the storage used by the source ApsaraDB RDS for MySQL instance. For more information, see Create an instance.

Considerations

Type

Description

Source database limitations

  • Requirements for synchronization objects:

    • If all tables to be synchronized have a primary key or unique constraint:

      Ensure that the columns that form the key or constraint contain unique values.

    • If the synchronization objects include tables that have neither a primary key nor a unique constraint:

      When you configure the data synchronization instance, we recommend that you select Schema Synchronization for Synchronization Types. Then, in the Configurations for Databases, Tables, and Columns step, set the Engine for the table to duplicate. Otherwise, the instance may fail or data loss may occur.

      Note

      During schema synchronization, DTS adds columns to the destination tables. For more information, see Additional columns.

  • If you synchronize at the table level and need to edit mappings (such as column name mapping), each synchronization task supports up to 1,000 tables. If you exceed this limit, the task fails with an error. To fix this, split the tables across multiple tasks or configure a full-database synchronization task.

  • Binary logs:

    • ApsaraDB RDS for MySQL enables binary logging by default. Ensure that the binlog_row_image parameter is set to full. Otherwise, the precheck fails and the synchronization task cannot start. For instructions, see Configure instance parameters.

      Important
      • If your source instance is a self-managed MySQL database, enable binary logging and set binlog_format to row and binlog_row_image to full.

      • If your self-managed MySQL database is a dual-primary cluster (where both nodes act as primary and secondary), enable the log_slave_updates parameter so DTS can capture all binary log events. For instructions, see Create an account and configure binary logging for a self-managed MySQL database.

    • The local binary logs for an ApsaraDB RDS for MySQL instance must be retained for at least three days (seven days is recommended). For a self-managed MySQL database, retain local binary logs for at least seven days. Otherwise, DTS may fail to retrieve binary logs, causing the task to fail. In extreme cases, this may cause data inconsistency or data loss. Issues caused by binary log retention periods shorter than DTS requires are not covered under the DTS SLA.

      Note

      To configure the retention period for local binary logs on an ApsaraDB RDS for MySQL instance, see Automatically delete local logs.

  • Do not run DDL operations that change database or table schemas during schema synchronization or full synchronization. Otherwise, the synchronization task fails.

    Note

    During full synchronization, DTS queries the source database. This creates metadata locks that may block DDL operations on the source database.

  • Data generated by changes that do not write to binary logs—such as data restored from physical backups or created by cascade operations—is not synchronized to the destination database.

    Note

    If this occurs, remove the affected database or table from the synchronization objects. Then add it back. You can do this only if your business allows it. For more information, see Modify synchronization objects.

  • If your source database is MySQL 8.0.23 or later and contains invisible hidden columns, DTS may not read those columns. This may cause data loss.

    Note

    Run the ALTER TABLE <table_name> ALTER COLUMN <column_name> SET VISIBLE; command to make the hidden column visible. For more information, see Invisible Columns.

Other limitations

  • You can synchronize data only to tables that use the Unique or Duplicate engine in Alibaba Cloud SelectDB instances.

    Unique engine

    If a destination table uses the Unique engine, ensure that all unique keys of the destination table exist in the source table and are included in the synchronization objects. Otherwise, data inconsistency may occur.

    Duplicate engine

    If a destination table uses the Duplicate engine, any of the following conditions may cause duplicate data in the destination database. You can manually deduplicate the data based on the additional columns (_is_deleted, _version, and _record_id):

    • The data synchronization instance was retried.

    • The data synchronization instance was restarted.

    • Two or more DML operations were performed on the same row after the data synchronization instance started.

      Note

      When the destination table uses the Duplicate engine, DTS converts UPDATE or DELETE statements to INSERT statements.

  • DTS does not synchronize INDEX, PARTITION, VIEW, PROCEDURE, FUNCTION, TRIGGER, or foreign key (FK) objects.

  • When you configure parameters in the Selected Objects section, you can only set the bucket_count (number of buckets) parameter.

    Note

    The value of the bucket_count parameter must be a positive integer. The default value is auto.

  • During data synchronization, do not create a cluster in the destination Alibaba Cloud SelectDB instance. Otherwise, the task fails. You can restart the data synchronization instance to resume the task.

  • If the name of a synchronized database or table does not start with a letter, rename it by using the object name mapping feature.

  • If the name of a synchronized object (such as a database, table, or column) contains Chinese characters, rename it by using the object name mapping feature, for example, to an English name. Otherwise, the task may fail.

  • DTS does not support DDL operations that modify multiple columns at once or consecutive DDL operations on the same table.

  • During data synchronization, do not add BE nodes to the Alibaba Cloud SelectDB database. Otherwise, the task fails. You can restart the data synchronization instance to resume the task.

  • In a many-to-one table synchronization scenario, where data from multiple source tables is synchronized to a single destination table, ensure that the schemas of all source tables are identical. Otherwise, data inconsistency or task failure may occur.

  • In MySQL, M in VARCHAR(M) represents the number of characters. In Alibaba Cloud SelectDB, N in VARCHAR(N) represents the number of bytes. If you do not use the schema synchronization feature provided by DTS, we recommend setting the length of a VARCHAR field in Alibaba Cloud SelectDB to four times the length of the corresponding VARCHAR field in MySQL.

  • When you use DMS or the gh-ost tool to perform online DDL operations on the source, DTS synchronizes only the original DDL statements to the destination. In this scenario, DTS does not need to synchronize a large amount of temporary table data, but this may cause tables to be locked at the destination.

    Note

    DTS does not support synchronizing online DDL changes made with tools like pt-online-schema-change. If such changes exist at the source, data may be lost at the destination, or the synchronization instance may fail.

  • Before you synchronize data, evaluate the performance of the source and destination databases. Perform data synchronization during off-peak hours. Initial full data synchronization consumes read and write resources of both the source and destination databases, which may increase the database load.

  • Initial full data synchronization runs concurrent INSERT operations, which causes fragmentation in the tables of the destination database. As a result, the tablespace of the destination database is larger than that of the source database after the initial full data synchronization completes.

  • During data synchronization, do not use tools such as pt-online-schema-change to perform online DDL changes on the synchronization objects in the source database. Otherwise, the task fails.

  • During data synchronization, if sources other than DTS write data to the destination database, data inconsistency may occur.

  • If your ApsaraDB RDS for MySQL instance has Always-Encrypted enabled, full data synchronization is not supported.

    Note

    ApsaraDB RDS for MySQL instances with Transparent Data Encryption (TDE) enabled support schema synchronization, full data synchronization, and incremental data synchronization.

  • During incremental synchronization, DTS uses a batch synchronization strategy to reduce the load on the destination. By default, DTS writes to a single synchronization object at most once every 5 seconds. Therefore, DTS synchronization tasks may experience regular synchronization latency—typically within 10 seconds. To reduce this regular synchronization latency, modify the DTS instance parameter selectdb.reservoir.timeout.milliseconds in the console to adjust the batch interval. The allowed range is [1000, 10000] milliseconds.

    Note

    When you adjust the batch interval, a smaller value increases the write frequency of DTS. This may increase the load and write response time (RT) on the destination, which in turn increases DTS synchronization latency. Adjust the value based on the load on the destination.

  • If a task fails, DTS support staff will attempt to restore it within eight hours. During restoration, they may restart the task or adjust its parameters.

    Note

    Only DTS task parameters are modified—not database parameters. Parameters that may be adjusted include those listed in Modify instance parameters.

Special cases

  • For a self-managed MySQL source database:

    • If a primary/secondary switchover occurs in the source database during synchronization, the task fails.

    • DTS calculates latency by comparing the timestamp of the last synchronized record with the current time. If no DML operations run for a long time in the source database, latency reporting may become inaccurate. If latency appears too high, run a DML operation in the source database to update the latency.

      Note

      If you select a full database for synchronization, create a heartbeat table. Update or write to this table every second.

    • DTS periodically runs the CREATE DATABASE IF NOT EXISTS `test` command in the source database to advance the binary log offset.

    • If your source database is Amazon Aurora MySQL or another clustered MySQL instance, ensure the domain name or IP address used in the task configuration—and its DNS resolution—always points to a read/write (RW) node. Otherwise, synchronization may fail.

  • For an ApsaraDB RDS for MySQL source database:

    • Read-only instances—such as ApsaraDB RDS for MySQL 5.6 read-only instances—that do not record transaction logs cannot serve as source databases.

    • DTS periodically runs the CREATE DATABASE IF NOT EXISTS `test` command in the source database to advance the binary log offset.

Billing

Synchronization type

Pricing

Schema synchronization and full data synchronization

Free of charge.

Incremental data synchronization

Charged. For more information, see Billing overview.

SQL for incremental synchronization

Operation type

SQL statement

DML

INSERT, UPDATE, and DELETE

DDL

  • ADD COLUMN

  • MODIFY COLUMN

  • CHANGE COLUMN

  • DROP COLUMN and DROP TABLE

  • TRUNCATE TABLE

  • RENAME TABLE

    Important

    The RENAME TABLE operation may cause data inconsistency. For example, if the synchronization object is only a specific table and you rename the table in the source instance during synchronization, the data of the table is not synchronized to the destination database. To prevent this issue, select the entire database to which the table belongs as the synchronization object when you configure the data synchronization task. Make sure that the databases to which the table belongs before and after the RENAME TABLE operation are both included in the synchronization object.

Database account permissions

Database

Required permissions

Actions

Source ApsaraDB RDS for MySQL

Read and write permissions on the objects to be synchronized

Create an account and Modify account permissions

Destination ApsaraDB for SelectDB instance

Cluster access permission (Usage_priv) and read and write permissions on the database (Select_priv, Load_priv, Alter_priv, Create_priv, and Drop_priv)

Manage cluster permissions and Manage basic permissions

Note

If you created the source database account outside the ApsaraDB RDS for MySQL console, ensure that it has the REPLICATION CLIENT, REPLICATION SLAVE, SHOW VIEW, and SELECT permissions.

Procedure

  1. Go to the data synchronization task list page in the destination region. You can do this in one of two ways.

    DTS console

    1. Log on to the DTS console.

    2. In the navigation pane on the left, click Data Synchronization.

    3. In the upper-left corner of the page, select the region where the synchronization instance is located.

    DMS console

    Note

    The actual steps may vary depending on the mode and layout of the DMS console. For more information, see Simple mode console and Customize DMS console layout and style.

    1. Log on to the DMS console.

    2. In the top menu bar, choose Data + AI > DTS (DTS) > Data Synchronization.

    3. To the right of Data Synchronization Tasks, select the region of the synchronization instance.

  2. Click Create Task to navigate to the task configuration page.

  3. Configure the source and destination databases.

    Section

    Parameter

    Description

    N/A

    Task Name

    DTS automatically generates a task name. We recommend that you specify a descriptive name for easy identification. The name does not need to be unique.

    Source Database

    Select Existing Connection

    • Select the registered database instance with DTS from the drop-down list. The database information below is automatically configured.

      Note

      In the DMS console, this configuration item is Select a DMS database instance.

    • If you have not registered the database instance or do not need to use a registered instance, manually configure the database information below.

    Database Type

    Select MySQL.

    Access Method

    Select Alibaba Cloud Instance.

    Instance Region

    Select the region for the source ApsaraDB RDS for MySQL instance.

    Replicate Data Across Alibaba Cloud Accounts

    In this example, data is synchronized within the same Alibaba Cloud account. Select No.

    RDS Instance ID

    Select the ID of the source ApsaraDB RDS for MySQL instance.

    Database Account

    Enter the database account of the source ApsaraDB RDS for MySQL instance. For information about the required permissions, see Permissions required for database accounts.

    Database Password

    Enter the password for the specified database account.

    Encryption

    Select Non-encrypted or SSL-encrypted as needed. If you set this to SSL-encrypted, you must enable SSL encryption for the RDS for MySQL instance beforehand. For more information, see Use a cloud certificate to quickly enable SSL link encryption.

    Destination Database

    Select Existing Connection

    • Select the registered database instance with DTS from the drop-down list. The database information below is automatically configured.

      Note

      In the DMS console, this configuration item is Select a DMS database instance.

    • If you have not registered the database instance or do not need to use a registered instance, manually configure the database information below.

    Database Type

    Select ApsaraDB for SelectDB.

    Access Method

    Select Alibaba Cloud Instance.

    Instance Region

    Select the region for the destination ApsaraDB for SelectDB instance.

    Replicate Data Across Alibaba Cloud Accounts

    In this example, data is synchronized within the same Alibaba Cloud account. Select No.

    Instance ID

    Select the ID of the destination ApsaraDB for SelectDB instance.

    Database Account

    Enter the database account of the destination ApsaraDB for SelectDB instance. For information about the required permissions, see Permissions required for database accounts.

    Database Password

    Enter the password for the specified database account.

  4. After completing the configuration, click Test Connectivity and Proceed at the bottom of the page.

    Note
    • Ensure that you add the CIDR blocks of the DTS servers (either automatically or manually) to the security settings of both the source and destination databases to allow access. For more information, see Add the IP address whitelist of DTS servers.

    • If the source or destination is a self-managed database (i.e., the Access Method is not Alibaba Cloud Instance), you must also click Test Connectivity in the CIDR Blocks of DTS Servers dialog box.

  5. Configure the task objects.

    1. On the Configure Objects page, specify the objects to synchronize.

      Parameter

      Description

      Synchronization Types

      DTS always selects Incremental Data Synchronization. By default, you must also select Schema Synchronization and Full Data Synchronization. After the precheck, DTS initializes the destination cluster with the full data of the selected source objects, which serves as the baseline for subsequent incremental synchronization.

      Important

      Data types are converted when data is synchronized from MySQL to ApsaraDB for SelectDB. If you do not select Schema Synchronization, you must create tables that use the Unique or Duplicate model with the appropriate schema in the destination ApsaraDB for SelectDB instance in advance. For more information, see Data type mappings, Additional columns, and Data models.

      Processing Mode of Conflicting Tables

      • Precheck and Report Errors: DTS checks for tables with the same name in the destination database. If a conflict exists, DTS reports an error during the precheck and does not start the task.

        Note

        If it is not practical to delete or rename the conflicting table, you can map the table to a different name. For more information, see Map object names.

      • Ignore Errors and Proceed: Skips the check for tables with the same name in the destination database.

        Warning

        If you select Ignore Errors and Proceed, data inconsistency may occur. For example:

        • If the table schemas are consistent, destination records with the same primary or unique key as source records are overwritten.

        • If the table schemas are inconsistent, the task may fail or only partially synchronize data. Proceed with caution.

      Capitalization of Object Names in Destination Instance

      Configure the case-sensitivity policy for database, table, and column names in the destination instance. By default, the DTS default policy is selected. You can also choose to use the default policy of the source or destination database. For more information, see Case policy for destination object names.

      Source Objects

      In the Source Objects box, click the objects, and then click 向右 to move them to the Selected Objects box.

      Note

      You can select objects at the database or table level.

      Selected Objects

      • To change the name of a synchronization object in the destination instance, right-click the object in the Selected Objects box. For more information, see Map object names.

      • If you select Schema Synchronization for Synchronization Types, select tables as the synchronization objects, and need to set the number of buckets (the bucket_count parameter), right-click the table in the Selected Objects box. In the Parameter Settings section, set Enable Parameter Settings to Yes, specify a Value based on your requirements, and then click OK.

      Note
      • To select the incremental SQL operations to be synchronized at the database or table level, right-click the object in the Selected Objects box and select the desired SQL operations in the dialog box that appears.

      • To filter data by using a WHERE clause, right-click the table in the Selected Objects box and set the filter conditions in the dialog box that appears. For more information, see Configure filter conditions.

      • If you use the object name mapping feature, other objects that depend on the renamed object may fail to be synchronized.

    2. Click Next: Advanced Settings.

      Parameter

      Description

      Dedicated Cluster for Task Scheduling

      By default, DTS uses a shared cluster for tasks, so you do not need to make a selection. For greater task stability, you can purchase a dedicated cluster to run the DTS synchronization task. For more information, see What is a DTS dedicated cluster?.

      Retry Time for Failed Connections

      If the connection to the source or destination database fails after the synchronization task starts, DTS reports an error and immediately begins to retry the connection. The default retry duration is 720 minutes. You can customize the retry time to a value from 10 to 1,440 minutes. We recommend a duration of 30 minutes or more. If the connection is restored within this period, the task resumes automatically. Otherwise, the task fails.

      Note
      • If multiple DTS instances (e.g., Instance A and B) share a source or destination, DTS uses the shortest configured retry duration (e.g., 30 minutes for A, 60 for B, so 30 minutes is used) for all instances.

      • DTS charges for task runtime during connection retries. Set a custom duration based on your business needs, or release the DTS instance promptly after you release the source/destination instances.

      Retry Time for Other Issues

      If a non-connection issue (e.g., a DDL or DML execution error) occurs, DTS reports an error and immediately retries the operation. The default retry duration is 10 minutes. You can also customize the retry time to a value from 1 to 1,440 minutes. We recommend a duration of 10 minutes or more. If the related operations succeed within the set retry time, the synchronization task automatically resumes. Otherwise, the task fails.

      Important

      The value of Retry Time for Other Issues must be less than that of Retry Time for Failed Connections.

      Enable Throttling for Full Data Synchronization

      During full data synchronization, DTS consumes read and write resources from the source and destination databases, which can increase their load. To mitigate pressure on the destination database, you can limit the migration rate by setting Queries per second (QPS) to the source database, RPS of Full Data Migration, and Data migration speed for full migration (MB/s).

      Note

      Enable Throttling for Incremental Data Synchronization

      You can also limit the incremental synchronization rate to reduce pressure on the destination database by setting RPS of Incremental Data Synchronization and Data synchronization speed for incremental synchronization (MB/s).

      Environment Tag

      You can select an environment tag to identify the instance based on your requirements. This example does not require a tag.

      Whether to delete SQL operations on heartbeat tables of forward and reverse tasks

      Choose whether DTS writes heartbeat SQL information to the source database while the instance is running.

      • Yes: Does not write heartbeat SQL information to the source database. The DTS instance may display latency.

      • No: Writes heartbeat SQL information to the source database. This may interfere with source database operations like physical backups and cloning.

      Configure ETL

      Choose whether to enable the extract, transform, and load (ETL) feature. For more information, see What is ETL? Valid values:

      Monitoring and Alerting

      Choose whether to set up alerts. If the synchronization fails or the latency exceeds the specified threshold, DTS sends a notification to the alert contacts.

    3. Optional: After completing the preceding configurations, click Next: Configure Database and Table Fields to set the Primary Key Column, Distribution Key, and Engine for the destination tables.

      Note
      • This step is available only if you select Schema Synchronization for Synchronization Types when you configure the synchronization objects. You can set Definition Status to All to modify the settings.

      • You can select multiple columns to form a composite Primary Key Column. You must also select one or more columns from the Primary Key Column as the Distribution Key.

      • For a table without a primary key or a unique constraint, you must select duplicate for the Engine. Otherwise, the task may fail or data loss may occur.

  6. Save the task and perform a precheck.

    • To view the parameters for configuring this instance via an API operation, hover over the Next: Save Task Settings and Precheck button and click Preview OpenAPI parameters in the tooltip.

    • If you have finished viewing the API parameters, click Next: Save Task Settings and Precheck at the bottom of the page.

    Note
    • Before a synchronization task starts, DTS performs a precheck. You can start the task only if the precheck passes.

    • If the precheck fails, click View Details next to the failed item, fix the issue as prompted, and then rerun the precheck.

    • If the precheck generates warnings:

      • For non-ignorable warning, click View Details next to the item, fix the issue as prompted, and run the precheck again.

      • For ignorable warnings, you can bypass them by clicking Confirm Alert Details, then Ignore, and then OK. Finally, click Precheck Again to skip the warning and run the precheck again. Ignoring precheck warnings may lead to data inconsistencies and other business risks. Proceed with caution.

  7. Purchase the instance.

    1. When the Success Rate reaches 100%, click Next: Purchase Instance.

    2. On the Purchase page, select the billing method and link specifications for the data synchronization instance. For more information, see the following table.

      Category

      Parameter

      Description

      New Instance Class

      Billing Method

      • Subscription: You pay upfront for a specific duration. This is cost-effective for long-term, continuous tasks.

      • Pay-as-you-go: You are billed hourly for actual usage. This is ideal for short-term or test tasks, as you can release the instance at any time to save costs.

      Resource Group Settings

      The resource group to which the instance belongs. The default is default resource group. For more information, see What is Resource Management?.

      Instance Class

      DTS offers synchronization specifications at different performance levels that affect the synchronization rate. Select a specification based on your business requirements. For more information, see Data synchronization link specifications.

      Subscription Duration

      In subscription mode, select the duration and quantity of the instance. Monthly options range from 1 to 9 months. Yearly options include 1, 2, 3, or 5 years.

      Note

      This option appears only when the billing method is Subscription.

    3. Read and select the checkbox for Data Transmission Service (Pay-as-you-go) Service Terms.

    4. Click Buy and Start, and then click OK in the OK dialog box.

      You can monitor the task progress on the data synchronization page.

Data type mapping

Category

MySQL type

SelectDB type

NUMERIC

TINYINT

TINYINT

TINYINT UNSIGNED

SMALLINT

SMALLINT

SMALLINT

SMALLINT UNSIGNED

INT

MEDIUMINT

INT

MEDIUMINT UNSIGNED

BIGINT

INT

INT

INT UNSIGNED

BIGINT

BIGINT

BIGINT

BIGINT UNSIGNED

LARGEINT

BIT(M)

INT

DECIMAL

DECIMAL

Note

ZEROFILL is not supported.

NUMERIC

Decimal

FLOAT

FLOAT

DOUBLE

DOUBLE

  • BOOL

  • BOOLEAN

BOOLEAN

DATE AND TIME

DATE

DATEV2

DATETIME[(fsp)]

DATETIMEV2

TIMESTAMP[(fsp)]

DATETIMEV2

TIME[(fsp)]

VARCHAR

YEAR[(4)]

INT

STRING

  • CHAR

  • VARCHAR

VARCHAR

Important

To prevent data loss, CHAR and VARCHAR(n) data is converted to VARCHAR(4*n) when synchronized to the destination ApsaraDB for SelectDB instance.

  • If no data length is specified, the default is VARCHAR(65533).

  • If the data length exceeds 65533, the data is converted to STRING.

  • BINARY

  • VARBINARY

STRING

  • TINYTEXT

  • TEXT

  • MEDIUMTEXT

  • LONGTEXT

STRING

  • TINYBLOB

  • BLOB

  • MEDIUMBLOB

  • LONGBLOB

STRING

ENUM

STRING

SET

STRING

JSON

STRING

Additional columns

Note

This table lists the additional columns that DTS automatically adds or that you must manually add to the destination duplicate model table.

Parameter

Type

Default

Description

_is_deleted

Int

0

Indicates whether the row is deleted.

  • Insert: The value is 0.

  • Update: The value is 0.

  • Delete: The value is 1.

_version

Bigint

0

  • For data from a full synchronization, the value is 0.

  • For data from an incremental synchronization, the value is the commit timestamp (in seconds) of the change from the source database binlog.

_record_id

Bigint

0

  • For data from a full synchronization, the value is 0.

  • For data from an incremental synchronization, the value is the record ID from the incremental log. This ID uniquely identifies the log entry.

    Note

    The ID is unique and increases monotonically.