直接上代码及调用示例,调用示例:
假设有一张表user_status_in_playground,存储了用户在每个游戏场的统计数据,如总积分 、玩过次数、最近玩的时间、最近次得分。逻辑上 user_id + playground_id 是个惟一键,我们希望按照这个惟一键追踪其它字段的数据变更记录(建数据快照)。需要快照时执行一次存储过程,快照数据存到表archive_user_status_in_playground里。其中归档表只需要指定表名即可,将由存储过程自动创建。
SET @data_source='source_db.`user_status_in_playground`'; SET @archive_target='archive_db.archive_user_status_in_playground'; SET @identify_columns='user_id,playground_id'; SET @track_columns='score,paly_times,last_play_time,last_score'; call revision_archive(@data_source, @archive_target, @identify_columns, @track_columns, @dmesg);
如果我想按指定的时间点倒出当时的完整快照,其中revision是时间点(年月日时分秒),快照表也是自动创建的,指定表名即可。
SET @archive_location='archive_db.archive_user_status_in_playground'; SET @dump_location='`tmp`.`user_status_in_playground__dump`'; SET @identify_columns='user_id,playground_id'; SET @track_columns='score,paly_times,last_play_time,last_score'; SET @revision=20190603100255; call revision_dump(@archive_location, @dump_location, @identify_columns, @track_columns, @revision, @dmesg);
(原始存储过程见附件)