Linux中如何定時對mysql資料庫進行備份匯出sql檔案

說明

在系統的使用過程中,定時對資料庫進行備份是非常重要的一個事情,下面給大家介紹一種mysql資料庫的定時備份方式。

1 檢視mysqldump的位置

使用命令which mysqldump查詢mysqldump所在的位置,如果提示命令找不到,這是因為系統預設會查詢/usr/bin下面的命令,如果這個命令不在這個目錄下,自然會提示命令找不到。

可以透過這篇文章linux中執行mysqldump命令提示找不到命令的解決方法 - 猿經驗來解決這個問題。

2 編輯my。cnf檔案, 指定執行mysqldump命令時使用的賬號與密碼

在/etc/my。cnf檔案中新增如下配置:

[mysqldump]user=rootpassword=root

然後重啟mysql

3 編寫指令碼mysql_backup。sh

在/root/中新增指令碼mysql_backup。sh,內容如下:

#mysqldump備份程式執行路徑DUMP=/usr/bin/mysqldump#備份檔案存放路徑OUT_DIR=/root/mysql_backup#備份檔案所屬許可權LINUX_USER=root#要備份的資料庫名字DB_NAME=mydb#備份的天數,之前的刪除DAYS=1#進入備份存放目錄cd $OUT_DIR#獲取當前系統時間DATE=`date +%Y_%m_%d`#備份資料庫的檔名OUT_SQL=$DB_NAME“_$DATE。sql”#最終儲存的資料庫備份檔名TAR_SQL=$DB_NAME“_$DATE。tar。gz”#開始執行備份資料庫$DUMP ——login-path=test ——defaults-extra-file=/etc/my。cnf ——default-character-set=utf8 $DB_NAME > $OUT_SQL#壓縮為。tar。gz格式tar -czf $TAR_SQL 。/$OUT_SQL#刪除。sql格式的備份檔案rm $OUT_SQL#更改備份資料庫檔案的所有者chown $LINUX_USER:$LINUX_USER $OUT_DIR/$TAR_SQL#刪除30天前的備份檔案(注意:{} \;中間有空格)find $OUT_DIR -name “*。tar。gz” -type f -mtime +$DAYS -exec rm -f {} \;

4 使用mysql_config_editor配置快捷登入

執行如下命令:

/usr/local/mysql/bin/mysql_config_editor set ——login-path=test ——host=localhost ——user=root ——port=3306 ——password

其中,——login-path是登入路徑名,相當於登入資訊的一個秘鑰,——host是mysql所在伺服器的主機名或IP地址,——user是登入的資料庫使用者名稱,——port是登入資料庫的對外服務埠,——password是登入的資料庫使用者密碼。

執行該命令後會提示輸入密碼,輸入密碼後即可將登入資訊儲存到加密檔案。mylogin。cnf中,注意這裡系統不會對輸入的密碼進行正確性驗證,不管對錯,只是把密碼儲存了起來。

在使用mysql_config_editor配置快捷登入,輸入密碼時,如果密碼中包含有一些特殊字元,比如&,$之類的,需要在密碼前後加上雙引號,否則mysql_config_editor配置的快捷登入就是無效的,在使用快捷登入時會提示“ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)”

5 新增定時任務執行mysql_backup。sh

執行命令:crontab -e[root@VM-12-11-centos ~]# crontab -e每小時的第30分鐘執行一次mysql_backup。sh30 * * * * /root/mysql_backup。sh