问题背景:客户要求简单的双击热备,即某一台db仅作为备份目的,并不被切换成主db服务器,但是对于备份记录的时间有要求,主db服务器存储近一年的数据,备份的副db服务器存储近3年的数据.
我的问题:我接触数据库较为深入的应用太少,没经验,简单的浏览了下资料,发现大多数资料并没有描述到对记录时间进行限定这样的细节配置,我想到也许可以利用数据库的类似定时任务这样的机制,定时每个月进行查看每个表的加入时间字段,对于超出上述临界值的予以删除或者进行其他操作. 请问如果用到过Replication的同学,能否通过对Replication进行配置就能解决,而不用另外添加些定时任务.

解决方案 »

  1.   

    回楼上的,请问Replication的配置项中难道就没有能对记录的时间其进行控制么?
      

  2.   


    create procedure ClearDB()
    begin
    SET SQL_LOG_BIN = 0; # 暂时关闭日志
         delete from TBName where year(now())-year(ttime)=1;  # 主库删除一年前的数据
    SET SQL_LOG_BIN = 1; #再打开日志
    end ;
    在删除的时候,必须先关闭日志,要么删除命令会同步到从库上,两边都会被删除。
    这个存储过程什么时候执行,可以用EVENT来设置。
    从库保留3年的数据,delete from TBName where year(now())-year(ttime)=3;这样就可以了。调度也用EVENT来做。
      

  3.   

    一种方案就是不用复制,每天定时从A机把数据导出,然后到B机导入。并且在A机删除1年前的数据。
      

  4.   

    zuoxingyu很强啊,用procedure和event用的这么溜,我还没怎么用过……