數據的備份與恢復(在根目錄下去重啟備份數據,不過感覺說得不太清楚,有空再看看舊書;)
方法一:在備份前停掉MySQL服務(在資源管理器中),在操作系統基表備份數據庫
文件,備份MySQL安裝目錄下的data文件中的數據庫文件。重啟MySQL服務,
備份重啟以后生成的binlog。用mysqlbinlog恢復來自備份的binlog。
(在根目錄下備份)
說明:在此之前要對相關的數據表進行上鎖操作,即執行LOCK TABLES。
如:lock tables student read;//對某數據庫中的Student表先上一個讀鎖。
目的:當數據庫目錄中做文件被拷貝時,還允許其他線程繼續查詢表;當數據
恢復時,需要做一個寫鎖定,以免沖突。(上鎖,安全有序)
方法二:用SQL語句備份和恢復(用sql語句將庫中表的備份和恢復)
語法結構:select * into {OUTFILE | DUMPFILE} file_name FROM tb1_name
LOAD DATA [LOW_PRIORITY] [LOCAL] INFILE file_name.txt
[REPLACE | IGNORE] INTO TABLE tb1_name//這有個缺點,必須要表結構完整
例子1:備份course表,而且該表有一個primary key或unique索引。
step1:鎖定數據表,避免在備份過程中表被更新。mysql>lock tables course read;
step2:導出數據。 mysql>select * into outfile ‘course.bak’ from course;
step3:解鎖表。 unlock tables;
例子2:恢復course表的備份
step1:為表增加一個寫鎖定。 mysql>lock tables course write;
step2: 恢復數據。 mysql>load data infile ‘coursee.bak’
replace into table course;
mysql>load data low_priority infile ‘coursee.bank’
replace into table course;
//若指定了 low_priority,就不必上鎖
step3:解鎖表。 mysql>unlock tables;
方法三:使用mysqlimport恢復數據(shell上恢復數據)
shell>mysqlimport[options] db_name filename…
例子:恢復數據庫db1中的表tbl1的數據,保存數據的文件為tbl1.bak,在服務器主機上恢復過程如下:
shell>mysqlimport———lock—tables—replace db1 tbl1.bak
//在恢復數據之前對表鎖定或用low-priority選項:shell>mysqlimport——low——priority—replace db1.bak
方法四:用mysqldump備份數據(服務器、客戶機上備份數據庫)
mysqldump db_name //在服務器上備份數據
mysql -u root - pmypass db_name>db_name.sql // 在客戶機備份數據庫
多練習和總結,否則和復制過來的沒有區別;