文档首页/ 数据复制服务 DRS/ 常见问题/ 实时同步/ DRS增量同步怎样填启动位点
更新时间:2024-11-28 GMT+08:00

DRS增量同步怎样填启动位点

MySQL为源

MySQL的单增量同步任务,在“设置同步”页面需要填写启动位点,任务源库日志从位点后开始获取(不含当前启动位点)。

图1 启动位点

当数据库的gtid_mode参数是on的情况下,位点信息由三部分构成:文件名(File)、位置(Position)和已执行的Global Transaction Identifiers Set(Executed_Gtid_Set),这些值可通过show master status命令获取(如果源库为MySQL 5.5版本,则不支持)。填写Executed_Gtid_Set的时候,需要删换其中的换行符再进行填入。

例如,社区版MySQL获取信息如下:

根据获取信息,任务的启动位点设置为如下,其中需要填入的Executed_Gtid_Set应为c8cd8ff7-da6f-11ec-a945-00d861ef1161:1-3,f4f9537f-0c8b-11ec-a284-00d861ef116a:1-10820402。

图2 设置启动位点

SQLServer为源

SQLServer的单增量同步任务,在“设置同步”页面需要填写启动位点,任务源库日志从位点后开始获取(不含当前启动位点)。

图3 启动位点

SQLServer增量数据依靠CDC官方能力,启动位点为SQLServer数据库的LSN,可通过select sys.fn_cdc_get_max_lsn(); 查询数据库的当前位点

例如,查询数据库当前LSN位点

图4 查询lsn

根据获取信息,任务的启动位点设置为如下:

图5 设置启动位点

DDS为源

DDS到MongoDB和DDS到Kafka的同步出云任务,支持设置启动位点,在“设置同步”页面用户可以选填启动位点,同步任务从启动位点开始获取源库增量日志(含当前启动位点)。如果用户没有手动设置启动位点,DRS将会自动获取源库最新位点。

图6 设置启动位点

增量同步的启动位点,格式为timestamp:incre(timestamp代表unix时间戳,单位为秒;incre代表当前命令在同一秒内执行的次序)。同步任务从启动位点开始获取源库增量日志(含当前启动位点)。

  • 副本集通过db.getSiblingDB("local").oplog.rs.find({"ts":{$gte:new Timestamp(<秒级时间戳>,1)}},{"ts":1}).sort({$natural:1}).limit(1)命令查看源库oplog,查到的结果格式为{ "ts" : Timestamp(<timestamp>, <inre>) },转换成timestamp:incre格式即可。
  • 集群无法从mongos上查询oplog,timestamp可以根据需要启动的时间,转换成unix timestamp格式,incre为1。

例如,源库为DDS副本集,期望增量开始的秒级时间戳为1721382900(2024-07-19T17:55:00+08:00),通过上述命令去源库查询到对应的结果如下图所示。根据获取信息,任务的启动位点可以设置为:1721382921:554。

图7 oplog查询结果示例

Oracle为源

Oracle为的单增量同步任务,在“设置同步”页面需要填写启动位点,任务源库日志从位点后开始获取。

图8 抓取启动位点

增量同步的启动位点为源库SCN。

可以通过select current_scn from v$database; 获取数据库当前SCN