為了有效防止資料丟失,並將損失降到最低,應對資料庫伺服器做維護。資料庫維護,包括資料備份,還原,匯出和匯入操作。
1. mysql資料庫備份
所謂資料庫維護,主要包含備份資料,還原資料和資料庫遷移,對於mysql來說,還包括資料庫物件表的匯出和匯入。
1.1 通過複製資料檔案實現資料備份
造成資料損失的原因很多,主要包含如下幾個方面:
a. 儲存介質故障:儲存資料庫檔案的磁碟裝置損壞,使用者沒有資料庫備份導致資料徹底丟失。
b. 使用者的錯誤操作:如誤刪了某些重要資料,甚至整個資料庫。
c. 伺服器的徹底癱瘓,系統需要重建。
由於mysql伺服器中的資料檔案是基於磁碟的文字檔案,所以最簡單,最直接的備份操作就是資料庫檔案直接複製出來。該種方式對innodb儲存引擎的表不合適,只適合儲存引擎為myisam的表。
1.2 通過命令mysqldump實現資料備份
有三種形式:備份乙個資料庫,備份多個資料庫,備份所有資料庫。
1.2.1 備份乙個資料庫
mysqldump -u username -p dbname
table1 table2...tablen
> backupname.sql
示例如下:
備份資料庫company下的表t_dept;
mysqldump -u root -p company t_dept > d:\t_dept_back.sql
1.2.2 備份多個資料庫
mysqldump -u username -p --databases dbname1 dbname2 ... dbname3 > backupname.sql
示例如下:
備份資料庫company資料庫和companynew資料庫:
mysqldump -u root -p --databases company companynew> d:\database_company_back.sql
1.2.3 備份所有資料庫
mysqldump -u username -p --all > backupname.sql
示例如下:
備份所有資料庫:
mysqldump -u root -p --all > c:\all_database_back.sql
2. mysql資料還原
2.1 通過複製資料檔案實現資料還原
在通過複製資料檔案這種方式實現資料還原時,必須保證兩個mysql資料庫的主版本號一致,因為只有mysql資料庫主版本號一致時,才能保證兩個mysql資料庫的檔案型別是相同的。由於通過複製資料檔案實現資料備份時,對儲存引擎型別為i:nnodb的表不可用,僅對儲存引擎為myisam型別的表有效。因此通過複製資料檔案實現資料還原時,也只對儲存型別為myisam型別的表有效。
注意:mysql資料庫伺服器的版本號,第乙個數字表示主版本號。
2.2 通過命令mysql實現資料還原
mysqldump -u -username -p [dbname
]< backname.sql
示例如下:
還原資料庫company中的表t_dept:
mysqldump -u -root -p t_dept < t_dept_back.sql
3.mysql資料庫表匯出到文字檔案
3.1 執行select ... into outfile 實現匯出到文字檔案
select[file_name
]from table_name [
where condition
]into outfile '
file_name'[
option
]
示例如下:
實現將表t_dept裡的所有資料匯出到檔案t_dept裡:
select*from t_dept into outfile '
c:/t_dept_1.txt
' fields terminated by'\.
' optionally enclosed by'\"
' lines starting by
'\>
' terminated by
'\r\n
';
上述實現了將表t_dept裡的所有資料匯出到檔案t_dept_1.txt檔案裡,而且還設定了相應的顯示格式。
3.2 執行命令mysqldump實現匯出到文字檔案
mysqldump -u root -p password -t file_directory dbname table_name[option
];
示例如下:
將相應的資料匯出到文字檔案t_dept.txt裡:
mysqldump -u root -proot -t c:\company t_dept;
上述實現將表t_dept裡的所有資料匯出到檔案t_dept裡。
3.3 執行命令mysql實現匯出到文字檔案
mysql -u root -p password -e"select[file_name
]from table_name " dbname >
file_name;
示例如下:
mysql -u root -p root -e"select*from t_dept" company> c:/t_dept.txt;
4. mysql實現文字檔案匯入到資料庫表
4.1 執行"load data infile"命令實現文字檔案匯入到資料庫表
load data[local
] infile file_name
into
table table_name [
option
];
示例如下:
load data infile 'c:/t_dept.txt
'into
table t_dept fields terminated by '\.' optionally enclosed by '\"'terminated by '\r\n';
4.1 執行命令mysqlimport實現匯入文字檔案
mysqlimport -u root -p password[--local
] dbname file_name
[option
]
示例如下:
mysqlimport -u root -p root company c:t_dept.txt fields terminated by '\.' optionally enclosed by '\"' lines starting by '\>' terminated by '\r\n';
5. 資料庫遷移
5.1 相同版本的mysql資料庫之間的遷移
該種資料庫遷移最容易實現。
5.2 不同版本的mysql資料庫之間的遷移
兩種方式:低版本向高版本和高版本向低版本。
5.3 不同資料庫之間的遷移
由於不同資料庫之前的差異性,沒有普遍適用的辦法。
6. 資料效能優化
(備註):
備註1:
備份和還原的備註:如果所有的操作均是對遠端資料庫的操作,則在-u前面加-h ip即可。如需要操作192.168.1.101資料庫的資料,寫法是:
mysql -h 192.168.1.101-u root -p -e"select
*from t_dept" company> c:/t_dept.txt;
備註2:
使用命令mysqldump進行匯出資料到本地磁碟,執行該命令的時候不要進入mysql的控制台再使用,這樣會報outfiledisabled錯誤。而是直接使用mysql/bin目錄下的mysqldump.exe,通過windows的命令進入。
mysql資料庫備份和還原
備份mysql資料庫的命令 mysqldump hhostname uusername ppassword databasename backupfile.sql 備份mysql資料庫為帶刪除表的格式 備份mysql資料庫為帶刪除表的格式,能夠讓該備份覆蓋已有資料庫而不需要手動刪除原有資料庫。mys...
Mysql資料庫備份和還原
1 備份mysql資料庫的命令 mysqldump hhostname uusername ppassword databasename backupfile.sql 2 備份mysql資料庫為帶刪除表的格式 備份mysql資料庫為帶刪除表的格式,能夠讓該備份覆蓋已有資料庫而不需要手動刪除原有資料庫...
MySQL資料庫備份和還原
mysqldump hhostname uusername ppassword databasename backupfile date 0,10 sql 以當前時間命名 備份mysql資料庫為帶刪除表的格式,能夠讓該備份覆蓋已有資料庫而不需要手動刪除原有資料庫。mysqldump add drop...