Mysql
MySQL 使用什麼機制在 Windows Server 2008 上安排備份?
在 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 批處理文件。
試一試 !!!