mysql如何用定时任务查询前一天整个库的数据量并记录下来到另外一张表

mysql如何用定时任务查询前一天整个库的数据量并记录下来到另外一张表,第1张

说白了,就是想做到增量备份呗。mysql定时器好弄,百度查就行,查出所有的表也好办,唯一需要处理的,就是你的表中,是否保存了最后更新时间,利用这个字段,区分哪条数据是昨天更新的,然后将这条数据做备份。另外也可以考虑,开启mysql日志,然后每天读取日志内容,获取前一天有变化的数据。

问题一:定时器一般是以线程的方式运行的,如果能得到该线程的引用,就可以像查看Thread一样查看定时器的运行状态。如果可以修改源代码的话最好给他提供一个方法返回线程引用问题二:TimerTask实现了接口Runnable,如果是以new Thread(TimerTask).start()方式启动的话就是做为一个单独的线程运行的,如果是timeTask.run()那就是方法调用,虽然占据一个线程,但这个线程就是主线程,并没有启动新的线程;既然实现线程,自然可以通过Thread的isAlive方法获取其live状态;一般情况下(不发生异常),定时器会一直运行,如果JVM停止,那么线程必然已经终止,如果JVM中只有这一个线程在运行,那么JVM不停,这个定时器就是一定在运行中,如果JVM中还有其他线程在运行,那么JVM不停,这个定时器有可能已经终止PS:无论用不用线程池,线程启动方式只有两种(不包含main Thread):一种是继承Thread类,然后直接同构引用调用start方法,第二种就是继承Runnable接口,通过new Thread(new MyRunnableClass()).start()方式启动。无论如何,都会有一个Thread类的引用补充:一个tomcat只启动一个进程,而JVM的垃圾处理器也只有一个,所以在一个工程里运行System.gc也会影响到其他工程。

当Oracle发现当前时间大于等于JOB的NEXT_DATE,且JOB的BROKEN为否,则会执行这个job。跟中间停了多长时间的机没有关系。

当JOB执行完,Oracle会根据NEXT_DATE和INTERVAL参数来确定下次执行时间,也就是NEXT_DATE。

另外你说的第二种情况,在正式环境中基本不会出现。既然是需要job运行,怎么可能还存在那么长的停机时间?绝大部分正式环境都是7*24的。

如果报错,可以检查ALERT_$ORACLE_SID.ora,如果是正在运行,可以查询DBA_JOBS_RUNNING。对于正常执行的JOB没有记录,不过你可以自己建立相应的日志表进行记录


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/7282850.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-03
下一篇 2023-04-03

发表评论

登录后才能评论

评论列表(0条)

保存