新聞中心
隨著公司業(yè)務不斷發(fā)展,數(shù)據(jù)庫中存儲的數(shù)據(jù)量也越來越龐大,而這些數(shù)據(jù)往往是公司重要的財富和資產(chǎn)。因此,數(shù)據(jù)庫備份和數(shù)據(jù)安全就顯得尤為重要。在這篇文章中,我們將為大家介紹如何快速備份Mysql數(shù)據(jù)庫,從而保證數(shù)據(jù)的安全性。

成都創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務,包含不限于網(wǎng)站設計制作、成都做網(wǎng)站、鐵嶺縣網(wǎng)絡推廣、成都微信小程序、鐵嶺縣網(wǎng)絡營銷、鐵嶺縣企業(yè)策劃、鐵嶺縣品牌公關、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;成都創(chuàng)新互聯(lián)為所有大學生創(chuàng)業(yè)者提供鐵嶺縣建站搭建服務,24小時服務熱線:028-86922220,官方網(wǎng)址:www.cdcxhl.com
一、備份前的準備工作
在進行數(shù)據(jù)庫備份前,首先需要進行一些準備工作,以保證備份的高效和安全性。
1. 定期對數(shù)據(jù)庫進行維護和優(yōu)化,避免數(shù)據(jù)冗余和廢棄數(shù)據(jù)的存在。
2. 根據(jù)數(shù)據(jù)庫的大小和復雜程度考慮備份的頻率和方式。
3. 選擇合適的備份工具,如Mysqldump、Xtrabackup等,也可以通過第三方工具進行備份。
4. 確保備份數(shù)據(jù)的存儲位置和方式,以免在備份過程中出現(xiàn)數(shù)據(jù)丟失和泄露的情況。
二、使用Mysqldump備份
Mysqldump是Mysql自帶的備份工具,具有簡單、快速等特點。下面我們就來看一下如何使用Mysqldump進行備份。
1. 打開命令行窗口,進入mysqldump的安裝目錄。
2. 輸入以下命令備份數(shù)據(jù)庫:
mysqldump -u root -p –all-databases > bkp.sql
此命令表示備份所有的數(shù)據(jù)庫,并將備份文件bck.sql保存至當前目錄下。
3. 輸入密碼,等待備份完成。
3.1 備份指定數(shù)據(jù)庫
如果只需要備份指定數(shù)據(jù)庫,可以使用以下命令:
mysqldump -u root -p yourdata > yourdata.sql
此命令表示備份名為yourdata的數(shù)據(jù)庫,并將備份文件yourdata.sql保存至當前目錄下。
4. 備份表結(jié)構(gòu)和數(shù)據(jù)
使用以下命令可以備份表結(jié)構(gòu)和數(shù)據(jù):
mysqldump -u root -p databasename tablename > tablename.sql
此命令表示備份databasename數(shù)據(jù)庫中的tablename表,將備份文件保存至當前目錄下。
5. 備份指定時間段的數(shù)據(jù)
我們可以根據(jù)需求備份某個時間段內(nèi)的數(shù)據(jù)庫數(shù)據(jù),可以使用以下命令:
mysqldump -u root -p –databases databasename –where=”update_time>=’2023-01-01 00:00:00′ and update_time databasename.sql
6. 自定義備份名稱
備份文件默認為bcp.sql,但我們也可以指定備份文件名,以及備份文件存放路徑:
mysqldump -u root -p databasename > /data/backup/databasename.sql
此命令表示備份databasename數(shù)據(jù)庫,并將備份文件保存至/data/backup/databasename.sql路徑下。
三、使用Xtrabackup備份
Xtrabackup是Percona公司開發(fā)的備份工具,可以進行實時備份和恢復,具有備份速度快、備份數(shù)據(jù)準確等特點。下面我們就來看一下如何使用Xtrabackup進行備份。
1. 下載Xtrabackup并安裝
可以通過官網(wǎng)下載并安裝Xtrabackup。
2. 運行Xtrabackup
運行以下命令備份數(shù)據(jù)庫:
innobackupex –user=root –password= /data/backup
此命令表示備份數(shù)據(jù)庫,備份文件存放于/data/backup下,其中替換為你的數(shù)據(jù)庫密碼。如果需要備份指定數(shù)據(jù)庫,可以在命令末尾加上數(shù)據(jù)庫名字,如:
innobackupex –user=root –password= /data/backup databasename
此命令表示備份名為databasename的數(shù)據(jù)庫。
3. 恢復備份
可以通過以下命令恢復備份:
cd /data/backup
innobackupex –apply-log –redo-only /data/backup
innobackupex –copy-back /data/backup
此命令表示將備份文件恢復至/data/backup目錄下。
四、
成都網(wǎng)站建設公司-創(chuàng)新互聯(lián),建站經(jīng)驗豐富以策略為先導10多年以來專注數(shù)字化網(wǎng)站建設,提供企業(yè)網(wǎng)站建設,高端網(wǎng)站設計,響應式網(wǎng)站制作,設計師量身打造品牌風格,熱線:028-86922220mysql數(shù)據(jù)庫備份
dump
在數(shù)據(jù)庫表丟失或損壞的情況下,備份你的數(shù)據(jù)庫是很重要的。如果發(fā)生系統(tǒng)崩潰,你肯定想能夠?qū)⒛愕谋肀M可能丟失最少的數(shù)據(jù)恢復到崩潰發(fā)生時的狀態(tài)。有時,正是MySQL管理員造成破壞。管理員已經(jīng)知道表以破壞,用諸如vi或Emacs等編輯器試圖直接編輯它們,這對表絕對不是件好事!
備份數(shù)據(jù)庫兩個主要方法是用mysqldump程序或直接拷貝數(shù)據(jù)庫文件(如用cp、cpio或tar等)。每種方法都有其優(yōu)缺點:
? mysqldump與MySQL服務器協(xié)同操作。直接拷貝方法在服務器外部進行,并且你必須采取措施保證沒有客戶正在修改你將拷貝的表。如果你想用文件系統(tǒng)備份來備份數(shù)據(jù)庫,也會發(fā)生同樣的問題:如果數(shù)據(jù)庫表在文件系統(tǒng)備份過程中被修改,進入備份的表文件主語不一致的狀態(tài),而對以后的恢復表將失去意義。文件系統(tǒng)備份與直接拷貝文件的區(qū)別是對后者你完全控制了備份過程,這樣你能采取措施確保服務器讓表不受干擾。
? mysqldump比直接拷貝要慢些。
? mysqldump生成能夠移植到其它機器的文本文件,甚至那些有不同硬件結(jié)構(gòu)的機器上。直接拷貝文件不能移植到其它機器上,除非你正在拷貝的表使用MyISAM存儲格式。ISAM表只能在相似的硬件結(jié)構(gòu)的機器上拷貝。在MySQL 3.23中引入的MyISAM表存儲格式解決了該問題,因為該格式是機器無關的,所以直接拷貝文件可以移植到具有不同硬件結(jié)構(gòu)的機器上。只要滿足兩個條件:另一臺機器必須也運行MySQL 3.23或以后版本,而且文件必須以MyISAM格式表示,而不是ISAM格式。
不管你使用哪種備份方法,如果你需要恢復數(shù)據(jù)庫,有幾個原則應該遵守,以確保更好的結(jié)果:
? 定期實施備份。建立一個計劃并嚴格遵守。
? 讓服務器執(zhí)行更新日志。當你在崩潰后需要恢復數(shù)據(jù)時,更新日志將幫助你。在你用備份文件恢復數(shù)據(jù)到備份時的狀態(tài)后,你可以通過運行更新日志中的查詢再次運用備份后面的修改,這將數(shù)據(jù)庫中的表恢復到崩潰發(fā)生時的狀態(tài)。
? 以文件系統(tǒng)備份的術(shù)語講,數(shù)據(jù)做物庫備份文件代表完全傾倒(full dump),而更新日志代表漸進傾倒(incremental dump)。
? 使用一種統(tǒng)一的和易理解的備份文件命名機制。象backup1、buckup2等不是特別有意義。當實施你的恢復時,你將浪費時間找出文件里是什么東西。你可能發(fā)覺用數(shù)據(jù)庫名和日期純核液構(gòu)成備份文件名會很有用。例如:
? %mysqldump samp_db >/usr/archives/mysql/samp_db.
? %mysqldump menagerie >/usr/archives/mysql/menagerie.
? 你可能想在生成備份后壓縮它們。備份一般都很大!你也需要讓你的備份文件有過期期限以避免它們填滿你的磁盤,就象你讓你的日志文件過期那樣。
? 用文件系統(tǒng)備份備份你的備份文件。如果遇上了一個徹底崩潰,不僅清除了你的數(shù)據(jù)目錄,也清除了包含你的數(shù)據(jù)庫備份的磁盤驅(qū)動器,你將真正遇上了麻煩。也要備份你的更新日志。
? 將你的備份文件放在不同于用于你的數(shù)據(jù)庫的文件系統(tǒng)上。這將降低由于生成備份而填滿包含數(shù)據(jù)目錄的文件系統(tǒng)的可能性。
用于創(chuàng)建備份的技術(shù)同樣對拷貝數(shù)據(jù)庫到另一臺機器有用。氏裂最常見地,一個數(shù)據(jù)庫被轉(zhuǎn)移到了運行在另一臺主機上的服務器,但是你也可以將數(shù)據(jù)轉(zhuǎn)移到同一臺主機上的另一個服務器。
1 使用mysqldump備份和拷貝數(shù)據(jù)庫
當你使用mysqldumo程序產(chǎn)生數(shù)據(jù)庫備份文件時,缺省地,文件內(nèi)容包含創(chuàng)建正在傾倒的表的CREATE語句和包含表中行數(shù)據(jù)的INSERT語句。換句話說,mysqldump產(chǎn)生的輸出可在以后用作mysql的輸入來重建數(shù)據(jù)庫。
你可以將整個數(shù)據(jù)庫傾倒進一個單獨的文本文件中,如下:
%mysqldump samp_db >/usr/archives/mysql/samp_db.
輸出文件的開頭看起來象這樣:
# MySQL Dump 6.0# # Host: localhost Database: samp_db## Server version 3.23.2-alpha-log## Table structure for table ‘a(chǎn)bsence’#CREATE TABLE absence( student_id int(10) unsigned DEFAULT ‘0’ NOT NULL, date date DEFAULT ” NOT NULL, PRIMARY KEY (student_id,date));## Dumping data for table ‘a(chǎn)bsence’#INSERT INTO absence VALUES (3,”);INSERT INTO absence VALUES (5,”);INSERT INTO absence VALUES (10,”);……
文件剩下的部分有更多的INSERT和CREATE TABLE語句組成。
如果你想壓縮備份,使用類似如下的命令:
%mysqldump samp_db | gzip >/usr/archives/mysql/samp_db..gz
如果你要一個龐大的數(shù)據(jù)庫,輸出文件也將很龐大,可能難于管理。如果你愿意,你可以在mysqldump命令行的數(shù)據(jù)庫名后列出單獨的表名來傾到它們的內(nèi)容,這將傾倒文件分成較小、更易于管理的文件。下例顯示如何將samp_db數(shù)據(jù)庫的一些表傾到進分開的文件中:
%mysqldump samp_db student score event absence >grapbook.sql
%mysqldump samp_db member president >hist-league.sql
如果你生成準備用于定期刷新另一個數(shù)據(jù)庫內(nèi)容的備份文件,你可能想用–add-drop-table選項。這告訴服務器將DROP TABLE IF EXISTS語句寫入備份文件,然后,當你取出備份文件并把它裝載進第二個數(shù)據(jù)庫時,如果表已經(jīng)存在,你不會得到一個錯誤。
如果你倒出一個數(shù)據(jù)庫以便能把數(shù)據(jù)庫轉(zhuǎn)移到另一個服務器,你甚至不必創(chuàng)建備份文件。要保證數(shù)據(jù)庫存在于另一臺主機,然后用管道傾倒數(shù)據(jù)庫,這樣mysql能直接讀取mysqldump的輸出。例如:你想從主機pit-viper.snake.net拷貝數(shù)據(jù)庫samp_db到boa.snake.net,可以這樣很容易做到:
%mysqladmin -h boa.snake.net create samp_db
%mysqldump samp_db | mysql -h boa.snake.net samp_db
以后,如果你想再次刷新boa.snake.net上的數(shù)據(jù)庫,跳過mysqladmin命令,但要對mysqldump加上–add-drop-table以避免的得到表已存在的錯誤:
%mysqldump –add-drop-table samp_db | mysql -h boa.snake.net samp_db
mysqldump其它有用的選項包括:
? –flush-logs和–lock-tables組合將對你的數(shù)據(jù)庫檢查點有幫助。–lock-tables鎖定你正在傾倒的所有表,而–flush-logs關閉并重新打開更新日志文件,新的更新日志將只包括從備份點起的修改數(shù)據(jù)庫的查詢。這將設置你的更新日志檢查點位備份時間。(然而如果你有需要執(zhí)行個更新的客戶,鎖定所有表對備份期間的客戶訪問不是件好事。)
? 如果你使用–flush-logs設置檢查點到備份時,有可能更好是傾倒整個數(shù)據(jù)庫。如果你傾倒單獨的文件,較難將更新日志檢查點與備份文件同步。在恢復期間,你通常按數(shù)據(jù)庫為基礎提取更新日志內(nèi)容,對單個表沒有提取更新的選擇,所以你必須自己提取它們。
? 缺省地,mysqldump在寫入前將一個表的整個內(nèi)容讀進內(nèi)存。這通常確實不必要,并且實際上如果你有一個大表,幾乎是失敗的。你可用–quick選項告訴mysqldump只要它檢索出一行就寫出每一行。為了進一步優(yōu)化傾倒過程,使用–opt而不是–quick。–opt選項打開其它選項,加速數(shù)據(jù)的傾倒和把它們讀回。
? 用–opt實施備份可能是最常用的方法,因為備份速度上的優(yōu)勢。然而,要警告你,–opt選項確實有代價,–opt優(yōu)化的是你的備份過程,不是其他客戶對數(shù)據(jù)庫的訪問。–opt選項通過一次鎖定所有表阻止任何人更新你正在傾倒的任何表。你可在一般數(shù)據(jù)庫訪問上很容易看到其效果。當你的數(shù)據(jù)庫一般非常頻繁地使用,只是一天一次地調(diào)節(jié)備份。
? 一個具有–opt的相反效果的選項是–dedayed。該選項使得mysqldump寫出INSERT DELAYED語句而不是INSERT語句。如果你將數(shù)據(jù)文件裝入另一個數(shù)據(jù)庫并且你想是這個操作對可能出現(xiàn)在該數(shù)據(jù)庫中的查詢的影響最小,–delayed對此很有幫助。
? –compress選項在你拷貝數(shù)據(jù)庫到另一臺機器上時很有幫助,因為它減少網(wǎng)絡傳輸字節(jié)的數(shù)量。下面有一個例子,注意到–compress對與遠端主機上的服務器通信的程序才給出,而不是對與本地主機連接的程序:
%mysqldump –opt samp_db | mysql –compress -h boa.snake.net samp_db
? mysqldump有很多選項,詳見《MySQL參考手冊》。
2 使用直接拷貝數(shù)據(jù)庫的備份和拷貝方法
另一種不涉及mysqldump備份數(shù)據(jù)庫和表的方式是直接拷貝數(shù)據(jù)庫表文件。典型地,這用諸如cp、tar或cpio實用程序。本文的例子使用cp。
當你使用一種直接備份方法時,你必須保證表不在被使用。如果服務器在你則正在拷貝一個表時改變它,拷貝就失去意義。
保證你的拷貝完整性的更好方法是關閉服務器,拷貝文件,然后重啟服務器。如果你不想關閉服務器,要在執(zhí)行表檢查的同時鎖定服務器。如果服務器在運行,相同的制約也適用于拷貝文件,而且你應該使用相同的鎖定協(xié)議讓服務器“安靜下來”。
假設服務器關閉或你已經(jīng)鎖定了你想拷貝的表,下列顯示如何將整個samp_db數(shù)據(jù)庫備份到一個備份目錄(DATADIR表示服務器的數(shù)據(jù)目錄):
%cdDATADIR%cp -r samp_db /usr/archive/mysql
單個表可以如下備份:
%cdDATADIR/samp_db%cp member.* /usr/archive/mysql/samp_db%cp score.* /usr/archive/mysql/samp_db ….
當你完成了備份時,你可以重啟服務器(如果關閉了它)或釋放加在表上的鎖定(如果你讓服務器運行)。
要用直接拷貝文件把一個數(shù)據(jù)庫從一臺機器拷貝到另一臺機器上,只是將文件拷貝到另一臺服務器主機的適當數(shù)據(jù)目錄下即可。要確保文件是MyIA格式或兩臺機器有相同的硬件結(jié)構(gòu),否則你的數(shù)據(jù)庫在另一臺主機上有奇怪的內(nèi)容。你也應該保證在另一臺機器上的服務器在你正在安裝數(shù)據(jù)庫表時不訪問它們。
3 復制數(shù)據(jù)庫(Replicating Database)
復制(Replication)類似于拷貝數(shù)據(jù)庫到另一臺服務器上,但它的確切含義是實時地保證兩個數(shù)據(jù)庫的完全同步。這個功能將在3.23版中出現(xiàn),而且還不很成熟,因此本文不作詳細介紹。
4 用備份恢復數(shù)據(jù)
數(shù)據(jù)庫損壞的發(fā)生有很多原因,程度也不同。如果你走運,你可能僅損壞一兩個表(如掉電),如果你倒霉,你可能必須替換整個數(shù)據(jù)目錄(如磁盤損壞)。在某些情況下也需要恢復,比如用戶錯誤地刪除了數(shù)據(jù)庫或表。不管這些倒霉事件的原因,你將需要實施某種恢復。
如果表損壞但沒丟失,嘗試用myisamchk或isamchk修復它們,如果這樣的損壞可有修復程序修復,你可能根本不需要使用備份文件。關于表修復的過程,見《數(shù)據(jù)庫維護與修復》。
恢復過程涉及兩種信息源:你的備份文件和個更新日志。備份文件將表恢復到實施備份時的狀態(tài),然而一般表在備份與發(fā)生問題之間的時間內(nèi)已經(jīng)被修改,更新日志包含了用于進行這些修改的查詢。你可以使用日志文件作為mysql的輸入來重復查詢。這已正是為什么要啟用更新日志的原因。
恢復過程視你必須恢復的信息多少而不同。實際上,恢復整個數(shù)據(jù)庫比單個表跟容易,因為對于數(shù)據(jù)庫運用更新日志比單個表容易。
4.1 恢復整個數(shù)據(jù)庫
首先,如果你想恢復的數(shù)據(jù)庫是包含授權(quán)表的mysql數(shù)據(jù)庫,你需要用–skip-grant-table選項運行服務器。否則,它會抱怨不能找到授權(quán)表。在你已經(jīng)恢復表后,執(zhí)行mysqladmin flush-privileges告訴服務器裝載授權(quán)標并使用它們。
? 將數(shù)據(jù)庫目錄內(nèi)容拷貝到其它某個地方,如果你在以后需要它們。
? 用最新的備份文件重裝數(shù)據(jù)庫。如果你用mysqldump產(chǎn)生的文件,將它作為mysql的輸入。如果你用直接從數(shù)據(jù)庫拷貝來的文件,將它們直接拷回數(shù)據(jù)庫目錄,然而,此時你需要在拷貝文件之前關閉數(shù)據(jù)庫,然后重啟它。
使用更新日志重復做備份以后的修改數(shù)據(jù)庫表的查詢。對于任何可適用的更新日志,將它們作為mysql的輸入。指定–one-database選項使得mysql只執(zhí)行你有興趣恢復的數(shù)據(jù)庫的查詢。如果你知道你需要運用所有更新日志文件,你可以在包含日志的目錄下使用這條命令:
% ls -t -r -1 update.* | xargs cat | mysql –one-databasedb_name
ls命令生成更新日志文件的一個單列列表,根據(jù)服務器產(chǎn)生它們的次序排序(主意:如果你修改任何一個文件,你將改變排序次序,這導致更新日志一錯誤的次序被運用。)
很可能你會是運用某幾個更新日志。例如,自從你備份以來產(chǎn)生的更新日志被命名為update.392、update.393等等,你可以這樣重新運行:
%mysql –one-database db_name query(“SHOW CREATE TABLE $table”);
$create = $db->fetch_row($createtable);
$tabledump .= $create.”;\n\n”;
return $tabledump;
}
/****** 備份數(shù)據(jù)庫結(jié)構(gòu)和所有數(shù)據(jù) ******/
/*
函數(shù)名稱:data2sql()
函數(shù)功能:把表的結(jié)構(gòu)和數(shù)據(jù)轉(zhuǎn)換成為SQL
函數(shù)參數(shù):$table: 要進行提取的表名
返 回 值:返回提取后的結(jié)果,SQL
函數(shù)作者:heiyeluren
*/
function data2sql($table)
{
global $db;
$tabledump = “DROP TABLE IF EXISTS $table;\n”;
$createtable = $db->query(“SHOW CREATE TABLE $table”);
$create = $db->fetch_row($createtable);
$tabledump .= $create.”;\n\n”;
$rows = $db->query(“SELECT * FROM $table”);
$numfields = $db->num_fields($rows);
$numrows = $db->num_rows($rows);
while ($row = $db->fetch_row($rows))
{
$comma = “”;
$tabledump .= “INSERT INTO $table VALUES(“;
for($i = 0; $i Host\n”.
“# 數(shù)據(jù)庫:$db->Database\n”.
“# 備份編號: “. create_sess_id() .”\n”. // 這里有一個生成session id的函數(shù)
“# 備份時間: “.time_to_date(”,6).”\n”. // 這里就是獲取當前時間的函數(shù)
“#\n”.
“# 管理員:$admin ($admin_email)\n”. // 管理員的用戶名和郵箱地址
“# $copyright\n”.
“#-\n\n\n”.
$sqldump;
// 保存到本地
if($saveto == “l(fā)ocal”)
{
ob_end_clean();
header(‘Content-Encoding: none’);
header(‘Content-Type: ‘.(strpos($HTTP_SERVER_VARS, ‘MSIE’) ? ‘a(chǎn)pplication/octetstream’ : ‘a(chǎn)pplication/octet-stream’));
header(‘Content-Disposition: ‘.(strpos($HTTP_SERVER_VARS, ‘MSIE’) ? ‘inline; ‘ : ‘a(chǎn)ttachment; ‘).’filename=”‘.$local_filename);
header(‘Content-Length: ‘.strlen($sqldump));
header(‘Pragma: no-cache’);
header(‘Expires: 0’);
echo $sqldump;
}
// 保存到本地結(jié)束
// 保存在服務器
if($saveto == “server”)
{
if($filename != “”)
{
@$fp = fopen($filename, “w+”);
if ($fp)
{
@flock($fp, 3);
if(@!fwrite($fp, $sqldump))
{
@fclose($fp);
exit_msg(“數(shù)據(jù)文件無法保存到服務器,請檢查目錄屬性你是否有寫的權(quán)限?!?;
}
else
{
exit_msg(“數(shù)據(jù)成功備份至服務器 $filename 中?!?;
}
}
else
{
exit_msg(“無法打開你指定的目錄”. $filename .”,請確定該目錄是否存在,或者是否有相應權(quán)限”);
}
}
else
{
exit_msg(“您沒有輸入備份文件名,請返回修改?!?;
}
}
// 保存到服務器結(jié)束
}
else
{
exit_msg(“數(shù)據(jù)表沒有任何內(nèi)容”);
}
/* 備份數(shù)據(jù)庫結(jié)束 */
數(shù)據(jù)庫陪沒斗備份不蘆磨是一兩句編程語句就可以搞定的。。。
建議你還是看看mysql的幫助手冊吧,里面察余很詳細啊。
mysql 數(shù)據(jù)備份
使用直接拷貝的方法備份時,尤其要注意表沒有被使用,應該對表進行讀鎖定或停止MySQL服務。備份一個表,需要三個文件:
對于MyISAM表:
tbl_name.frm 表的描述文件
tbl_name.MYD 表的數(shù)據(jù)文件
tbl_name.MYI 表的索引文件
對于ISAM表:
tbl_name.frm 表的描述文件
tbl_name.ISD 表的數(shù)據(jù)文件
tbl_name.I 表的索引文件
對于MyISAM表,你可以從運行在不同硬件系統(tǒng)的服務器之間復制文件,例如,SUN服務器和INTEL PC機之間。
當 然,這只是備份一個數(shù)據(jù)表,在很多情況下我們需要備份完整的數(shù)據(jù)庫,這個時候同樣可以直接復制數(shù)據(jù)庫文件夾即可完成備份;若想再省點兒事,把整個數(shù)據(jù)庫目 錄“data”復制也可以,但是在還原數(shù)據(jù)時要注意,只能一個一個地還原數(shù)據(jù)庫,因為該目錄下有mysql運行時的配置文件,若正在運行的mysql配置 信息遭到還原破壞,整個mysql服務就會無法啟動。
SELECT INTO OUTFILE和MYSQLDUMP備份數(shù)據(jù):
MySQLdump工具可以把整個數(shù)據(jù)庫裝載到一個單獨的文本文件中。這個文件包含所有重建數(shù)據(jù)庫和表的SQL命令。這個命令取得所有的模式 (Schema)并且將其轉(zhuǎn)換成DDL語法(CREATE語句,即數(shù)據(jù)庫定義語句),還取得所有的數(shù)據(jù),并且為這些數(shù)據(jù)創(chuàng)建INSERT語句。所有的東西 都被包含到了一個文本文件中。這個文本文件可以用一個簡單的批處理和一個合適SQL語句導回到MySQL中。這個工具令人難以置信地簡單而快速。
有3種方式來調(diào)用mysqldump
選擇一個數(shù)據(jù)庫或一個數(shù)據(jù)表備份猛亂汪到一個文件:
/bin> mysqldump db_name > filename.txt
選擇多個數(shù)據(jù)庫備份到一個文件:
/bin> mysqldump –database DB1 > filename.txt
所有數(shù)據(jù)庫備份到一個文件:
/bin> mysqldump –all–database > filename.txt
Option選擇:
–help,-?
顯示幫助消息并退出。
–add-drop-table
這個選項將會在每一個表的前面加上DROP TABLE IF EXISTS語句,這樣可以保證導回MySQL數(shù)據(jù)庫的時候不會出錯,因為每次導回的時候,都會首先檢查表是否存在,存在就刪除
–add-locks
這個選項會在INSERT語句中捆上一個LOCK TABLE和UNLOCK TABLE語句。這就防止在這些記錄被再次導入數(shù)據(jù)庫時其他用戶對表進行的操作
-c or –complete_insert
這個選項使得MySQLdump命令給每一個產(chǎn)生INSERT語句加上陪信列(field)的名字。當把數(shù)據(jù)導出導另外一個數(shù)據(jù)庫時這個選項很有用。
–delayed-insert 在INSERT命令中加入DELAY選項
-F or –flush-logs 使用這個選項,在執(zhí)行導出之前將會刷新MySQL服務器的log.
-f or –force 使用這個選項,即使有錯誤發(fā)生,仍然繼續(xù)導出
–full 這個選項把附加信息也加到CREATE TABLE的語句中
-l or –lock-tables 使用這個選項,導出表的時候服務器將會給表加鎖。
-t or –no-create- info
這個選項使的MySQLdump命令不創(chuàng)建CREATE TABLE語句,這個選項在您只需要數(shù)據(jù)而不需要DDL(數(shù)據(jù)庫定義語句)時很方便。
-d or –no-data 這個選項使的MySQLdump命令不創(chuàng)建INSERT語枝仔句。
在您只需要DDL語句時,可以使用這個選項。
–opt 此選項將打開所有會提高文件導出速度和創(chuàng)造一個可以更快導入的文件的選項。
-q or –quick 這個選項使得MySQL不會把整個導出的內(nèi)容讀入內(nèi)存再執(zhí)行導出,而是在讀到的時候就寫入導文件中。
-T path or –tab = path
這 個選項將會將數(shù)據(jù)庫中每一個表創(chuàng)建兩個文件,一個文件包含DDL語句或者表創(chuàng)建語句,另一個文件包含數(shù)據(jù)。DDL文件被命名為 table_name.sql,數(shù)據(jù)文件被命名為table_name.txt。該參數(shù)的path為存放目錄,而且該目錄必須已經(jīng)存在。 如:/bin>mysqldump –uroot –p –tab=d:\\ mydata
-w “WHERE Clause” or –where = “Where clause ” 篩選將要放到導出文件的數(shù)據(jù)。
下面來看幾組mysqldump命令案例:
將數(shù)據(jù)庫mydata的內(nèi)容備份到mydata.txt文件中:
/bin>MySQLdump –uroot -p mydata > d:\\mydata.txt
將mydata數(shù)據(jù)庫中的users表的內(nèi)容備份到d:\\users.txt:
/bin>MySQLdump –uroot -p mydata users > d:\\users.txt
將mydata數(shù)據(jù)庫中的users表username值為“feihu”的數(shù)據(jù)備份到d:\\users.txt:
/bin>MySQLdump –uroot -p –where=”username=’feihu’” mydata users > d:\\users.txt;
將mydata數(shù)據(jù)庫以及內(nèi)部表的創(chuàng)建結(jié)構(gòu)(DDL)備份到d:\\users.txt:
/bin>MySQLdump –uroot –p -d mydata > d:\\mydata.txt
將mydata和mydata2數(shù)據(jù)庫同時備份到d:\\users.txt:
/bin> MySQLdump –uroot –p -d mydata mydata2 > d:\\mydata.txt
將所有數(shù)據(jù)備份到一個數(shù)據(jù)庫,命令怎么寫呢???
schema: 模式The set of statements, expressed in data definition language, that completely describe the structure of a data base.(一組以數(shù)據(jù)定義語言來表達的語句集,該語句集完整地描述了數(shù)據(jù)庫的結(jié)構(gòu)。)
當需要將還原備份數(shù)據(jù)時,使用如下語句:
/bin>mysql –uroot –p mydata source d:\mydata.txt;
LOAD DATA INFILE和MYSQLIMPORT恢復數(shù)據(jù)
關于load data infile語句的使用已經(jīng)在別一節(jié)講述過了,詳細請參考“使用LOAD DATA和INSERT語句導入Mysql數(shù)據(jù)”。如果你僅僅恢復數(shù)據(jù), mysqlimport完全是與LOAD DATA 語句對應的,讀者可以任意選擇一個去實現(xiàn)。
MySQLimport位于MySQL/bin目錄中,是MySQL的一個載入(或者說導入)數(shù)據(jù)的一個非常有效的工具。這是一個命令行工具。有兩個參數(shù) 以及大量的選項可供選擇。這個工具把一個文本文件(textfile)導入到你指定的數(shù)據(jù)庫和表中。比方說我們要從文件users.txt中把數(shù)據(jù)導入到 數(shù)據(jù)庫mydata中的表users中:
/bin>mysqlimport –uroot –p mydata d:\users.txt
注意:這里users.txt是我們要導入數(shù)據(jù)的文本文件,而mydata是我們要操作的數(shù)據(jù)庫,數(shù)據(jù)庫中的表名是users,這里文本文件的數(shù)據(jù)格式必須與users表中的記錄格式一致,否則MySQLimport命令將會出錯。
其中表的名字是導入文件的之一個句號(.)前面文件字符串,另外一個例子:MySQLimport mydata users.2023.10.txt; 那么我們將把文件中的內(nèi)容導入到數(shù)據(jù)庫mydata 中的users表中。
上面的例子中,都只用到兩個參數(shù),并沒有用到更多的選項,下面介紹MySQLimport的選項
-d or –delete 新數(shù)據(jù)導入數(shù)據(jù)表中之前刪除數(shù)據(jù)數(shù)據(jù)表中的所有信息
-f or –force 不管是否遇到錯誤,MySQLimport將強制繼續(xù)插入數(shù)據(jù)
-i or –ignore MySQLimport跳過或者忽略那些有相同唯一關鍵字的行, 導入文件中的數(shù)據(jù)將被忽略。
-l or -lock-tables 數(shù)據(jù)入之前鎖住表,這樣就防止了,你在更新數(shù)據(jù)庫時,用戶的查詢和更新受到影響。
-r or -replace 這個選項與-i選項的作用相反;此選項將替代表中有相同唯一關鍵字的記錄。
–fields-enclosed-by= char 指定文本文件中數(shù)據(jù)的記錄時以什么括起的, 很多情況下數(shù)據(jù)以雙引號括起。 默認的情況下數(shù)據(jù)是沒有被字符括起的。
–fields-terminated-by=char 指定各個數(shù)據(jù)的值之間的分隔符,在句號分隔的文件中,分隔符是句號。您可以用此選項指定數(shù)據(jù)之間的分隔符。默認的分隔符是跳格符(Tab)
–lines-terminated-by=str 此選項指定文本文件中行與行之間數(shù)據(jù)的分隔字符串或者字符。 默認的情況下MySQLimport以newline為行分隔符。您可以選擇用一個字符串來替代一個單個的字符:一個新行或者一個回車。
MySQLimport命令常用的選項還有-v 顯示版本(version),-p 提示輸入密碼(password)等。
如果,我們要導入一個文件(Orders.txt)中行的記錄格式是這樣的:
“1”, “ORD89876”, “1 Dozen Roses”, “”
我們的任務是要把這個文件里面的數(shù)據(jù)導入到數(shù)據(jù)庫mydata中的表格Orders中,我們使用這個命令:
/Bin>MySQLimport -uroot–prl –fields-enclosed-by=” –fields-terminated-by=, mydata Orders.txt
比如我們要插入一些數(shù)據(jù),使用包含下面文本的文件(文件名為New_Data.sql,當然我們也可以取名為New_Data.txt及任何其他的合法名字,并不一定要以后綴sql結(jié)尾):
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”);
注意上面的這些句子的語法都必須是正確的,并且每個句子以分號結(jié)束。上面的USE命令選擇數(shù)據(jù)庫,INSERT命令插入數(shù)據(jù)。
然后運行下面的命令:
/bin>mysql –uroot –p mydata
接著按提示輸入密碼,如果上面的文件中的語句沒有錯誤,那么這些數(shù)據(jù)就被導入到了數(shù)據(jù)庫中。
方法一:如果使用的是虛擬主機,可以用使用phpmyadmin來備份數(shù)據(jù)庫。
1)登陸phpmyadmin。登陸后左邊會出現(xiàn)數(shù)據(jù)庫列表,單擊要備份的數(shù)據(jù)庫,如圖。
2)在彈出的頁面中,右側(cè)上部單擊“導出”按鈕,一般保持默認選項,最下面“另存為文件”,選擇“ZIP壓縮”,最后單擊執(zhí)行按鈕,如圖
3)彈出保存文件后,保存文件即可,如圖。
方法二:如果數(shù)據(jù)庫可以使用外部鏈接??梢允褂肧QLyogEnt來備份。
1)打開SQLyogEnt,并登陸mysql服務器,前面的文章已經(jīng)講過,如果還不明白的可以看這里《MySql管理利器SQLyogEnt初識(php建立數(shù)據(jù)庫)》。
2)在左邊數(shù)據(jù)庫菜單選擇要備份的書庫,然后右擊它。在彈出的菜談昌陵單中,選擇Backup Database as sql dump,如圖。
3)在彈出的對話框中,“export to file”即時備份數(shù)據(jù)迅型庫文件含戚要保存的位置,其他保持默認選項,單擊“Export”按鈕,開始備份。如圖。
如果數(shù)據(jù)庫是存放在和程序一臺服務器的時候,及數(shù)據(jù)庫地址為localhost的時候,備份mysql數(shù)據(jù)庫一般采用之一種方法,如果mysql數(shù)據(jù)庫可以外部登錄,就可以使用第二種方式。如果是獨立服務器,可以直接復制數(shù)據(jù)庫源文件即可,這里就不詳細講解了。
方法:
方法一:如果使用的是虛擬主機,可以用使用phpmyadmin來備份數(shù)據(jù)庫。
1)登陸phpmyadmin。登陸后左邊會出現(xiàn)數(shù)據(jù)庫列表,單擊要備份的數(shù)據(jù)庫。
2)在彈出的頁面中,右側(cè)上部單擊“導出”按鈕,一般保持默認選桐辯項,最下面“另存斗輪耐為文件”,選擇“ZIP壓縮”,最后單擊執(zhí)行按鈕。
3)彈出保存文件后,保存文件即可。
方法二:如果數(shù)據(jù)庫可以使用外部鏈接。可以使用SQLyogEnt來備份。
1)打開SQLyogEnt,并登陸mysql服務器。
2)在左邊數(shù)據(jù)庫菜單選擇要備份的書庫,然后右擊它。在彈出的菜單中,選擇Backup Database as sql dump。
3)在彈出的對話框中,“export to file”即時備份數(shù)據(jù)庫文件要保存的位置,其他保持默認選項,單擊“Export”按鈕,開始備空春份。
注意事項
mysql數(shù)據(jù)自動備份,大家一般怎么弄
打開navicat客戶端,連上mysql后,雙擊左邊你想要備份的數(shù)據(jù)庫。點擊“計劃”基租帆,再點擊“新建批處理作業(yè)”。
雙擊上面的可用任務,它就會到下面的列表里去,代表你選擇了這個任務。
點擊保存,彈出個命名對話框,給這個任務取個名字,點擊“確定”。
點擊“設置”計劃任務。
彈出的對話框,選擇“計劃”,再點擊“新建”。
這里設置為從2023年1月24號起每天早上九點備份該數(shù)據(jù)庫。如果你想提高備份頻率、或者設置備份截止日期,請點擊“高級”。
高級選項可以把備份設置的更精細,比如這里設置的是在24小時內(nèi)每隔2小時就備份一次。加上搏雹前面的基本設置,任務計劃就是:從2023年1月24號開始,每天九點,每隔2小時備份一次,每天的備份型山都持續(xù)24小時。
最后,輸入電腦密碼就大功告成。
依次單擊:開始–程序–Microsoft SQL Server–企業(yè)管理器–SQL Server組–管理–數(shù)據(jù)庫維護計劃
在右側(cè)空白處右鍵單擊,新建維護計劃–勾選要備份的數(shù)據(jù)庫–下一步
指定數(shù)據(jù)庫備份計劃–調(diào)度–單擊”更改”–設置備亮瞎份的時間,備份周期–下一步
每日頻率即是每天什么時間開始進行備份
發(fā)生頻率即是執(zhí)行的周期
指定備份磁盤目錄–修改”使用此目錄”的路徑作為備份數(shù)據(jù)庫的存放路徑.勾選刪除早于此時間的文件,我這里選擇一信唯周,即是數(shù)據(jù)庫備份文件把一周前的進行刪除
給此任務計劃填寫一個名字:back 2單擊”完成”,就可以在數(shù)據(jù)庫維護計劃中看到敬坦空剛才新建的計劃.
注意事項
一定要開啟sql server agent服務
mysql刪除整個數(shù)據(jù)庫備份的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關于mysql刪除整個數(shù)據(jù)庫備份,快速備份Mysql數(shù)據(jù)庫,保證數(shù)據(jù)安全,mysql數(shù)據(jù)庫備份,mysql 數(shù)據(jù)備份,mysql數(shù)據(jù)自動備份,大家一般怎么弄的信息別忘了在本站進行查找喔。
成都創(chuàng)新互聯(lián)科技公司主營:網(wǎng)站設計、網(wǎng)站建設、小程序制作、成都軟件開發(fā)、網(wǎng)頁設計、微信開發(fā)、成都小程序開發(fā)、網(wǎng)站制作、網(wǎng)站開發(fā)等業(yè)務,是專業(yè)的成都做小程序公司、成都網(wǎng)站建設公司、成都做網(wǎng)站的公司。創(chuàng)新互聯(lián)公司集小程序制作創(chuàng)意,網(wǎng)站制作策劃,畫冊、網(wǎng)頁、VI設計,網(wǎng)站、軟件、微信、小程序開發(fā)于一體。
網(wǎng)頁名稱:快速備份Mysql數(shù)據(jù)庫,保證數(shù)據(jù)安全(mysql刪除整個數(shù)據(jù)庫備份)
本文地址:http://m.5511xx.com/article/cosepco.html


咨詢
建站咨詢
