Linux與MySql學習之旅(三):用命令和腳本備份與恢復MySql數據庫

一、用命令備份數據庫

1. 一般備份:mysqldump   -u 數據庫登錄名  -p [數據庫登錄密碼]   數據庫 >  備份路徑/文件名 .sql

2.備份成壓縮包:mysqldump   -u 數據庫登錄名  -p [數據庫登錄密碼]   數據庫 | gzip >  備份路徑/文件名 .sql.gz

實例:注意 要先創建一個備份位置的文件夾。

mysqldump -uroot -p mynewdatabase20200512 > /usr/local/mysql_backup/mynewdatabase.sql
 

二、恢復數據庫:

mysql  -uusername -ppassword databasename < backupfile.sql

實例:

mysql -uroot -p mynewdatabase20200512 < /usr/local/mysql_backup/mynewdatabase.sql


以下參考自:Linux下實現MySQL數據備份和恢復的命令使用全攻略

備份MySQL數據庫的命令  :

 mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql 

備份MySQL數據庫爲帶刪除表的格式  備份MySQL數據庫爲帶刪除表的格式,能夠讓該備份覆蓋已有數據庫而不需要手動刪除原有數據庫。  

 mysqldump -–add-drop-table -uusername -ppassword databasename > backupfile.sql 

直接將MySQL數據庫壓縮備份 

 mysqldump -hhostname -uusername -ppassword databasename | gzip > backupfile.sql.gz 

備份MySQL數據庫某個(些)表  

 mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 > backupfile.sql 

同時備份多個MySQL數據庫  

 mysqldump -hhostname -uusername -ppassword –databases databasename1 databasename2 databasename3 > multibackupfile.sql 

僅僅備份數據庫結構  

mysqldump –no-data –databases databasename1 databasename2 databasename3 > structurebackupfile.sql 

備份服務器上所有數據庫  

mysqldump –all-databases > allbackupfile.sql 

還原MySQL數據庫的命令  

 mysql -hhostname -uusername -ppassword databasename < backupfile.sql 

還原壓縮的MySQL數據庫 

 gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename 

將數據庫轉移到新服務器  

mysqldump -uusername -ppassword databasename | mysql –host=*.*.*.* -C databasename

命令中 -hhostname可以不用。

二、創建定時任務執行備份:crontab -e

1.使用vi命令,創建腳本文件:文件名.sh,文件內容爲linux命令

2.創建定時任務備份數據庫

命令:crontab -e  回車 打開一個空的文件,編輯方法同vi,格式爲

* * * * *    腳本文件文件路徑

不明這個啥意思的,可以用這個命令查看:cat /etc/crontab 定時任務的格式。

定時任務編寫格式
定時任務編寫格式

示例:

(1)10 * * * *    腳本文件文件路徑.sh

每小時過10分鐘時執行腳本文件:即在  10:10   11:10   12:10  ......等等時執行文件,實際上是每一小時執行一次。

(2)*/10 * * * *  腳本文件文件路徑.sh

每隔10分鐘執行一次腳本文件:即  10:10  10:20  10:30 ....等等 每過十分鐘執行一次。

 

crontab -l  查看當前用戶下的定時任務,定時任務文件目錄 爲/var/spool/cron/  文件名爲系統登錄用戶的名稱

crontab -r 刪除所有定時任務。

#定時刪除指定文件

find 路徑 -mtime N  -name '文件名.後綴名'  -exec rm -rf {} \;

實例:

find /usr/local/mysql_backup -mtime +1 -name '*.sql'  -exec rm -rf {} \;

-mtime n 按照文件的更改時間來找文件,n爲整數。 
n表示文件更改時間距離爲n天, -n表示文件更改時間距離在n天以內,+n表示文件更改時間距離在n天以前。 
例如: 
-mtime 0 表示文件修改時間距離當前爲0天的文件,即距離當前時間不到1天(24小時)以內的文件。 
-mtime 1 表示文件修改時間距離當前爲1天的文件,即距離當前時間1天(24小時-48小時)的文件。 
-mtime+1 表示文件修改時間爲大於1天的文件,即距離當前時間2天(48小時)之外的文件 
-mtime -1 表示文件修改時間爲小於1天的文件,即距離當前時間1天(24小時)之內的文件

爲什麼-mtime+1 表示文件修改時間爲大於1天的文件,即距離當前時間48小時之外的文件,而不是24小時之外的呢? 
因爲n值只能是整數,即比1大的最近的整數是2,所有-mtime+1不是比當前時間大於1天(24小時),而是比當前時間大於2天(48小時)。

數字N的參考文獻:Linux命令之find命令中的-mtime參數

 

附:給文件授權:命令 chmod -R abc  文件名        a  b  c 分別表示授予owner  group  other 用戶的權限值

Unix系統的權限分三種,分別是擁有者(Owner)、用戶組(Group)、其它用戶(Other),用ls的-l參數可以查看文件的權限。

權限示意圖

圖片來源文件授權,很好的文章

  • r = 4: 讀

  • w = 2: 寫

  • x = 1: 執行

使用 ls  文件  -ll 命令 可以查看文件權限。

journalctl -e??
journalctl | grep bkemp
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章