Answers:
您正在运行MySQL Administrator吗?这包括备份计划机制。
在MySQL 5.1+中,存在创建事件调度的功能。
这是一个示例,该示例如何计划从表中删除超过2小时的行:
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;
为了激活事件调度,您必须做两件事:
首先,手动激活:
SET GLOBAL event_scheduler = 1;
然后,将其添加到my.ini中以保留事件计划程序,以防您重新启动mysql
[mysqld]
event_scheduler = 1;
在这里,您可以使用存储过程设计自己的客户备份过程,然后安排该存储过程。但是,我听说的一个缺点是在存储过程中更新InnoDB表,该存储过程是从我曾经试图帮助解决此事件的事件中调用的。
不使用MySQL Events的更稳定的方法也是更简单的方法。
编写一个将执行mysqldump的DOS批处理文件并将输出保存到您选择的目标文件中。然后,只需使用Windows调度程序来调用该DOS批处理文件。
试试看 !!!