【学习笔记】MySQL 数据备份与恢复
數據備份與恢復
數據備份
系統意外崩潰或者硬件的損壞都可以導致數據庫的丟失,因此MySQL管理員應該定期備份數據庫,使得在意外情況發生時,盡可能減少損失。
使用MySQLdump命令備份
MySQLdump命令執行時,可以將數據庫備份成一個文本文件,該文件中實際包含了多個CREATE和INSERT語句,使用這些語句可以重新創建表和插入數據。
語法:
mysqldump -u user -h host -p password dbname[tbname,[tbname...]] > filename.sql
user : 用戶名稱
host : 登錄用戶主機名稱
password : 登錄密碼
dbname : 數據庫名稱
tbname : 數據庫中需要備份的表名稱
> : 告訴MySQLdump將備份數據表的定義和數據寫入備份文件
filename.sql : 備份文件名稱
比如需要備份testdb數據庫中所有的表:
mysqldump -u root -p testdb>C:/backup/testdb20211225.sql
Tip : 需要保證備份路徑下的文件夾存在,否則將會找不到指定路徑而備份失敗。
比如需要備份testdb數據庫中dept表:
mysqldump -u root -p testdb dept>C:/backup/testdb20211225.sql
比如需要備份多個數據庫,testdb1和testdb2:
mysqldump -u root -p --databases testdb1 testdb2>C:/backup/testdb20211225.sql
Tip :需要使用“--databases”參數,并且多個數據庫之間用空格分隔。
比如需要備份系統中所有的數據庫:
mysqldump -u root -p --all-databases>C:/backup/testdb20211225.sql
直接復制整個數據庫目錄
因為MySQL表保存為文件方式,因此可以直接復制MySQL數據庫的存儲目錄及文件進行備份。
在Windows平臺下,默認目錄通常為:
C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 8.0\data
這種方式簡單、快速、有效。要想保持備份的一致性,備份前需要對相關表執行LOCK TABLES操作,然后對表執行FLUSH TABLES。這樣當復制數據庫目錄中的文件時,允許用戶繼續查詢表。
但是這種方法對InnoDB存儲引擎的表是不適用的,而且這種方法數據最好恢復到相同版本的服務器中,否則有可能不兼容。
使用MySQLhotcopy工具備份
MySQLhotcopy是一個Perl腳本。使用LOCK TABLES、FLUSH TABLES和cp或scp來快速備份數據庫。它是備份數據庫或者單個表最快的途徑,但它只能運行在數據庫目錄所在的機器上,并且只能備份MyISAM類型的表。
MySQLhotcopy在UNIX系統中運行。
語法:
mysqlhotcopy db_name_1, ... db_name_n /path/to/new_directory
比如需要備份testdb數據庫到/usr/backup目錄:
mysqlhotcopy -u root -p testdb /usr/backup
Tip : 要想執行MySQLhotcopy,必須擁有可以訪問備份的表文件權限。
數據恢復
通過恢復已經備份的數據可以盡量減少因為意外情況導致數據丟失的損失。
使用MySQL命令恢復
對于已經備份的包含CREATE和INSERT語句的文本文件,可以使用命令導入到數據庫中。
語法:mysql -u user -p [dbname] < filename.sql
比如將C:/backup/testdb20211225.sql文件中的備份導入到數據庫中:
mysql -u root -p testdb < C:/backup/testdb20211225.sql
Tip : 必須現在MySQL服務器中創建testdb數據庫。
如果已經登錄MySQl服務器,還可以使用source命令導入sql文件。
語法:source filename
比如需要將C:/backup/testdb20211225.sql文件中的備份導入到數據庫中:
use testdb ;
source C:/backup/testdb20211225.sql;
直接復制到數據庫目錄
如果數據庫通過復制數據庫文件備份,那么可以直接復制備份的文件到MySQL數據目錄下實現恢復。主要注意的是,保存備份數據的數據庫和待恢復的數據庫服務器的主版本號必須相同。而且該方式僅僅對MyISAM引擎的表有效,對于InnoDB存儲引擎的表不可用。
執行恢復以前關閉MySQL服務器,將備份的文件或者目錄覆蓋MySQL的data目錄,然后重啟MySQL服務。
使用MySQLhotcopy快速恢復
在MySQL服務器停止運行時,將備份的數據庫文件復制MySQL存放數據的位置(MySQL的data文件夾),重啟MySQL服務即可。
比如需要從MySQLhotcopy復制的備份恢復數據庫:
cp -R /usr/backup/testdb usr/local/mysql/data
?
總結
以上是生活随笔為你收集整理的【学习笔记】MySQL 数据备份与恢复的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【转载】SAP内部订单概念信息
- 下一篇: 【学习笔记】分析函数(开窗函数)