您好,登錄后才能下訂單哦!
前言
備份是容災的基礎,是指為防止系統出現操作失誤或系統故障導致數據丟失,而將全部或部分數據集合從應用主機的硬盤或陣列復制到其它的存儲介質的過程。而對于一些網站、系統來說,數據庫就是一切,所以做好數據庫的備份是至關重要的!
備份是什么?
本實例將創建目錄放置于/mnt目錄下,可根據具體情況放置于其他目錄:
cd /mnt mkdir dbback pwd /mnt/dbback
創建shell腳本
腳本名稱可根據自己規范進行自定義:
vim bcmysql.sh
進入編輯器,輸入以下內容:
#!/bin/bash mysqldump -uusername -ppassword demo > /mnt/dbback/demo_$(date +%Y%m%d_%H%M%S).sql
如果需要本分文件進行壓縮,可輸入下面命令:
#!/bin/bash mysqldump -uusername -ppassword demo | gzip > /mnt/dbback/demo_$(date +%Y%m%d_%H%M%S).sql.gz
在具體操作中,需要將username,password和demo分別替換成對應的數據庫用戶名、密碼和數據庫名。
添加可執行權限
chmod u+x bcmysql.sh
添加完執行權限之后,執行此腳本,可能會出現如下異常:
mysqldump: [Warning] Using a password on the command line interface can be insecure.
這個問題應該是在MySQL5.6+版本的時候就有出現,可能是為了確保數據庫的安全性采用的保護機制。在本實例中使用的mysql版本為5.7.22,雖然有警告信息,但可以成功備份數據。
修改mysql配置文件
針對上面的問題,某些版本可能無法成功備份,另外也不建議將數據庫密碼配置在腳本中,則可直接修改mysql的配置文件。一般情況下,mysql的配置文件在/etc/my.cnf。
vim /etc/my.cnf
在此文件內添加mysqldump的配置如下:
[mysqldump] user=your_backup_user_name password=your_backup_password
替換掉對應的用戶名和密碼,并修改bcmysql.sh腳本中的命令,取消用戶名和密碼參數,無需重啟mysql,直接執行腳本即可看到備份結果。
demo_20181114_193425.sql
問題一
當使用vim查看導出的sql文件內容時,會發現中文有亂碼。此問題有兩種情況引起,第一種就是數據庫本身字符集為latain1,則此時需要指定字符集,在執行的參數中添加如下參數:
--default-character-set=gbk
當然如果是utf8則將gbk修改為utf8。查看數據庫字符集的命令如下:
show variables like '%char%'; -- 查詢結果 character_set_client utf8 character_set_connection utf8 character_set_database utf8mb4 character_set_filesystem binary character_set_results utf8 character_set_server utf8 character_set_system utf8 character_sets_dir /usr/local/mysql/share/charsets/
如果將字符集正確修改,依然有亂碼,則可嘗試添加如下參數:
--hex-blob
仔細分析一下表結構,可能表結構中有blob類型,這個參數的含義是用16進制的方式導出BINARY, VARBINARY, BLOB類型的數據。修改后的命令如下:
mysqldump --default-character-set=utf8 --hex-blob demo > /mnt/dbback/demo_$(date +%Y%m%d_%H%M%S).sql
添加計劃任務
檢測或安裝crontab
執行crontab命令如果報command not found,就表明沒有安裝。
# crontab -bash: crontab: command not found
如果未安裝,可以通過yum命令進行安裝:
# yum -y install vixie-cron
雖然crontab不支持-h或-help命令,但可以通過此命令檢查是否安裝成功:
[root@iZ2zeck5vZ ~]# crontab -help crontab:無效選項 -- h crontab: usage error: unrecognized option Usage: crontab [options] file crontab [options] crontab -n [hostname] Options: -u <user> define user -e edit user's crontab -l list user's crontab -r delete user's crontab -i prompt before deleting -n <host> set host in cluster to run users' crontabs -c get host in cluster to run users' crontabs -s selinux context -x <mask> enable debugging Default operation is replace, per 1003.2
添加計劃任務
通過上面的命令參數,我們可以看到修改crontab的命令,執行命令:
crontab -e
進入crontab的編輯操作頁面,可以像vi、vim一樣編輯其中的內容。在其中添加如下命令:
*/1 * * * * /mnt/dbback/bcmysql.sh
此行命令的作用是每隔一分鐘執行一次bcmysql.sh。等待一分鐘之后通過ls命令查看是否生成備份文件。發現已經可以正常生成文件。當然,我們并不需要每分鐘就備份一次,因此把命令改為如下:
0 1 * * * /mnt/dbback/bcmysql.sh
每天凌晨1點執行一次備份操作。
日志查看
如果執行失敗了,則可查看任務日志:
# tail -f /var/log/cron
小結
至此,一個簡單版本的Linux下實現Mysql定時任務備份數據功能已經實現。當然也可以在此版本基礎上進行目錄控制,歷史記錄刪除等擴展。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。