数据传输服务DTS(Data Transmission Service)支持将自建SQL Server同步至云原生数据仓库AnalyticDB PostgreSQL,实现增量数据的实时同步。
前提条件
- 自建SQL Server数据库版本为2008、2008 R2、2012、2014、2016或2017版本。
说明 如果是SQL Server AlwaysOn High Availability Group,需要使用强同步模式。
- 自建SQL Server数据库中待同步的表需具备主键或者唯一性非空索引以确保同步过程中的幂等性。
- 云原生数据仓库AnalyticDB PostgreSQL实例的存储空间须大于自建SQL Server数据库占用的存储空间。
注意事项
- DTS在执行全量数据初始化时将占用源库和目标库一定的读写资源,可能会导致数据库的负载上升,在数据库性能较差、规格较低或业务量较大的情况下(例如源库有大量慢SQL、存在无主键表或目标库存在死锁等),可能会加重数据库压力,甚至导致数据库服务不可用。因此您需要在执行数据同步前评估源库和目标库的性能,同时建议您在业务低峰期执行数据同步(例如源库和目标库的CPU负载在30%以下)。
- 为保障数据同步的正常运行,请勿对源库频繁执行备份,同时建议日志保留3天以上,避免日志截断后无法获取日志。
- 为保证数据同步延迟显示的准确性,DTS会在自建SQL Server数据库中新增一张心跳表,表名格式为
待同步表名_dts_mysql_heartbeat
。
功能限制
- 不支持assemblies、service broker、全文索引、全文目录、分布式schema、分布式函数、CLR存储过程、CLR标量函数、CLR表值函数、内部表、系统、聚合函数的结构同步。
- 不支持同步数据类型为TIMESTAMP、CURSOR、ROWVERSION、HIERACHYID、SQL_VARIANT、SPATIAL GEOMETRY、SPATIAL GEOGRAPHY、TABLE的数据。
- 不支持同步含有计算列的表。
支持同步的SQL操作
- DML操作:INSERT、UPDATE、DELETE
- DDL操作:ADD COLUMN
数据库账号的权限要求
数据库 | 所需权限 | 账号创建及授权方法 |
---|---|---|
自建SQL Server实例 | sysadmin | |
云原生数据仓库AnalyticDB PostgreSQL实例 |
说明 您也可以使用云原生数据仓库AnalyticDB PostgreSQL实例的初始账号。
|
准备工作
在正式配置数据同步任务之前,需要在自建SQL Server数据库上进行日志配置并创建聚集索引。
- 在自建SQL Server数据库中执行如下命令,将待同步的数据库恢复模式修改为完整模式。也可通过SSMS客户端修改,具体请参见修改数据库的recovery mode。
use master; GO ALTER DATABASE <database_name> SET RECOVERY FULL WITH ROLLBACK IMMEDIATE; GO
参数说明:
<database_name>:待同步的数据库名。
示例:
use master; GO ALTER DATABASE mytestdata SET RECOVERY FULL WITH ROLLBACK IMMEDIATE; GO
- 执行如下命令,将待同步的数据库进行逻辑备份。如您已进行过逻辑备份,可跳过本步骤。
BACKUP DATABASE <database_name> TO DISK='<physical_backup_device_name>'; GO
参数说明:
- <database_name>:待同步的数据库名。
- <physical_backup_device_name>:指定备份文件存储的路径和文件名。
示例:
BACKUP DATABASE mytestdata TO DISK='D:\backup\dbdata.bak'; GO
- 执行如下命令,将待同步的数据库日志进行备份。
BACKUP LOG <database_name> to DISK='<physical_backup_device_name>' WITH init; GO
参数说明:
- <database_name>:待同步的数据库名。
- <physical_backup_device_name>:指定备份文件存储的路径和文件名。
示例:
BACKUP LOG mytestdata TO DISK='D:\backup\dblog.bak' WITH init; GO
- 为待同步的表创建聚集索引,详情请参见创建聚集索引。