¿Qué mecanismo utiliza MySQL para programar copias de seguridad en Windows Server 2008?


8

Al programar copias de seguridad de bases de datos en MySQL Server (v5.1.45-community) que se ejecutan en Windows Server 2008, ¿qué mecanismo se utiliza para activar la ejecución de las copias de seguridad? Creo que está usando el Programador de tareas de Windows, pero no veo ninguna tarea obvia para estas copias de seguridad. SQL Server usa un servicio de agente separado. ¿Hay algo similar en MySQL?

INFORMACIÓN ADICIONAL: Las copias de seguridad se configuraron con MySQL Administrator. Soy consciente de cómo programar las copias de seguridad, pero no se están ejecutando y estoy buscando información sobre dónde comenzar la resolución de problemas.

Respuestas:



3

Dentro de MySQL 5.1+, existe la capacidad de crear programación de eventos .

Aquí hay un ejemplo de cómo programar la eliminación de filas de una tabla que tienen más de 2 horas de antigüedad:

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 activar la programación de eventos, debe hacer dos cosas:

Primero, active a mano:

SET GLOBAL event_scheduler = 1;

Luego, agregue esto a my.ini para mantener el programador de eventos en caso de que reinicie mysql

[mysqld]
event_scheduler = 1;

Desde aquí, puede diseñar su propio procedimiento de respaldo del cliente utilizando procedimientos almacenados y luego programar ese procedimiento almacenado. Sin embargo, el único inconveniente del que he oído fue actualizar las tablas de InnoDB dentro del procedimiento almacenado llamado desde un evento que una vez intenté ayudar a solucionar este problema .

Un enfoque más estable sin usar MySQL Events es también el enfoque más simple.

Escriba un archivo por lotes de DOS que ejecute un mysqldump y guarde la salida en el archivo de destino que elija. Luego, simplemente use el programador de Windows para llamar a ese archivo por lotes de DOS.

Darle una oportunidad !!!


1

Hemos estado usando todo el servidor de copia de seguridad durante mucho tiempo. Ofrece respaldo completo, incremental y diferencial. Por lo general, configuramos un programa de copia de seguridad diario y guardamos tres versiones de las imágenes, lo que significa que el software elimina automáticamente las imágenes antiguas. También se puede restaurar un archivo específico en el explorador de Windows desde una imagen de copia de seguridad de una carpeta o partición. somos usuarios de pequeñas empresas y no podemos permitirnos un software de respaldo que cuesta 1k dólar. así que descubrimos que todo backup nos queda muy bien.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.