Какой механизм использует MySQL для планирования резервного копирования в Windows Server 2008?

8

При планировании резервного копирования базы данных на MySQL Server (сообщество v5.1.45), работающем в Windows Server 2008, какой механизм используется для запуска резервного копирования? Я думаю, что он использует планировщик задач Windows, но я не вижу очевидных задач для этих резервных копий. SQL Server использует отдельную службу агента. Есть ли что-то подобное в MySQL?

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ: Резервные копии были настроены с MySQL Administrator. Я знаю, как планировать резервные копии, но они не запускаются, и я ищу понимание того, с чего начать устранение неполадок.

Скотт Мэйфилд
источник

Ответы:

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 также является более простым подходом.

Напишите пакетный файл DOS, который будет выполнять mysqldump, и сохраните вывод в целевой файл по вашему выбору. Затем просто используйте планировщик Windows для вызова этого пакетного файла DOS.

Попробуйте!

RolandoMySQLDBA
источник
1

мы давно используем сервер резервного копирования todo. он предлагает полное, инкрементное и дифференциальное резервное копирование. мы обычно устанавливаем ежедневное расписание резервного копирования и сохраняем три версии изображений, что означает, что программное обеспечение автоматически удаляет старые изображения. определенный файл также можно восстановить в проводнике Windows из папки или образа резервной копии раздела. мы являемся пользователями малого бизнеса и не можем позволить себе какое-то программное обеспечение для резервного копирования стоимостью 1 тыс. долларов. Таким образом, мы обнаружили, что резервное копирование todo нам очень подходит.

Пик
источник