本文目錄一覽:
- 1、mysql 數據備份
- 2、MySQL數據庫備份方法
- 3、如何備份mysql queries
- 4、mysql到底如何備份?
- 5、詳解Mysql自動備份與恢復的幾種方法(圖文教
- 6、mysql數據庫如何備份?
mysql 數據備份
使用直接拷貝的方法備份時,尤其要注意表沒有被使用,應該對錶進行讀鎖定或停止MySQL服務。備份一個表,需要三個文件:
對於MyISAM表:
tbl_name.frm 表的描述文件
tbl_name.MYD 表的數據文件
tbl_name.MYI 表的索引文件
對於ISAM表:
tbl_name.frm 表的描述文件
tbl_name.ISD 表的數據文件
tbl_name.ISM 表的索引文件
對於MyISAM表,你可以從運行在不同硬件系統的服務器之間複製文件,例如,SUN服務器和INTEL PC機之間。
當 然,這只是備份一個數據表,在很多情況下我們需要備份完整的數據庫,這個時候同樣可以直接複製數據庫文件夾即可完成備份;若想再省點兒事,把整個數據庫目 錄「data」複製也可以,但是在還原數據時要注意,只能一個一個地還原數據庫,因為該目錄下有mysql運行時的配置文件,若正在運行的mysql配置 信息遭到還原破壞,整個mysql服務就會無法啟動。
SELECT INTO OUTFILE和MYSQLDUMP備份數據:
MySQLdump工具可以把整個數據庫裝載到一個單獨的文本文件中。這個文件包含所有重建數據庫和表的SQL命令。這個命令取得所有的模式 (Schema)並且將其轉換成DDL語法(CREATE語句,即數據庫定義語句),還取得所有的數據,並且為這些數據創建INSERT語句。所有的東西 都被包含到了一個文本文件中。這個文本文件可以用一個簡單的批處理和一個合適SQL語句導回到MySQL中。這個工具令人難以置信地簡單而快速。
有3種方式來調用mysqldump
選擇一個數據庫或一個數據表備份到一個文件:
/bin mysqldump [options] db_name [tables] filename.txt
選擇多個數據庫備份到一個文件:
/bin mysqldump [options] –database DB1 [DB2 DB3…] filename.txt
所有數據庫備份到一個文件:
/bin mysqldump [options] –all–database filename.txt
Option選擇:
–help,-?
顯示幫助消息並退出。
–add-drop-table
這個選項將會在每一個表的前面加上DROP TABLE IF EXISTS語句,這樣可以保證導回MySQL數據庫的時候不會出錯,因為每次導回的時候,都會首先檢查表是否存在,存在就刪除
–add-locks
這個選項會在INSERT語句中捆上一個LOCK TABLE和UNLOCK TABLE語句。這就防止在這些記錄被再次導入數據庫時其他用戶對錶進行的操作
-c or –complete_insert
這個選項使得MySQLdump命令給每一個產生INSERT語句加上列(field)的名字。當把數據導出導另外一個數據庫時這個選項很有用。
–delayed-insert 在INSERT命令中加入DELAY選項
-F or –flush-logs 使用這個選項,在執行導出之前將會刷新MySQL服務器的log.
-f or –force 使用這個選項,即使有錯誤發生,仍然繼續導出
–full 這個選項把附加信息也加到CREATE TABLE的語句中
-l or –lock-tables 使用這個選項,導出表的時候服務器將會給表加鎖。
-t or –no-create- info
這個選項使的MySQLdump命令不創建CREATE TABLE語句,這個選項在您只需要數據而不需要DDL(數據庫定義語句)時很方便。
-d or –no-data 這個選項使的MySQLdump命令不創建INSERT語句。
在您只需要DDL語句時,可以使用這個選項。
–opt 此選項將打開所有會提高文件導出速度和創造一個可以更快導入的文件的選項。
-q or –quick 這個選項使得MySQL不會把整個導出的內容讀入內存再執行導出,而是在讀到的時候就寫入導文件中。
-T path or –tab = path
這 個選項將會將數據庫中每一個表創建兩個文件,一個文件包含DDL語句或者表創建語句,另一個文件包含數據。DDL文件被命名為 table_name.sql,數據文件被命名為table_name.txt。該參數的path為存放目錄,而且該目錄必須已經存在。 如:/binmysqldump –uroot –p –tab=d:\\ mydata
-w “WHERE Clause” or –where = “Where clause ” 篩選將要放到導出文件的數據。
下面來看幾組mysqldump命令案例:
將數據庫mydata的內容備份到mydata.txt文件中:
/binMySQLdump –uroot -p mydata d:\\mydata.txt
將mydata數據庫中的users表的內容備份到d:\\users.txt:
/binMySQLdump –uroot -p mydata users d:\\users.txt
將mydata數據庫中的users表username值為「feihu」的數據備份到d:\\users.txt:
/binMySQLdump –uroot -p –where=」username=』feihu』」 mydata users d:\\users.txt;
將mydata數據庫以及內部表的創建結構(DDL)備份到d:\\users.txt:
/binMySQLdump –uroot –p -d mydata d:\\mydata.txt
將mydata和mydata2數據庫同時備份到d:\\users.txt:
/bin MySQLdump –uroot –p -d mydata mydata2 d:\\mydata.txt
將所有數據備份到一個數據庫,命令怎麼寫呢???
schema: 模式The set of statements, expressed in data definition language, that completely describe the structure of a data base.(一組以數據定義語言來表達的語句集,該語句集完整地描述了數據庫的結構。)
當需要將還原備份數據時,使用如下語句:
/binmysql –uroot –p mydata d:\\mydata.txt;
注意使用「」符號,導入數據。還可以使用source命令執行文件中的腳本來還原數據,如:
Mysqlsource d:\mydata.txt;
LOAD DATA INFILE和MYSQLIMPORT恢複數據
關於load data infile語句的使用已經在別一節講述過了,詳細請參考「使用LOAD DATA和INSERT語句導入Mysql數據」。如果你僅僅恢複數據, mysqlimport完全是與LOAD DATA 語句對應的,讀者可以任意選擇一個去實現。
MySQLimport位於MySQL/bin目錄中,是MySQL的一個載入(或者說導入)數據的一個非常有效的工具。這是一個命令行工具。有兩個參數 以及大量的選項可供選擇。這個工具把一個文本文件(textfile)導入到你指定的數據庫和表中。比方說我們要從文件users.txt中把數據導入到 數據庫mydata中的表users中:
/binmysqlimport –uroot –p mydata d:\users.txt
注意:這裡users.txt是我們要導入數據的文本文件,而mydata是我們要操作的數據庫,數據庫中的表名是users,這裡文本文件的數據格式必須與users表中的記錄格式一致,否則MySQLimport命令將會出錯。
其中表的名字是導入文件的第一個句號(.)前面文件字符串,另外一個例子:MySQLimport mydata users.2009.10.txt;那麼我們將把文件中的內容導入到數據庫mydata 中的users表中。
上面的例子中,都只用到兩個參數,並沒有用到更多的選項,下面介紹MySQLimport的選項
-d or –delete 新數據導入數據表中之前刪除數據數據表中的所有信息
-f or –force 不管是否遇到錯誤,MySQLimport將強制繼續插入數據
-i or –ignore MySQLimport跳過或者忽略那些有相同唯一關鍵字的行, 導入文件中的數據將被忽略。
-l or -lock-tables 數據被插入之前鎖住表,這樣就防止了,你在更新數據庫時,用戶的查詢和更新受到影響。
-r or -replace 這個選項與-i選項的作用相反;此選項將替代表中有相同唯一關鍵字的記錄。
–fields-enclosed-by= char 指定文本文件中數據的記錄時以什麼括起的, 很多情況下數據以雙引號括起。 默認的情況下數據是沒有被字符括起的。
–fields-terminated-by=char 指定各個數據的值之間的分隔符,在句號分隔的文件中,分隔符是句號。您可以用此選項指定數據之間的分隔符。默認的分隔符是跳格符(Tab)
–lines-terminated-by=str 此選項指定文本文件中行與行之間數據的分隔字符串或者字符。 默認的情況下MySQLimport以newline為行分隔符。您可以選擇用一個字符串來替代一個單個的字符:一個新行或者一個回車。
MySQLimport命令常用的選項還有-v 顯示版本(version),-p 提示輸入密碼(password)等。
如果,我們要導入一個文件(Orders.txt)中行的記錄格式是這樣的:
“1”, “ORD89876”, “1 Dozen Roses”, “19991226”
我們的任務是要把這個文件裏面的數據導入到數據庫mydata中的表格Orders中,我們使用這個命令:
/BinMySQLimport -uroot–prl –fields-enclosed-by=” –fields-terminated-by=, mydata Orders.txt
比如我們要插入一些數據,使用包含下面文本的文件(文件名為New_Data.sql,當然我們也可以取名為New_Data.txt及任何其他的合法名字,並不一定要以後綴sql結尾):
USE mydata; INSERT INTO Orders (Orders_ID, username) VALUES(1, “Block”); INSERT INTO Orders (Orders_ID, username) VALUES(2, “Newton”); INSERT INTO Orders (Orders_ID, username) VALUES(3, “Simmons”);
注意上面的這些句子的語法都必須是正確的,並且每個句子以分號結束。上面的USE命令選擇數據庫,INSERT命令插入數據。
然後運行下面的命令:
/binmysql –uroot –p mydata d:\New_Data.txt;
接着按提示輸入密碼,如果上面的文件中的語句沒有錯誤,那麼這些數據就被導入到了數據庫中。
MySQL數據庫備份方法
MyISAM 表是保存成文件的形式,因此相對比較容易備份,上面提到的幾種方法都可以使用。Innodb 所有的表都保存在同一個數據文件 ibdata1 中(也可能是多個文件,或者是獨立的表空間文件),相對來說比較不好備份,免費的方案可以是拷貝數據文件、備份 binlog,或者用 mysqldump。1. 使用直接拷貝數據庫備份 典型的如cp、tar或cpio實用程序當你使用直接備份方法時,必須保證表不在被使用。如果服務器在你正在拷貝一個表時改變它,拷貝就失去意義。保證你的拷貝完整性的最好方法是關閉服務器,拷貝文件,然後重啟服務器。 如果你不想關閉服務器,要在執行表檢查的同時鎖定服務器。如果服務器在運行,相同的制約也適用於拷貝文件,應該使用相同的鎖定協議讓服務器「安靜下來」。當你完成了MySQL數據庫備份時,需要重啟服務器(如果關閉了它)或釋放加在表上的鎖定(如果你讓服務器運行)。 要用直接拷貝文件把一個數據庫從一台機器拷貝到另一台機器上,只是將文件拷貝到另一台服務器主機的適當數據目錄下即可。要確保文件是MyIASM格式或兩台機器有相同的硬件結構,否則你的數據庫在另一台主機上有奇怪的內容。你也應該保證在另一台機器上的服務器在你正在安裝數據庫表時不訪問它們。2. 使用mysqldump數據庫備份mysqldump 是採用SQL級別的備份機制,它將數據表導成 SQL 腳本文件,在不同的 MySQL 版本之間升級時相對比較合適,這也是最常用的備份方法。mysqldump程序備份數據庫較慢,但它生成的文本文件便於移植。mysqldump 的一些主要參數:1)–compatible=name它告訴 mysqldump,導出的數據將和哪種數據庫或哪箇舊版本的 MySQL 服務器相兼容。值可以為 ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_tables_options、no_field_options 等,要使用幾個值,用逗號將它們隔開。當然了,它並不保證能完全兼容,而是盡量兼容。2)–complete-insert,-c導出的數據採用包含字段名的完整 INSERT 方式,也就是把所有的值都寫在一行。這麼做能提高插入效率,但是可能會受到 max_allowed_packet 參數的影響而導致插入失敗。因此,需要謹慎使用該參數,至少我不推薦。3)–default-character-set=charset指定導出數據時採用何種字符集,如果數據表不是採用默認的 latin1 字符集的話,那麼導出時必須指定該選項,否則再次導入數據後將產生亂碼問題。4)–disable-keys告訴mysqldump 在 INSERT 語句的開頭和結尾增加 ; 和 ; 語句,這能大大提高插入語句的速度,因為它是在插入完所有數據後才重建索引的。該選項只適合 MyISAM 表。5)–extended-insert = true|false默認情況下,mysqldump 開啟 –complete-insert 模式,因此不想用它的的話,就使用本選項,設定它的值為 false 即可。6)–hex-blob使用十六進制格式導出二進制字符串字段。如果有二進制數據就必須使用本選項。影響到的字段類型有 BINARY、VARBINARY、BLOB。7)–lock-all-tables,-x在開始導出之前,提交請求鎖定所有數據庫中的所有表,以保證數據的一致性。這是一個全局讀鎖,並且自動關閉 –single-transaction 和 –lock-tables 選項。8)–lock-tables它和–lock-all-tables 類似,不過是鎖定當前導出的數據表,而不是一下子鎖定全部庫下的表。本選項只適用於 MyISAM 表,如果是 Innodb 表可以用 –single-transaction 選項。9)–no-create-info,-t只導出數據,而不添加 CREATE TABLE 語句。10)–no-data,-d不導出任何數據,只導出數據庫表結構。11)–opt這只是一個快捷選項,等同於同時添加 –add-drop-tables –add-locking –create-option –disable-keys –extended-insert –lock-tables –quick –set-charset 選項。本選項能讓 mysqldump 很快的導出數據,並且導出的數據能很快導回。該選項默認開啟,但可以用 –skip-opt 禁用。注意,如果運行 mysqldump 沒有指定 –quick 或 –opt 選項,則會將整個結果集放在內存中。如果導出大數據庫的話可能會出現問題。12)–quick,-q該選項在導出大表時很有用,它強制 mysqldump 從服務器查詢取得記錄直接輸出而不是取得所有記錄後將它們緩存到內存中。13)–routines,-R導出存儲過程以及自定義函數。14)–single-transaction該選項在導出數據之前提交一個 BEGIN SQL語句,BEGIN 不會阻塞任何應用程序且能保證導出時數據庫的一致性狀態。它只適用於事務表,例如 InnoDB 和 BDB。本選項和 –lock-tables 選項是互斥的,因為 LOCK TABLES 會使任何掛起的事務隱含提交。要想導出大表的話,應結合使用 –quick 選項。–triggers同時導出觸發器。該選項默認啟用,用 –skip-triggers 禁用它。備份:使用mysqldump備份數據庫其實就是把數據庫轉儲成一系列CREATE TABLE和INSERT語句,通過這些語句我們就可重新生成數據庫。使用mysqldump的方法如下:% mysqldump –opt testdb | gzip /data/backup/testdb.bak#–opt選項會對轉儲過程進行優化,生成的備份文件會小一點,後的管道操作會進行數據壓縮% mysqldump –opt testdb mytable1,mytable2 | gzip /data/backup/testdb_mytable.bak#可在數據庫後接數據表名,只導出指定的數據表,多個數據表可用逗號分隔–opt選項還可激活–add-drop-table選項,它將會在備份文件的每條CREATE TABLE前加上一條DROP TABLE IF EXISTS語句。這可方便進行數據表的更新,而不會發生「數據表已存在」的錯誤。用mysqldump命令還可直接把數據庫轉移到另外一台服務器上,不用生成備份文件。重複執行可定期更新遠程數據庫。% mysqladmin -h remote_host create testdb% mysqldump –opt testdb | mysql -h remote_host testdb另外還可通過ssh遠程調用服務器上的程序,如:% ssh remote_host mysqladmin create testdb% mysqldump –opt testdb | ssh remote_host mysql testdb 通過直接拷貝系統文件的方式備份數據庫,在備份時,要確保沒有人對數據庫進行修改操作。要做到這點,最好關閉服務器。如果不能關閉的,要以只讀方試鎖定有關數據表。下面是一些示例:% cp -r db /backup/db #備份db數據庫到/backup/db目錄% cp table_name.* /backup/db #只備份table_name數據表% scp -r db remotehot:/usr/local/mysql/data #用scp把數據庫直接拷貝到遠程服務器,在把數據庫直接拷貝到遠程主機時,應注意兩台機器必須有同樣的硬件結構,或者將拷貝的數據表全部是可移植數據表類型。或者/usr/local/mysql/bin/mysqldump -uroot -proot \–default-character-set=utf8 –opt –extended-insert=false \–triggers -R –hex-blob -x testdb testdb.sql使用以下 SQL 來備份 Innodb 表:/usr/local/mysql/bin/mysqldump -uroot -proot \–default-character-set=utf8 –opt –extended-insert=false \–triggers -R –hex-blob –single-transaction testdb testdb.sql另外,如果想要實現在線備份,還可以使用 –master-data 參數來實現,如下:/usr/local/mysql/bin/mysqldump -uroot -proot \–default-character-set=utf8 –opt –master-data=1 \–single-transaction –flush-logs testdb testdb.sql它只是在一開始的瞬間請求鎖表,然後就刷新binlog了,而後在導出的文件中加入CHANGE MASTER 語句來指定當前備份的binlog位置,如果要把這個文件恢復到slave里去,就可以採用這種方法來做。 還原:用mysqldump 備份出來的文件是一個可以直接倒入的 SQL 腳本,有兩種方法可以將數據導入。直接用 mysql 客戶端例如:/usr/local/mysql/bin/mysql -uroot -proot testdb testdb.sql用SOURCE 語法其實這不是標準的 SQL 語法,而是 mysql 客戶端提供的功能,例如:SOURCE /tmp/testdb.sql;這裡需要指定文件的絕對路徑,並且必須是 mysqld 運行用戶(例如 nobody)有權限讀取的文件。 3. 使用mysqlhotcopy數據庫備份 使用mysqlhotcopy工具,它是一個Perl DBI腳本,可在不關閉服務器的情況下備份數據庫,mysqlhotcopy 是一個 PERL 程序,最初由Tim Bunce編寫。它使用 LOCK TABLES、FLUSH TABLES 和 cp 或 scp 來快速備份數據庫。它是備份數據庫或單個表的最快的途徑,但它只能運行在數據庫文件(包括數據表定義文件、數據文件、索引文件)所在的機器上。mysqlhotcopy 只能用於備份 MyISAM,並且只能運行在 類Unix 和 NetWare 系統上。它主要的優點是:它直接拷貝文件,所以它比mysqldump快。可自動完成數據鎖定工作,備份時不用關閉服務器。能刷新日誌,使備份文件和日誌文件的檢查點能保持同步。備份:mysqlhotcopy 支持一次性拷貝多個數據庫,同時還支持正則表達。以下是幾個例子:/usr/local/mysql/bin/mysqlhotcopy -h=localhost -u=root -p=root \testdb /tmp (把數據庫目錄 testdb 拷貝到 /tmp 下)/usr/local/mysql/bin/mysqlhotcopy -h=localhost -u=root -p=root \testdb_1 testdb_2 testdb_n /tmp/usr/local/mysql/bin/mysqlhotcopy -h=localhost -u=root -p=root \testdb./regex/ /tmp 還原:mysqlhotcopy 備份出來的是整個數據庫目錄,使用時可以直接拷貝到 mysqld 指定的 datadir (在這裡是 /usr/local/mysql/data/)目錄下即可,同時要注意權限的問題,如下例:cp -rf testdb /usr/local/mysql/data/chown -R nobody:nobody /usr/local/mysql/data/ (將 testdb 目錄的屬主改成 mysqld 運行用戶) 4. 使用SQL語句數據庫備份 BACKUP TABLE 語法其實和 mysqlhotcopy 的工作原理差不多,都是鎖表,然後拷貝數據文件。它能實現在線備份,但是效果不理想,因此不推薦使用。它只拷貝表結構文件和數據文件,不同時拷貝索引文件,因此恢復時比較慢。備份:BACK TABLE tbl_test TO ‘/tmp/testdb/’; #把tbl_test數據庫備份到/tmp/testdb/目錄里,會自動創建一個testdb目錄 為了執行該語句,你必須擁有那些表的FILE權限和SELECT權限,備份目錄還必須是服務器可寫的。該語句執行時,會先把內存中的數據寫入磁盤,再把各個數據表的.frm(表結構定義文件)、.MYD(數據)文件從數據目錄拷貝到備份目錄。它不拷貝.MYI(索引)文件,因為它能用另外兩個文件重建。BACKUP TABLE語句備份時,依次鎖定數據表,當同時備份多個數據表時,數據表可能會被修改,所以備份0完成時,備份文件中的數據和現時數據表中的數據可能會有差異,為了消除該差異,我們可用只讀方式鎖定數據表,在備份完成後再解鎖。如:mysql LOCK TABLES tb1 READ,tb2 READ;mysql BACKUP TABLE tb1,tb2 TO ‘backup/db’;mysql UNLOCK TABLES;使用BACKUP TABLE語句備份的數據表可用RESTORE TABLE重新加載到服務器。注意,必須要有 FILE 權限才能執行本SQL,並且目錄 /tmp/testdb/ 必須能被 mysqld 用戶可寫,導出的文件不能覆蓋已經存在的文件,以避免安全問題。SELECT INTO OUTFILE 則是把數據導出來成為普通的文本文件,可以自定義字段間隔的方式,方便處理這些數據。例子:SELECT * INTO OUTFILE ‘/tmp/testdb/tbl_test.txt’ FROM tbl_test;注意,必須要有 FILE 權限才能執行本SQL,並且文件 /tmp/testdb/tbl_test.txt 必須能被 mysqld 用戶可寫,導出的文件不能覆蓋已經存在的文件,以避免安全問題。還原:用BACKUP TABLE 方法備份出來的文件,可以運行 RESTORE TABLE 語句來恢複數據表。例子:RESTORE TABLE FROM ‘/tmp/testdb/’;權限要求類似上面所述。用SELECT INTO OUTFILE 方法備份出來的文件,可以運行 LOAD DATA INFILE 語句來恢複數據表。例子:LOAD DATA INFILE ‘/tmp/testdb/tbl_name.txt’ INTO TABLE tbl_name;權限要求類似上面所述。倒入數據之前,數據表要已經存在才行。
以上回答你滿意么?
如何備份mysql queries
一、MySQL備份類型
1.熱備份、溫備份、冷備份 (根據服務器狀態)
熱備份:讀、寫不受影響;
溫備份:僅可以執行讀操作;
冷備份:離線備份;讀、寫操作均中止;
2.物理備份與邏輯備份 (從對象來分)
物理備份:複製數據文件;
邏輯備份:將數據導出至文本文件中;
3.完全備份、增量備份、差異備份 (從數據收集來分)
完全備份:備份全部數據;
增量備份:僅備份上次完全備份或增量備份以後變化的數據;
差異備份:僅備份上次完全備份以來變化的數據;
4.邏輯備份的優點:
在備份速度上兩種備份要取決於不同的存儲引擎
物理備份的還原速度非常快。但是物理備份的最小力度只能做到表
邏輯備份保存的結構通常都是純ASCII的,所以我們可以使用文本處理工具來處理
邏輯備份有非常強的兼容性,而物理備份則對版本要求非常高
邏輯備份也對保持數據的安全性有保證
5.邏輯備份的缺點:
邏輯備份要對RDBMS產生額外的壓力,而裸備份無壓力
邏輯備份的結果可能要比源文件更大。所以很多人都對備份的內容進行壓縮
邏輯備份可能會丟失浮點數的精度信息
mysql到底如何備份?
windows下:
具體來說,我們若需利用任務計劃程序自動運行則應執行如下步驟:
1.單擊「開始」按鈕,然後依次選擇「程序」→「附件」→「系統工具」→「任務計劃」(或者是「設置」→「控制面板」→「任務計劃」),啟動Windows 2000的任務計劃管理程序。
2.在「任務計劃」窗口中雙擊「添加任務計劃」圖標,啟動系統的「任務計劃嚮導」,然後單擊「下一步」按鈕,在給出的程序列表中選擇需要自動運行的應用程序,然後單擊「下一步」按鈕。
設置適當的任務計劃名稱並選擇自動執行這個任務的時間頻率(如每天、每星期、每月、一次性、每次啟動計算機時、每次登錄時等),然後單擊「下一步」按鈕。
此時系統將會要求用戶對程序運行的具體時間進行設置,如幾號、幾點鐘、哪幾個時間段才能運行等,我們只需根據自己的需要加以設置即可。
4.接下來系統將會要求用戶設置適當的用戶名及密碼(如圖5所示),以便系統今後能自動加以運行。
5.最後,我們只需單擊「完成」按鈕即可將相應任務添加到Windows 2000的任務計劃程序中,此後它就會自動「記住」這個任務,一旦系統時間及相關條件與用戶設置的計劃相符,它就會自動調用用戶所指定的應用程序,十分方便(每次啟動Windows 2000的時候,任務計劃程序都會自動啟動,並在後台運行,確保用戶的計劃能夠按時執行)。
現在我們來測試一下剛才所建的任務是否成功,鼠標右鍵單擊「php」程序圖標(如圖6所示),在彈出的菜單裏面選擇「運行」。一般情況下程序圖標只要這樣激活運行就可以正常啟動。如果運行失敗可查看用戶和密碼是否設置正確,還有確定「Task Scheduler」服務是否已啟動,本人當初就是為了節省系統資源把它關掉了導致運行失敗,害我找了大半天。另外也可從「系統日誌」里查看到底是什麼原因造成運行失敗的。
好了,講了這麼多任務計劃的應用,現在我們切入正題,下面將介紹兩個例子:
一、讓PHP定時運行吧!
1、 編輯如下代碼,並保存為test.php:
?php
$fp = @fopen(“test.txt”, “a+”);
fwrite($fp, date(“Y-m-d H:i:s”) . ” 讓PHP定時運行吧!\n”);
fclose($fp);
?
2、添加一個任務計劃,在(如圖2所示)這一步輸入命令:D:\php4\php.exe -q D:\php4\test.php
3、時間設置為每隔1分鐘運行一次,然後運行這個任務。
4、現在我們來看看d:\php4\test.txt文件的內容時候是否成功。如果內容為如下所示,那麼恭喜你成功了。
2003-03-03 11:08:01 讓PHP定時運行吧!
2003-03-03 11:09:02 讓PHP定時運行吧!
2003-03-03 11:10:01 讓PHP定時運行吧!
2003-03-03 11:11:02 讓PHP定時運行吧!
二、讓MYSQL實現自動備份變成可能!
1、編輯如下代碼,並保存為backup.php,如果要壓縮可以拷貝一個rar.exe:
?php
if ($argc != 2 || in_array($argv[1], array(‘–help’, ‘-?’))) {
?
backup Ver 0.01, for Win95/Win98/WinNT/Win2000/WinXP on i32
Copyright (C) 2000 ptker All rights reserved.
This is free software,and you are welcome to modify and redistribute it
under the GPL license
PHP Shell script for the backup MySQL database.
Usage: ?php echo $argv[0]; ? option
option can be database name you would like to backup.
With the –help, or -? options, you can get this help and exit.
?php
} else {
$dbname = $argv[1];
$dump_tool = “c:\\mysql\\bin\\mysqldump”;
$rar_tool = “d:\\php4\\rar”;
@exec(“$dump_tool –opt -u user -ppassword $dbname ./$dbname.sql”);
@exec(“$rar_tool a -ag_yyyy_mm_dd_hh_mm $dbname.rar $dbname.sql”);
@unlink(“$dbname.sql”);
echo “Backup complete!”;
}
?
2、添加一個任務計劃,在(如圖2所示)這一步輸入命令:
D:\php4\php.exe -q D:\php4\backup.php databasename
3、時間設置為每天運行一次,然後運行這個任務。
4、最後會在d:\php4\目錄下生成一個以數據庫名和當前時間組成的rar文件。
linux下:
MySQL :: Linux 下自動備份數據庫的 shell 腳本
Linux 服務器上的程序每天都在更新 MySQL 數據庫,於是就想起寫一個 shell 腳本,結合 crontab,定時備份數據庫。其實非常簡單,主要就是使用 MySQL 自帶的 mysqldump 命令。
腳本內容如下:
#!/bin/sh
# File: /home/mysql/backup.sh
# Database info
DB_NAME=”test”
DB_USER=”username”
DB_PASS=”password”
# Others vars
BIN_DIR=”/usr/local/mysql/bin”
BCK_DIR=”/home/mysql/backup”
DATE=`date +%F`
# TODO
$BIN_DIR/mysqldump –opt -u$DB_USER -p$DB_PASS $DB_NAME | gzip $BCK_DIR/db_$DATE.gz
然後使用將此腳本加到 /etc/crontab 定時任務中:
01 5 * * 0 mysql /home/mysql/backup.sh
好了,每周日凌晨 5:01 系統就會自動運行 backup.sh 文件備份 MySQL 數據庫了。
/home/www/inc/back
參考資料:
詳解Mysql自動備份與恢復的幾種方法(圖文教
備份方案一: 通過 mysqldump命令,直接生成一個完整的 .sql 文件
Step 1: 創建一個批處理
(說明:root 是mysql默認用戶名, aaaaaa 是mysql密碼, bugtracker 是數據庫名)
————mySql_backup.bat————————————————————————————–
d:
cd D:/AppServ/MySQL/bin
mysqldump -uroot -paaaaaa bugtracker E:/DataBase/Mysql_bugtracker_backup/bugtracker_back.sql
exit
Step 2: 創建一個計劃任務
“Start” — “Control Panel” — “Administrative Tools” — “Task Scheduler”
“Create A Basic Task” — — “Daily” (注意設置後面的 時 分 秒) — —- “Start a Program” — “Browser” (定位選擇到你剛才創建的批處理mySql_backup.bat) — — “Finish”
對應的還原方法
創建一個處理:
———-mySql_restore.bat——-
d:
cd D:/AppServ/MySQL/bin
mysql -uroot -paaaaaa bugtracker E:/DataBase/Mysql_bugtracker_backup/bugtracker_back.sql
exit
雙擊它即可自動執行還原
備份方案二: 通過 xcopy 命令,直接把Mysql 的 data 目錄下的對應的數據庫全部的文件全部 copy 出來
創建批處理:
xcopy D:/AppServ/MySQL/data/bugtracker E:/DataBase/Mysql_bugtracker_backup/bugtracker/ /e /h /d /y /r /v /f /k
exit
對應的還原方法
把 E:/DataBase/Mysql_bugtracker_backup 目錄下的 bugtracker文件夾 直接 copy 到 D:/AppServ/MySQL/data 目錄下,把這個目錄的bugtracker文件夾 全部履蓋掉
備份方案三:安裝Navicat For MySql 工具,通過它的 Schedule 功能設置自動備份
Schedule — New Batch Job
在新彈出的頁面中 選擇你的 DB (eg: bugtracker ),然後在右邊面板(Available Jobs)中你會看到「Backup bugtracker」,雙擊它,它會出現在下邊面板—
對應的還原方法:
找到上述目錄下對應的最新的 .psc 文件,然後通過Navicat For Mysql 工具還原
mysql數據庫如何備份?
MySQL數據庫備份與還原
備份和恢複數據
生成SQL腳本
在控制台使用mysqldump命令可以用來生成指定數據庫的腳本文本,但要注意,腳本文本中只包含數據庫的內容,而不會存在創建數據庫的語句!所以在恢複數據時,還需要自已手動創建一個數據庫之後再去恢複數據。
mysqldump –u用戶名 –p密碼 數據庫名生成的腳本文件路徑
現在可以在C盤下找到mydb1.sql文件了!
注意,mysqldump命令是在Windows控制台下執行,無需登錄mysql!!!
執行SQL腳本
執行SQL腳本需要登錄mysql,然後進入指定數據庫,才可以執行SQL腳本!!!
執行SQL腳本不只是用來恢複數據庫,也可以在平時編寫SQL腳本,然後使用執行SQL 腳本來操作數據庫!大家都知道,在黑屏下編寫SQL語句時,就算髮現了錯誤,可能也不能修改了。所以我建議大家使用腳本文件來編寫SQL代碼,然後執行之!
SOURCE C:\mydb1.sql
注意,在執行腳本時需要先行核查當前數據庫中的表是否與腳本文件中的語句有衝突!例如在腳本文件中存在create table a的語句,而當前數據庫中已經存在了a表,那麼就會出錯!
還可以通過下面的方式來執行腳本文件:
mysql -uroot -p123 mydb1c:\mydb1.sql
mysql –u用戶名 –p密碼 數據庫要執行腳本文件路徑
這種方式無需登錄mysql!
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/256994.html