DRS增量同步怎样填启动位点
MySQL为源
MySQL的单增量同步任务,在“设置同步”页面需要填写启动位点,任务源库日志从位点后开始获取(不含当前启动位点)。
当数据库的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。
SQLServer为源
SQLServer的单增量同步任务,在“设置同步”页面需要填写启动位点,任务源库日志从位点后开始获取(不含当前启动位点)。
SQLServer增量数据依靠CDC官方能力,启动位点为SQLServer数据库的LSN,可通过select sys.fn_cdc_get_max_lsn(); 查询数据库的当前位点
例如,查询数据库当前LSN位点
根据获取信息,任务的启动位点设置为如下:
DDS为源
DDS到MongoDB和DDS到Kafka的同步出云任务,支持设置启动位点,在“设置同步”页面用户可以选填启动位点,同步任务从启动位点开始获取源库增量日志(含当前启动位点)。如果用户没有手动设置启动位点,DRS将会自动获取源库最新位点。
增量同步的启动位点,格式为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。
Oracle为源
Oracle为的单增量同步任务,在“设置同步”页面需要填写启动位点,任务源库日志从位点后开始获取。
增量同步的启动位点为源库SCN。
可以通过select current_scn from v$database; 获取数据库当前SCN