Welchen Mechanismus verwendet MySQL, um Sicherungen unter Windows Server 2008 zu planen?

8

Welcher Mechanismus wird beim Planen von Datenbanksicherungen auf MySQL Server (v5.1.45-community) unter Windows Server 2008 verwendet, um die Ausführung der Sicherungen auszulösen? Ich denke, es wird der Windows-Taskplaner verwendet, aber ich sehe keine offensichtlichen Aufgaben für diese Sicherungen. SQL Server verwendet einen separaten Agentendienst. Gibt es etwas Ähnliches in MySQL?

ZUSÄTZLICHE INFORMATIONEN: Die Sicherungen wurden mit MySQL Administrator eingerichtet. Ich weiß, wie die Sicherungen geplant werden, aber sie werden nicht ausgeführt, und ich suche nach Informationen darüber, wo mit der Fehlerbehebung begonnen werden kann.

Scott Mayfield
quelle

Antworten:

3

In MySQL 5.1+ gibt es die Möglichkeit, eine Ereignisplanung zu erstellen .

Hier ist ein Beispiel, wie Sie das Löschen von Zeilen aus einer Tabelle planen, die älter als 2 Stunden sind:

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;

Um die Ereignisplanung zu aktivieren, müssen Sie zwei Dinge tun:

Zuerst von Hand aktivieren:

SET GLOBAL event_scheduler = 1;

Fügen Sie dies dann zu my.ini hinzu, um den Ereignisplaner beizubehalten, falls Sie mysql neu starten

[mysqld]
event_scheduler = 1;

Von hier aus können Sie Ihre eigene Kundensicherungsprozedur mithilfe gespeicherter Prozeduren entwerfen und diese gespeicherte Prozedur dann planen. Der einzige Nachteil, von dem ich gehört habe, war das Aktualisieren von InnoDB-Tabellen innerhalb einer gespeicherten Prozedur, die von einem Ereignis aufgerufen wurde, das ich einmal versucht habe, bei der Fehlerbehebung zu helfen .

Ein stabilerer Ansatz ohne Verwendung von MySQL Events ist auch der einfachere Ansatz.

Schreiben Sie eine DOS-Batchdatei, die einen mysqldump ausführt, und speichern Sie die Ausgabe in der Zieldatei Ihrer Wahl. Verwenden Sie dann einfach den Windows-Scheduler, um diese DOS-Batchdatei aufzurufen.

Versuche es !!!

RolandoMySQLDBA
quelle
1

Wir verwenden ToDO-Backup-Server seit langer Zeit. Es bietet vollständige, inkrementelle und differenzielle Sicherung. Normalerweise richten wir einen täglichen Sicherungszeitplan ein und speichern drei Versionen der Images. Dies bedeutet, dass die Software die alten Images automatisch löscht. Eine bestimmte Datei kann auch im Windows Explorer aus einem Ordner- oder Partitionssicherungsimage wiederhergestellt werden. Wir sind kleine Unternehmen und können uns keine Backup-Software leisten, die 1.000 Dollar kostet. Daher fanden wir, dass todo backup sehr gut zu uns passt.

Gipfel
quelle