本文內容: 複製文件法 利用mysqldump 利用select into outfile 其它(列舉但不介紹) 首發日期:2018-04-19 有些時候,在備份之前要先做flush tables ,確保所有數據都被寫入到磁碟中。 複製文件法: 對於myisam存儲引擎的資料庫,它的表結構(.frm... ...
本文內容:
- 複製文件法
- 利用mysqldump
- 利用select into outfile
- 其它(列舉但不介紹)
首發日期:2018-04-19
有些時候,在備份之前要先做flush tables ,確保所有數據都被寫入到磁碟中。
複製文件法:
- 對於myisam存儲引擎的資料庫,它的表結構(.frm)、數據(.myd)和索引(.myi)都單獨成文件,可以直接複製這三個文件到備份空間就可以成功備份了。
- 至於還原,只需要把三個文件複製回某個資料庫目錄下即可。
利用mysqldump:
適用情況:本質上是把表結構和數據還原成sql語句,所以可以備份表結構
備份:
- 單表備份:mysqldump -u用戶名 -p 資料庫名 表名 > 備份文件路徑
- 多表備份:mysqldump -u用戶名 -p 資料庫名 表名1 [其他表名] > 備份文件路徑
- 單個資料庫備份:mysqldump -u用戶名 -p 資料庫名 > 備份文件路徑
- 多個資料庫備份:mysqldump -u用戶名 -p --databases 資料庫名1 資料庫名2 [其他資料庫] > 備份文件路徑
- 備份所有資料庫:mysqldump -u用戶名 -p --all --databases > 備份文件路徑
還原:
- mysqldump -u用戶名 -p密碼 [資料庫名] < 備份文件路徑 【指定資料庫時代表只恢復指定資料庫的備份,不指定為恢復備份文件中所有內容】
補充:
- mysqldump還可以僅僅導出表數據【不過考慮到有select into outfile了,這裡就不介紹了】
利用select into outfile:
適用情況:單表數據備份,只能複製表數據,不能複製表結構。
備份:
- 語法:select *\欄位列表 from 數據源 into outfile 備份文件目標路徑 [fields 欄位處理] [lines 行處理]; 【備份文件目標路徑中文件必須不存在】
- fields 欄位處理是可選的,是每個欄位的數據如何存儲,有以下即可小選項
- enclosed by:以什麼字元來包裹數據,預設是空字元
- terminated by :以什麼字元作為欄位數據結尾,預設是\t,退格符
- escaped by: 特殊符號用什麼方法處理,預設是"\\"
- optionally enclosed by:以什麼字元來包裹數據類型為字元串的數據。
- 語法:
select * from class into outfile "d:\c1.txt" fields enclosed by '-'; select * from class into outfile "d:\c1.txt" fields enclosed by '-' optionally enclosed by "'";
- lines 行處理是可選的
- starting by :每行以什麼開始,預設是空字元串
- terminated by :每行記錄以什麼結束,預設是“\n”
- 語法:
select * from class into outfile "d:\c.txt" lines starting by 'start:'; select * from class into outfile "d:\c1.txt" lines starting by 'start:' terminated by ' \n';
註意:在5.7新增了一個特性,secure_file_priv,它會限制數據的導出,secure-file-priv參數是用來限制LOAD DATA, SELECT ... OUTFILE, and LOAD_FILE()傳到哪個指定目錄的。
還原:
- 語法:load date infile 備份文件路徑 into table 表名 [fields 欄位處理] [lines 行處理];【要把之前的欄位處理和行處理都寫下來,不然無法正確區分數據】
其它
- 備份:
- 使用mysql命令備份
- 利用mysqlhotcopy備份
- 利用backup table
- 還原:
- 使用mysqlimport導入數據文件。
- 使用restore還原
- 使用source還原