MySQL使用什么机制在Windows Server 2008上计划备份?


8

在Windows Server 2008上运行的MySQL Server(v5.1.45-community)上计划数据库备份时,使用什么机制触发备份运行?我认为它正在使用Windows Task Scheduler,但这些备份没有任何明显的任务。SQL Server使用单独的代理服务。MySQL中有类似的东西吗?

其他信息:备份是使用MySQL Administrator设置的。我知道如何安排备份,但是它们没有运行,并且我正在寻找有关从哪里开始解决问题的见解。

Answers:



3

在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批处理文件。

试试看 !!!


1

我们使用Todo备份服务器已有很长时间了。它提供完整,增量和差异备份。我们通常会设置每日备份计划,并保存三个版本的映像,这意味着该软件会自动删除旧映像。还可以在Windows资源管理器中从文件夹或分区备份映像还原特定文件。我们是小型企业用户,因此无法负担一些价值1000美元的备份软件。因此我们发现待办事项备份非常适合我们。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.