天天看點

linux上 mysql資料庫備份與還原 (mysqldump)

最近要寫mysql資料庫備份,把自己所得記錄下來,防止以後忘了,哈哈哈哈

(注  這是遠端備份,備份到指定伺服器)

使用環境 

  1.     centos 7
  2.     mysql 5.7 
  3.    遠端連接配接主機免密碼登入 ,

       在運作伺服器上執行   ssh-keygen

       一路回車,還是不要添加密碼的好,這時候可以注意一下公鑰,秘鑰儲存位置

      把公鑰放到備份的伺服器上 ssh-copy-id [email protected]

     (注意:這兩台linux必須能ping通)

  msyql自帶的mysqldump和xtrabackup工具,兩種方法備份,今天先介紹一下mysqldump

一.使用mysqldump備份

 一般使用備份,都是備份到遠端伺服器上,别問我為什麼,備份到本地,伺服器崩了,一切都瞎了啊,哈哈哈,是以一下是備份到遠端,但是可以在本地測試啊!

     在運作伺服器上執行:      

     1.建立腳本,并添加内容     ps一步到位,腳本位置,自己意願

               cd  /home                  (我的是在home目錄下)

               vim mysql_data.sh

             2.添加下面的内容

#!/bin/sh 
DUMP=/usr/bin/mysqldump     #mysqldump的路徑,不知道的可以全局搜尋一下  find / -name mysqldump 
OUT_DIR=/home/longlong        #備份檔案的目錄,沒有提前建好
DB_NAME=database        #要備份的資料庫名字
DB_USER=root          #資料庫登入名
DB_PASS=root           #資料庫登陸密碼
HOST=192.168.1.1    #遠端備份ip
USE=root               #遠端備份使用者
DATE=`date +%Y%m%d%H%M`        #目前時間
OUT_SQL="mysqldata_bak_$DATE.sql.gz"     #備份出來的sql檔案名
$DUMP  -u$DB_USER -p$DB_PASS $DB_NAME | gzip -c | ssh [email protected]$HOST "cat >$OUT_DIR/$OUT_SQL"
           

      3.将腳本設定成可執行的檔案類型

      chmod +x /home/mysql_data.sh

     這時候就可以測試一下腳本,看是否正确,這裡有兩種方法

            1    cd  /home. 

                   ./mysql_data.sh

             2.     bash -x  /home/mysql_data.sh

       都可以檢視腳本是否執行成功    

     4.添加定時任務  crontab

        crontab -e 

       添加如下指令  (每天的一點三十分執行)

        30 1 * * *  /home/mysql_data.sh  

      5 重新開機定時任務

        service crond restart

  在備份伺服器上執行:

      1.在備份伺服器上建立備份目錄  (此測試生成目錄放在home下)

          cd /home

         mkdir  mysql_data            住:此目錄應與上面腳本mysql_data.sh中的備份目錄一緻

        2.建立腳本,用來儲存最近五天的備份

          vim dele.sh

         複制以下内容    

DAYS=5
BACKUP_DIR=/home/longlong    #(這個檔案和上面備份的檔案一緻)
#删除過期的檔案
find $BACKUP_DIR -name "mysqldata_bak*" -type f -mtime +$DAYS -exec rm {} \;        #删>除5天前的備份檔案(注意:{} \;中間有空格)
           

            3.将腳本檔案設定成可執行檔案類型

                chmod +x /home/dele.sh

              4.添加計劃任務

                crontab -e

               輸入如下指令

                30 1 * * *  /home/dele.sh

              5.重新開機定時任務

              service crond restart

   二.mysqldump資料庫備份還原

       在備份伺服器上執行

      1.解壓縮

          gunzip   備份檔案名

       2.還原資料庫

        mysql -u root -p datapase < 備份檔案名

一些ok,剩下測試.