mysql學習筆記之十六(數據庫維護)
來源:程序員人生 發布時間:2015-06-01 08:28:41 閱讀次數:3030次
數據備份
數據損失緣由:存儲介質鼓掌,用戶操作毛病(誤刪除全部數據庫),服務器完全癱瘓
1、文件復制
需要先停止服務器服務,在停止之前,履行flushtables將所有數據寫入到數據文件,停止以后,將數據文件拷貝到其他地方
只合適MyISAM存儲引擎,對其他引擎其實不適合
2、mysqldump
mysqldump將包括數據的表結構和數據內容保存在相應的文本文件。具體履行時,首先檢查備份數據的表結構,在相應的文本文件中生成create語句。然后檢查數據內容,在相應的文本文件中生成insert into 語句。將來需要進行還原時,只需要履行文本文件中的create和insert into
3種情勢:
備份1個數據庫
mysqldump -u username -p dname table1,table2,... >backupname.sql
不指定table則會備份全部數據庫
">"兩邊要有空格。
例:
C:Users208⑴>mysqldump -u root -p123456 leetcode t_scores t_employee > D:AppServMySQLackupleetcode.sql
C:Users208⑴>mysqldump -u root -p123456 leetcode > D:AppServMySQLackupleetcode1.sql
mysqldump不能再mysql>后面輸入,直接在dos窗口履行
備份多個數據庫
mysqldump -u username -p --databases dbname1 dbname2 ... > backupname.sql
各個數據庫之間不能加逗號直接用空格隔開就行
備份所有數據庫
mysqldump -u username -p --all-databases > backupname.sql
all-databases是連在1起的。
數據還原
1、復制備份文件還原數據庫
這類方式必須保證兩個mysql數據庫的主版本號1致,由于只有主版本號相同時,才能保證兩個mysql數據庫的文件類型是相同的
僅對MyISAM類型的表有效
主版本號,MySQL 5.5.21和MySQL 5.5.01主版本號是相同的,第1個數字是主版本號
2、mysql
mysql -u username -p [dbname]<backup.sql
指定dbname,則還原該數據庫下的表,不指定,則還原備份文件中所有的數據庫
導出
通過數據庫中表的導入和導出操作,可以在mysql數據庫服務器與其他數據庫服務器間(sql server 、Oracle)輕松移動數據
導出:
將數據從mysql數據表里復制到文本文件
導入
將數據從文本文件加載到mysql數據庫表里
1、select...into outfile
select [filename] from table_name [where condition] into outfile 'filename' [option]
兩部份:普通查詢語句(查詢要導出的數據)和導出位置
option的取值:
fileds terminated by "string" 用來設置字段的分隔符字符串對象(string),默許為制表符
fields enclosed by "char" 用來設置括上字段值的字符符號,默許不使用任何符號
fields optionally enclosed by 'char' 用來括上char,varchar和text等字段的字符符號,默許不使用任何符號
fieles escaped by 'char' 設置轉義字符的字符符號,默許情況下使用""字符
lines starting by 'char' 設置每行開頭的字符符號,默許不使用任何符號
lines terminated by 'string' 設置每行結束的字符串符號,默許使用'
'
2、mysqldump
mysqldump -u root -p -T file_directory dbname tablename[option]
option的取值:
--fileds-terminated-by=string
--fileds-enclosed-by=char
--fileds-optionally-enclosed-by=char
--lines-terminated-by=string
導入
1、load data infile
load data[local] infile filename into table table_name[option]
local:指定在本地計算機中查找文本文件;
filename:用來指定文本文件的路徑和名稱;
tablename:用來指定表的名稱
oprion的取值
fileds terminated by "string" 用來設置字段的分隔符字符串對象(string),默許為制表符
fields enclosed by "char" 用來設置括上字段值的字符符號,默許不使用任何符號
fields optionally enclosed by 'char' 用來括上char,varchar和text等字段的字符符號,默許不使用任何符號
fieles escaped by 'char' 設置轉義字符的字符符號,默許情況下使用""字符
lines starting by 'char' 設置每行開頭的字符符號,默許不使用任何符號
lines terminated by 'string' 設置每行結束的字符串符號,默許使用'
'
ignore n lines 實現疏忽文件的前n行記錄
(字段列表) 實現根據字段列表中的字段溫柔序來加載記錄
set column=expr 用來設置列的轉換條件,即所指定的列經過相應的轉換后會被加載
2、mysqlimport
mysqlimport -u root -p [--local] dbname file_name[oiption]
option的取值:
--fileds-terminated-by=string
--fileds-enclosed-by=char
--fileds-optionally-enclosed-by=char
--lines-terminated-by=string
--ignrs-lines=n
注意:命令里沒有指定導入到哪一個表里。依照書上的意思,依照文件名尋覓表,然后導入進去。
數據庫遷移
1、相同版本間的mysql數據庫之間的遷移
mysqldump -h hostname -u root -password=password1 --all-databases
|mysql -h hostname2 -u root -password=password2
備份和還原同時操作。
對相同版本間的mysql數據庫之間的遷移,先使用mysqldump進行備份,然后使用mysql命令將備份文件還原到新的mysql數據庫。
2、不同版本間的mysql數據庫之間的遷移
低版本->高版本最是容易實現,由于高版本兼容低版本
對MyISAM的表
使用文件直接復制的方式或mysqlhotcopy
對InnoDB的表
使用mysqldump備份,使用mysql命令還原
3、不同數據庫間的遷移
mysql->sql server :通過MyODBC實現遷移
mysql->oracle:先通過mysqldump命令導出sql文件,手動修改
sql中的create語句
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈