Quel mécanisme MySQL utilise-t-il pour planifier des sauvegardes sur Windows Server 2008?

8

Lors de la planification des sauvegardes de bases de données sur le serveur MySQL (communauté v5.1.45) s'exécutant sur Windows Server 2008, quel mécanisme est utilisé pour déclencher l'exécution des sauvegardes? Je pense qu'il utilise le Planificateur de tâches Windows, mais je ne vois aucune tâche évidente pour ces sauvegardes. SQL Server utilise un service d'agent distinct. Y a-t-il quelque chose de similaire dans MySQL?

INFORMATIONS SUPPLÉMENTAIRES: Les sauvegardes ont été configurées avec MySQL Administrator. Je sais comment planifier les sauvegardes, mais elles ne sont pas en cours d'exécution et je cherche à savoir par où commencer le dépannage.

Scott Mayfield
la source

Réponses:

3

Dans MySQL 5.1+, il existe la possibilité de créer une planification d'événements .

Voici un exemple de planification de la suppression de lignes d'une table datant de plus de 2 heures:

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;

Pour activer la planification d'événements, vous devez faire deux choses:

Tout d'abord, activez à la main:

SET GLOBAL event_scheduler = 1;

Ensuite, ajoutez ceci à my.ini pour conserver le planificateur d'événements au cas où vous redémarreriez mysql

[mysqld]
event_scheduler = 1;

À partir de là, vous pouvez concevoir votre propre procédure de sauvegarde client à l'aide de procédures stockées, puis planifier cette procédure stockée. Cependant, le seul inconvénient dont j'ai entendu parler était la mise à jour des tables InnoDB dans une procédure stockée appelée à partir d'un événement que j'ai essayé de résoudre ce problème .

Une approche plus stable sans utiliser les événements MySQL est également l'approche la plus simple.

Écrivez un fichier batch DOS qui exécuterait un mysqldump et enregistrez la sortie dans le fichier de destination de votre choix. Ensuite, utilisez simplement le planificateur Windows pour appeler ce fichier batch DOS.

Essaie !!!

RolandoMySQLDBA
la source
1

nous utilisons le serveur de sauvegarde todo depuis longtemps. il offre une sauvegarde complète, incrémentielle et différentielle. nous mettons généralement en place un programme de sauvegarde quotidien et enregistrons trois versions des images, ce qui signifie que le logiciel supprime automatiquement les anciennes images. un fichier spécifique peut également être restauré dans l'explorateur Windows à partir d'une image de sauvegarde de dossier ou de partition. nous sommes des utilisateurs de petites entreprises et nous ne pouvons pas nous permettre d'acheter des logiciels de sauvegarde coûtant 1 000 dollars. nous avons donc trouvé que la sauvegarde todo nous convenait très bien.

De pointe
la source