MySQL備份還原和定時任務

1、前言

2018年5月28日這個日子已通過去20幾天了,那天發生的一切到如今回想一下都有些後怕。最近看了一篇文章裏面有一句話挺好,刪庫(數據庫損壞)只有兩條路能夠走,一是恢復,二是跑路。很明顯我選擇了第一條路,有一份幸運也有一份執着最終仍是把數據恢復了回來。爲何說「幸運」呢?由於rpm方式安裝的MySQL數據庫默認打開了binlog日誌,並且日誌文件被完整的保存了下來。mysql

雖然數據恢復了回來,可是我真心的不但願數據再次丟失了,由於下一次可能沒有那麼幸運。恢復數據只是在萬不得已的狀況下采起的補救措施,咱們應該把備份數據做爲平常維護的好習慣。程序員

MySQL數據庫備份及數據恢復

1.數據庫備份

數據備份是咱們使用計算機的同窗平常的工做。不只數據庫須要定時備份,計算機上面重要的文件也須要按期作備份,那咱們今天就來談談MySQL是怎樣進行備份的。sql

MySQL給咱們提供了一個實用的工具 mysqldump,使用該工具前要肯定MySQL服務已經啓動,那咱們就直接來上實例吧!shell

備份全部的數據庫數據庫

mysqldump -u數據庫帳號 -p數據庫密碼 > 導出的文件名centos

mysqldump -uroot -proot > mysql_all.sql服務器

備份某一個數據庫工具

mysqldump -u數據庫帳號 -p數據庫密碼 數據庫名 > 導出的文件名和路徑編碼

mysqldump -uroot -proot test > test.sqlcentos7

備份遠程服務器上面的某一個數據庫

mysqldump -h數據庫服務器地址 -u數據庫帳號 -p數據庫密碼 數據庫名 > 導出的文件名

mysqldump -h192.168.1.11 -uroot -proot test > test.sql

平常中我使用的備份命令

mysqldump -uroot -proot test --default-character-set=utf8 > test.sql

這裏我加了一個參數:--default-character-set=utf8,對於中國的程序員來講亂碼問題是咱們的必修課。爲了避免給數據或程序帶來亂碼的困惑,咱們確定會給程序設定統一的編碼方式。我一般使用的編碼爲UTF8,這裏咱們和數據庫的編碼保持一致便可。

2. 數據庫還原

既然咱們說到備份,數據還原是必不可少的,這時咱們用到了MySQL經常使用mysql工具。

數據庫還原

mysql -u數據庫帳號 -p數據庫密碼 數據庫名 < 導入的文件名和路徑 mysql -uroot -proot test < test.sql

平常中我使用的還原數據庫命令

mysql -uroot -proot test --default-character-set=utf8 < test.sql

3. 定時備份

咱們瞭解了數據庫備份及數據庫還原,這時出現了一個疑問? 備份一般是每隔一段時間都須要進行一次,數據增量較小的話一天一次,可是數據增量要是很大的話須要天天屢次,咱們不可能每次都是手動去備份,故而咱們會考慮有沒有一種方式是讓電腦定時幫咱們完成這個任務。

Linux服務器有一個定時任務工具:crontab,維基百科是這麼說的:crontab命令常見於Unix和類Unix的操做系統之中,用於設置週期性被執行的指令。該命令從標準輸入設備讀取指令,並將其存放於「crontab」文件中,以供以後讀取和執行。該詞來源於希臘語chronos(χρόνος),原意是時間。

那咱們就直接開始吧!

首先咱們來建立一個shell文件

touch mysql_backup.sh

打開文件的執行權限

chmod +x mysql_backup.sh

編輯該文件

sudo vi mysql_backup.sh

#!/bin/sh
backupdir='/home/mysql'
time=`date +%Y%m%d%H%M`
mysqldump -uroot -proot test --default-character-set=utf8 > $backupdir/test_$time.sql

內容說明

  • backupdir # 設置備份文件要保存的目錄地址
  • time # 備份的文件要是不少的話避免重名,一般使用時間來作備份文件的拓展
  • $backupdir/test_$time.sql # 組裝名稱:數據庫名 + 時間拓展

設定定時任務

crontab -e

30 * * * * sh mysql_back.sh # 每30分鐘執行一次該命令

crontab的文件格式

分 時 日 月 周 要運行的命令

  • 第1列分鐘0~59
  • 第2列小時0~23(0表示子夜)
  • 第3列日1~31
  • 第4列月1~12
  • 第5列星期0~7(0和7表示星期天)
  • 第6列要運行的命令

查看定時任務

crontab -l

定時任務控制(操做系統爲:centos6,服務的控制centos7是不同的噢)

service crond start # 開啓服務

service crond stop # 關閉服務

service crond restart # 重啓服務

總結

寫到這裏數據庫備份恢復基本已經到一個段落了,作好數據備份是咱們每一位計算機使用者良好的習慣,能夠更好的避免數據丟失。但願咱們能把它看成一種責任。

備註

本文所使用的操做系統及數據庫版本說明:

  • 操做系統:centos6.8
  • 數據庫版本:MySQL5.5.49
相關文章
相關標籤/搜索