Cơ chế nào mà MySQL sử dụng để lên lịch Sao lưu trên Windows Server 2008?


8

Khi lên lịch sao lưu cơ sở dữ liệu trên MySQL Server (cộng đồng v5.1.45) chạy trên Windows Server 2008, cơ chế nào được sử dụng để kích hoạt các bản sao lưu để chạy? Tôi nghĩ rằng nó đang sử dụng Trình lập lịch tác vụ Windows, nhưng tôi không thấy bất kỳ tác vụ rõ ràng nào cho các bản sao lưu này. SQL Server sử dụng một dịch vụ đại lý riêng biệt. Có một cái gì đó tương tự trong MySQL?

THÔNG TIN BỔ SUNG: Các bản sao lưu đã được thiết lập với Quản trị viên MySQL. Tôi biết cách lên lịch sao lưu, nhưng chúng không chạy và tôi đang tìm hiểu sâu về việc bắt đầu xử lý sự cố.

Câu trả lời:



3

Trong MySQL 5.1+, tồn tại khả năng tạo lịch trình sự kiện .

Dưới đây là một ví dụ về cách lên lịch xóa các hàng khỏi bảng đã hơn 2 giờ:

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;

Để kích hoạt lịch trình sự kiện, bạn phải làm hai việc:

Đầu tiên, kích hoạt bằng tay:

SET GLOBAL event_scheduler = 1;

Sau đó, thêm phần này vào my.ini để giữ lịch trình sự kiện trong trường hợp bạn khởi động lại mysql

[mysqld]
event_scheduler = 1;

Từ đây, bạn có thể thiết kế thủ tục sao lưu khách hàng của riêng bạn bằng cách sử dụng các thủ tục được lưu trữ và sau đó lên lịch cho thủ tục được lưu trữ đó. Tuy nhiên, một nhược điểm mà tôi đã nghe nói là cập nhật các bảng InnoDB trong quy trình được lưu trữ được gọi từ một sự kiện mà tôi đã từng cố gắng giúp khắc phục sự cố này .

Một cách tiếp cận ổn định hơn mà không cần sử dụng Sự kiện MySQL cũng là cách tiếp cận đơn giản hơn.

Viết một tệp bó DOS sẽ thực thi một mysqldump và lưu kết quả đầu ra vào tệp đích bạn chọn. Sau đó, chỉ cần sử dụng bộ lập lịch Windows để gọi tệp bó DOS đó.

Hãy thử một lần !!!


1

chúng tôi đã sử dụng máy chủ dự phòng trong một thời gian dài. nó cung cấp sao lưu đầy đủ, gia tăng và khác biệt. chúng tôi thường thiết lập lịch sao lưu hàng ngày và lưu ba phiên bản hình ảnh, điều đó có nghĩa là phần mềm sẽ tự động xóa các hình ảnh cũ. một tệp cụ thể cũng có thể được khôi phục trong Windows explorer từ thư mục hoặc ảnh sao lưu phân vùng. chúng tôi là người dùng doanh nghiệp nhỏ và không thể mua một số phần mềm sao lưu có giá 1 nghìn đô la. Vì vậy, chúng tôi thấy todo sao lưu phù hợp với chúng tôi rất tốt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.