Mekanisme apa yang digunakan MySQL untuk menjadwalkan Pencadangan pada Windows Server 2008?

8

Saat menjadwalkan cadangan basis data di MySQL Server (v5.1.45-community) berjalan pada Windows Server 2008, mekanisme apa yang digunakan untuk memicu cadangan untuk berjalan? Saya pikir itu menggunakan Penjadwal Tugas Windows, tapi saya tidak melihat tugas yang jelas untuk cadangan ini. SQL Server menggunakan layanan agen terpisah. Apakah ada yang serupa di MySQL?

INFO TAMBAHAN: Cadangan disiapkan dengan Administrator MySQL. Saya sadar bagaimana menjadwalkan pencadangan, tetapi tidak berjalan dan saya mencari wawasan tentang di mana memulai pemotretan.

Scott Mayfield
sumber

Jawaban:

3

Di dalam MySQL 5.1+, ada kemampuan untuk membuat penjadwalan acara .

Berikut adalah contoh cara menjadwalkan penghapusan baris dari tabel yang berumur lebih dari 2 jam:

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;

Untuk mengaktifkan penjadwalan acara, Anda harus melakukan dua hal:

Pertama, aktifkan dengan tangan:

SET GLOBAL event_scheduler = 1;

Kemudian, tambahkan ini ke my.ini untuk menjaga penjadwal acara jika Anda me-restart mysql

[mysqld]
event_scheduler = 1;

Dari sini, Anda dapat merancang prosedur pencadangan pelanggan Anda sendiri menggunakan prosedur tersimpan dan kemudian menjadwalkan prosedur tersimpan itu. Namun, satu kekurangan yang saya dengar adalah memperbarui tabel InnoDB dalam prosedur tersimpan yang dipanggil dari suatu peristiwa yang pernah saya coba untuk membantu memecahkan masalah ini .

Pendekatan yang lebih stabil tanpa menggunakan Acara MySQL juga merupakan pendekatan yang lebih sederhana.

Tulis file batch DOS yang akan menjalankan mysqldump dan simpan output ke file tujuan pilihan Anda. Kemudian, cukup gunakan penjadwal Windows untuk memanggil file batch DOS itu.

Cobalah !!!

RolandoMySQLDBA
sumber
1

kami telah menggunakan todo server cadangan untuk waktu yang lama. ia menawarkan cadangan penuh, inkremental, dan diferensial. kami biasanya mengatur jadwal cadangan harian , dan menyimpan tiga versi gambar, yang berarti perangkat lunak secara otomatis menghapus gambar lama. file tertentu juga dapat dipulihkan di Windows explorer dari folder atau gambar cadangan partisi. kami adalah pengguna bisnis kecil, dan tidak mampu membeli beberapa perangkat lunak cadangan seharga 1k dolar. jadi kami menemukan bahwa melakukan backup sangat cocok untuk kami.

Puncak
sumber