======從物理,邏輯角度========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節點的增量備份