mysql資料庫維護和效能提高

來源:互聯網
上載者:User

標籤:

為了有效防止資料丟失,並將損失降到最低,應對資料庫伺服器做維護。資料庫維護,包括資料備份,還原,匯出和匯入操作。

1. MySQLDatabase Backup

所謂資料庫維護,主要包含備份資料,還原資料和資料庫遷移,對於MySQL來說,還包括資料庫物件表的匯出和匯入。

1.1 通過複製資料檔案實現資料備份

造成資料損失的原因很多,主要包含如下幾個方面:

a. 儲存介質故障:儲存資料庫檔案的磁碟裝置損壞,使用者沒有Database Backup導致資料徹底丟失。

b. 使用者的錯誤操作:如誤刪了某些重要資料,甚至整個資料庫。

c. 伺服器的徹底癱瘓,系統需要重建。

由於MySQL伺服器中的資料檔案是基於磁碟的文字檔,所以最簡單,最直接的備份操作就是資料庫檔案直接複製出來。該種方式對InnoDB儲存引擎的表不合適,只適合儲存引擎為MyISAM的表。

1.2 通過命令mysqldump實現資料備份

有三種形式:備份一個資料庫,備份多個資料庫,備份所有資料庫。

1.2.1 備份一個資料庫

mysqldump -u username -p dbnametable1 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 -pPassword -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 -pPassword -e"SELECT [file_name] FROM table_name " dbname > file_name;

樣本如下:

mysql -u root -proot -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 -pPassword[--LOCAL] dbname file_name[OPTION]

樣本如下:

mysqlimport -u root -proot 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. 資料效能最佳化

mysql資料庫維護和效能提高

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.