Linux實現mysql備份和還原

2021-10-07 02:34:09 字數 2106 閱讀 3692

在專案中,資料是很重要的,所以一定要做備份,防止意外導致資料丟失。

1.找乙個位置,建立資料夾

mkdir data //儲存備份的sql檔案
2.建立乙個shell檔案

vim solve_back.sh
檔案內容為:

#!/bin/bash 

echo data_dump_time: `date '+%y-%m-%d %h:%m:%s'` >> /usr/local/sh/solve_bak.log #備份日誌

cd /usr/local/mysql/bin #mysql bin目錄

mysqldump -uuser -ppassword database > /var/www/data/solve_`date '+%y%m%d%h%m%s'`.sql #備份命令

#user 資料庫使用者

#password 資料庫密碼

#database 資料庫名稱

3.增加s**件可操作許可權

chmod u+x solve_bak.sh
4.執行備份shell檔案

/usr/local/sh/solve_bak.sh
效果:

5.編輯linux定時任務

crontab -e

*/10 * * * * /usr/local/sh/solve_bak.sh #每10分鐘執行一次

等一段時間以後去檢視

發現乙個問題 直接執行shell檔案,sql檔案是有內容的,但是使用crontab 檔案內容是空的

原因:由於mysqldump存在於全域性環境變數mysql的bin下面,故在直接執行時可以識別到mysqldump命令,而在crontab裡面無法識別到mysqldump命令。(ps:crontab執行失敗問題基本都是環境變數引起的)

解決方法:在備份指令碼裡面的mysqldump命令前加上絕對路徑

#!/bin/bash 

echo data_dump_time: `date '+%y-%m-%d %h:%m:%s'` >> /usr/local/sh/solve_bak.log #備份日誌

/usr/local/mysql/bin/mysqldump -uuser -ppassword database > /var/www/data/solve_`date '+%y%m%d%h%m%s'`.sql #備份命令

#user 資料庫使用者

#password 資料庫密碼

#database 資料庫名稱

備份沒有問題!

還原:1.建立乙個資料庫,字符集與原來資料庫保持一致

2.在linux 中執行如下命令

匯入成功!

備份中的報錯:

mysqldump -u root -p web(資料庫名) > web.sql(匯出檔名)

結果報錯:

mysqldump: unknown variable 'max_allowed_packet = 16m'

解決方法:

/etc/my.cnf進行修改

[mysqldump]

quick

set-variable =max_allowed_packet = 16m (該行用#注釋掉)

重啟mysql,問題解決!

Linux 實現自動備份mysql

原理 利用linux的cron程序 用於定時執行任務 來定時呼叫mysql的備份工具mysqldump 實現自動備份。cron需要用crontab工具來管理。一 檢查linux中是否有安裝crontab 輸入 crontab l 如果顯示 command not found 說明沒有裝crontab...

linux實現mysql定時備份

1.建立備份資料存放目錄 mkdir p bak db bakup 2.編寫資料庫備份指令碼 vim mysqlbakup.sh 指令碼內容 bin bash echo mysql backup start.設定mysql備份目錄 folder bak db bakup cd folder day ...

Linux備份和匯入Mysql

usr bin mysqldump opt ubatsing pbatsingpw hlocalhost timepusher mnt mysqlbackup db date f sql bin sh database info db user batsing db pass batsingpw d...