Dentro de MySQL 5.1+, existe la capacidad de crear programación de eventos .
Aquí hay un ejemplo de cómo programar la eliminación de filas de una tabla que tienen más de 2 horas de antigüedad:
drop database rolando;
create database rolando;
use rolando
create table mydata (id int not null auto_increment primary key,ti_time timestamp DEFAULT current_timestamp) ENGINE=MyISAM;
DELIMITER $$
DROP PROCEDURE IF EXISTS `rolando`.`LoadMyData` $$
CREATE PROCEDURE `rolando`.`LoadMyData` ()
BEGIN
DECLARE NDX INT;
SET NDX = 0;
WHILE NDX < 100 DO
INSERT INTO mydata (ti_time) VALUES (NOW() - INTERVAL CEILING(14400*RAND()) SECOND);
SET NDX = NDX + 1;
END WHILE;
END $$
DELIMITER ;
show create table mydata\G
SHOW CREATE PROCEDURE LoadMyData\G
CALL rolando.LoadMyData();
CREATE TABLE ta_table LIKE mydata;
ALTER TABLE ta_table DISABLE KEYS;
INSERT INTO ta_table SELECT SQL_NO_CACHE * FROM mydata;
ALTER TABLE ta_table ENABLE KEYS;
CREATE EVENT ev
ON SCHEDULE
EVERY 1 MINUTE
STARTS (NOW() + INTERVAL 1 MINUTE)
DO
DELETE FROM ta_table WHERE ti_time > NOW() - INTERVAL 2 HOUR;
SELECT COUNT(1) FROM ta_table;
SELECT SLEEP(62);
SELECT COUNT(1) FROM ta_table;
Para activar la programación de eventos, debe hacer dos cosas:
Primero, active a mano:
SET GLOBAL event_scheduler = 1;
Luego, agregue esto a my.ini para mantener el programador de eventos en caso de que reinicie mysql
[mysqld]
event_scheduler = 1;
Desde aquí, puede diseñar su propio procedimiento de respaldo del cliente utilizando procedimientos almacenados y luego programar ese procedimiento almacenado. Sin embargo, el único inconveniente del que he oído fue actualizar las tablas de InnoDB dentro del procedimiento almacenado llamado desde un evento que una vez intenté ayudar a solucionar este problema .
Un enfoque más estable sin usar MySQL Events es también el enfoque más simple.
Escriba un archivo por lotes de DOS que ejecute un mysqldump y guarde la salida en el archivo de destino que elija. Luego, simplemente use el programador de Windows para llamar a ese archivo por lotes de DOS.
Darle una oportunidad !!!