Mysql

MySQL 使用什麼機制在 Windows Server 2008 上安排備份?

  • March 2, 2021

在 Windows Server 2008 上執行的 MySQL Server (v5.1.45-community) 上安排數據庫備份時,使用什麼機制來觸發備份執行?我認為它使用的是 Windows 任務計劃程序,但我沒有看到這些備份有任何明顯的任務。SQL Server 使用單獨的代理服務。MySQL中有類似的東西嗎?

附加資訊:備份是使用 MySQL 管理員設置的。我知道如何安排備份,但它們沒有執行,我正在尋找有關從哪裡開始故障排除的見解。

你在執行MySQL 管理員嗎?這包括一個備份調度機制

在 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 事件的更穩定的方法也是更簡單的方法。

編寫一個執行mysqldump的 DOS 批處理文件並將輸出保存到您選擇的目標文件中。然後,只需使用 Windows 調度程序呼叫該 DOS 批處理文件。

試一試 !!!

引用自:https://dba.stackexchange.com/questions/1329