MySQL數據庫入門——數據庫備份 mysqldump


======從物理,邏輯角度========mysql

物理備份:對數據庫操做系統的物理文件的備份(數據文件、日誌文件)sql

方法:數據庫

冷備份:在關閉數據庫的時候進行ide

熱備份:數據庫處於運行狀態,這種備份方法依賴於數據庫的日誌文件spa


邏輯備份:對數據庫邏輯組件的備份操作系統

======從數據庫的策略角度======日誌

完整備份:code

優勢:簡單方便it

缺點:數據存在大量的重複io

佔用大量的備份空間

備份時間長


差別備份基於上一次完整備份後面多的內容進行備份


物理備份:

yum install xz -y

tar Jcvf /opt/mysql-$(date+%F).tar.xz /usr/local/mysql/data/

#備份當時的mysql數據文件造成壓縮文件到opt下面的壓縮包

mysqldump 命令對單個庫進行徹底備份【可是不會有create建立的語句】

保存表結構的話要加-d

mysqldump -u用戶 -p密碼 數據庫名 > 保存的文件路徑,文件類型爲sql

舉例:#備份名爲school的數據庫到/opt/取名爲school.sql

mysqldump -uroot -pabc123 school > /opt/school.sql   #mysqldump –uroot用戶 -p密碼 數據庫名school > /opt/school.sql


=======恢復數據,導回數據========

方法一:

須要提早建立數據庫school

mysql -uroot -pabc123 school < school.sql

方法二:

mysqldump -uroot -pabc123 --databases school > school.sql

無需提早建立數據庫school

mysql -uroot -pabc123 < school.sql

方法三

首先進入數據庫,備份一份數據,

drop刪除的表

source 以前備份數據的文件路徑,結尾不用加;


多個數據庫備份:

mysqldump -uroot -p --databases數據庫名稱1 數據庫名稱2 > /opt/文件名.sql

完整性數據庫備份

備份全部的數據庫結構:

mysqldump -u用戶名 -p --all-databases > 保存文件路徑 文件類型sql

備份一份完整的數據庫文件:

mysqldump -u用戶名 -p --databases 數據庫名 > 保存文件路徑 文件類型sql

保存數據庫中的表的內容備份:

mysqldump -u用戶名 -p 數據庫名錶名 > 保存文件路徑 文件類型sql

增長 增量備份的刷新語句【前提是必定已經提早完成完整性備份,再刷新語句,輸入刷新語句後,前面的增量操做會導入上一個二進制日誌節點中】

[root@client~]# mysqladmin -uroot -pabc123 flush-logs


[root@client~]# mysqlbinlog --no-defaults –base64-output=decode-rows -v /opt/bak_sql/mysql-bin.000001   #查看二進制日誌文件,使用64位解碼才能查看到命令語句



恢復改正有誤操做的增量備份數據時:兩種方法基於時間的和 基於位置點

1.基於時間點恢復數據:

場景舉例:首先產生了誤操做以後進行了增量備份,刪除這個誤操做的數據表後,恢復數據時。

首先恢復以前備份的完整性備份,而後查看增量備份的二進制文件,


查找到錯誤的操做命令上面的時間點複製粘貼,而後輸入命令 :

mysqlbinlog --no-defaults --stop-datetime='2018-09-03 15:31:56' /usr/local/mysql/data/mysql-bin.000002 | mysql -uroot -pabc123

查找到下一條正確的操做命令上面的時間點複製粘貼,而後輸入命令:

mysqlbinlog --no-defaults --start-datetime='2018-09-03 15:32:16' /usr/local/mysql/data/mysql-bin.000002 | mysql -uroot -pabc123


2.基於位置點:誤操做的位置點是:at  887

場景舉例:首先產生了誤操做以後進行了增量備份,刪除這個誤操做的數據表後,恢復數據時。

首先恢復以前備份的完整性備份,而後查看增量備份的二進制文件,


查找到錯誤操做的上一次能夠操做執行的位置點: at 833 ,輸入命令:

mysqlbinlog --no-defaults --stop-position='833' /usr/local/mysql/data/mysql-bin.000002 | mysql -uroot -pabc123

查找到錯誤操做的下一次能夠操做執行的位置點: at 930 ,輸入命令:

mysqlbinlog --no-defaults --start-position='930' /usr/local/mysql/data/mysql-bin.000002 | mysql -uroot -pabc123


========退出mysql,操做mysql=====


導回以前備份的路徑,執行命令(能夠不進入數據庫的進行命令操做)

mysql -uroot -p 數據庫 < 以前備份的文件路徑


不用進入數據庫就能夠進行的操做:須要加-e

舉例語法:mysql -u用戶  -p密碼 -e ‘use 數據庫;show databases;’


增量備份,恢復數據庫的時候須要先恢復原先的完整性備份,而後再輸入命令

[root@client~]# mysqlbinlog --no-defaults mysql-bin.000002 | mysql -uroot -p

PS:當你想要恢復增量備份的時候,只有先恢復以前的完整性備份後,輸入增量備份的刷新語句以後,再恢復000002節點的增量備份

相關文章
相關標籤/搜索