mysql 存储过程+定时任务实现数据迁移
2015-06-28 11:47
597 查看
需求:系统中用户浏览信息记录已经实现分库分表记录数据(2个库 每个库100张表),用户量比较大,每天都会产生很多的记录信息,系统默认显示用户最近一个月的浏览信息记录,要求将超过一个月的记录信息记录到历史表中,历史表的设计和默认信息存储表相同分库分表。实现:利用mysql的存储过程和定时任务来完成。考虑到系统已经在运行,数据库中已经存在很大量的数据了,徐拿着用存储过程和定时任务来做数据迁移。步骤:1.在使用之前必须确保 event_scheduler已开启查看mysql数据库是否开始执行 SHOW VARIABLES LIKE 'event_scheduler';或
SELECT @@event_scheduler;或SHOW
PROCESSLIST;开启:执行: SET GLOBAL event_scheduler=1; 或者 SET GLOBAL event_scheduler = ON;也可以在配置文件my.cnf 中加入 event_acheduler=1也可以在启动命令上加上 “--event_scheduler =1”2.创建素具迁移的存储过程
[/code]
SELECT @@event_scheduler;或SHOW
PROCESSLIST;开启:执行: SET GLOBAL event_scheduler=1; 或者 SET GLOBAL event_scheduler = ON;也可以在配置文件my.cnf 中加入 event_acheduler=1也可以在启动命令上加上 “--event_scheduler =1”2.创建素具迁移的存储过程
DELIMITER $$ USE `yst_uic_service`$$ DROP PROCEDURE IF EXISTS `Sync_uchome_seen_history`$$ CREATE DEFINER=`root`@`localhost` PROCEDURE `Sync_uchome_seen_history`(IN tabSize INT) BEGIN DECLARE i INT DEFAULT 0; ## 获取需同步数据的时间节点(上个月) SET @upmonth= DATE_ADD(NOW(), INTERVAL -1 MONTH); WHILE i < tabSize DO SET @sqlstr=CONCAT('INSERT INTO `uchome_history_',i,'`(`icon`,`uid`,`epgId`,`detailsId`,`score`,`titleData`,`datePoint`,`dateLine`,`objtype`,`templateId`,`times`,`watchTime`) SELECT `icon`,`uid`,`epgId`,`detailsId`,`score`,`titleData`,`datePoint`,`dateLine`,`objtype`,`templateId`,`times`,`watchTime` FROM `uchome_seen_',i,'` WHERE `dateLine`<=?'); SET @delsqlstr=CONCAT('delete from `uchome_seen_',i,'` WHERE `dateLine`<=? '); #执行数据迁移 PREPARE _stmt FROM @sqlstr; EXECUTE _stmt USING @upmonth; DEALLOCATE PREPARE _stmt; #执行迁移后的数据删除 PREPARE _stdel FROM @delsqlstr; EXECUTE _stdel USING @upmonth; DEALLOCATE PREPARE _stdel; SET i := i+1; END WHILE; END$$ DELIMITER ;3.创建定时任务
DELIMITER $$ ALTER DEFINER=`root`@`localhost` EVENT `Sync_uchome_seen_history` ONSCHEDULEEVERY 1DAY STARTS '2015-06-29 01:30:00' ONCOMPLETIONNOT PRESERVE ENABLE DOCALL`Sync_uchome_seen_history`(10)$$ DELIMITER ;4.关闭和开启任务时间临时关闭: ALTER EVENT Sync_uchome_seen_history ONCOMPLETIONPRESERVE DISABLE;关闭任务 : ALTER EVENT Sync_uchome_seen_history DISABLE;临时开启: ALTER EVENT Sync_uchome_seen_history ONCOMPLETIONPRESERVE ENABLE;开启: ALTER EVENT Sync_uchome_seen_history ENABLE;5.查看数据库中事件show events;或者 select * from mysql.event;其他与定时任务相关的内容:1.指定时间完成某项任务:创建事件2天后清理某张数据表:
ON
SCHEDULE
AT
CURRENT_TIMESTAMP
+ INTERVAL 2
DAY
DO
TRUNCATE
TABLE
shop.aaa;
指定时间点执行任务 [code]ON
SCHEDULE
AT
TIMESTAMP
'2015-07-01 23:59:59'
DO
TRUNCATE
TABLE
shop.aaa;定时每天执行,指定时间点结束(每天执行,2天后结束)ONSCHEDULEEVERY 1DAYENDS
CURRENT_TIMESTAMP
+ INTERVAL 2
DAY
DO
TRUNCATE
TABLE
shop.aaa;
指定时间开始,指定时间结束(2天后开始执行,每天执行一次,2个月后停止)ONSCHEDULE EVERY 1DAYSTARTS[code]CURRENT_TIMESTAMP
+ INTERVAL 2
DAY
[/code]
ENDS
CURRENT_TIMESTAMP
+ INTERVAL 2
month
DO
TRUNCATE
TABLE
shop.aaa;创建删除事件的事件
ON
SCHEDULE
AT
TIMESTAMP
'2015-08-01 23:59:59'
DODROP EVENT IF EXISTS e_test;
相关文章推荐
- 小贝_mysql select连接查询
- 使用PDO查询mysql避免SQL注入
- 小贝_mysql三种子查询
- MySQL数据库常用操作和技巧
- 小贝_mysql select5种子句介绍
- doc 命令下远程链接mysql
- MYSQL中insert...select优化?
- MySQL Memory 存储引擎浅析
- 小贝_mysql建表以及列属性
- C# mysql 四种操作数据库方法封装
- Ubuntu下mysql安装及常用命令
- 【HM】第4课:MySQL入门
- 使用MySql保存session
- weka连接mysql数据库
- MySql在Window上的安装
- mysql技术内幕InnoDB存储引擎-阅读笔记
- Nagios 监控mysql服务器详细实现过程
- MySQL技术内幕-InnoDB存储引擎-读书笔记(一)
- CHAR和VARCHAR
- WampServer修改MySQL密码