Qual mecanismo o MySQL usa para agendar backups no Windows Server 2008?

8

Ao agendar backups de banco de dados no MySQL Server (comunidade v5.1.45) em execução no Windows Server 2008, qual mecanismo é usado para acionar os backups para execução? Acho que está usando o Agendador de tarefas do Windows, mas não vejo tarefas óbvias para esses backups. O SQL Server usa um serviço de agente separado. Existe algo semelhante no MySQL?

INFORMAÇÕES ADICIONAIS: Os backups foram configurados com o MySQL Administrator. Estou ciente de como agendar os backups, mas eles não estão em execução e estou procurando informações sobre onde começar a solucionar problemas.

Scott Mayfield
fonte

Respostas:

3

No MySQL 5.1+, existe a capacidade de criar agendamento de eventos .

Aqui está um exemplo de como agendar a exclusão de linhas de uma tabela com mais de 2 horas:

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 ativar a programação de eventos, você deve fazer duas coisas:

Primeiro, ative manualmente:

SET GLOBAL event_scheduler = 1;

Em seguida, adicione isso ao my.ini para manter o planejador de eventos, caso você reinicie o mysql

[mysqld]
event_scheduler = 1;

A partir daqui, você pode criar seu próprio procedimento de backup do cliente usando procedimentos armazenados e agendar esse procedimento armazenado. No entanto, a única desvantagem que ouvi foi atualizar as tabelas do InnoDB no procedimento armazenado chamado de um evento que uma vez tentei ajudar a solucionar isso .

Uma abordagem mais estável sem usar o MySQL Events também é a abordagem mais simples.

Escreva um arquivo em lote do DOS que execute um mysqldump e salve a saída no arquivo de destino de sua escolha. Em seguida, basta usar o agendador do Windows para chamar esse arquivo em lotes do DOS.

De uma chance !!!

RolandoMySQLDBA
fonte
1

estamos usando o servidor de backup todo por um longo tempo. oferece backup completo, incremental e diferencial. geralmente configuramos uma programação de backup diário e salvamos três versões das imagens, o que significa que o software exclui automaticamente as imagens antigas. um arquivo específico também pode ser restaurado no Windows Explorer a partir de uma imagem de backup de pasta ou partição. somos usuários de pequenas empresas e não podemos pagar por um software de backup que custa 1 mil dólares. então achamos que todo backup nos convém muito bem.

Pico
fonte