linux下實現mysql數據庫定時備份

https://www.cnblogs.com/taomylife/p/8022104.html

https://www.cnblogs.com/huxiaoguang/p/10847401.html

https://blog.csdn.net/sinat_33201781/article/details/94443092

  1. 創建備份目錄

    mkdir -p /data/dbback/mysql
    
  2. 創建備份shell腳本

    vim /data/dbback/bkDatabaseName.sh
    

    輸入或粘貼以下內容

    需要先在/etc/my.cnf中添加以下內容

    打開etc/my.cnf,在[mysqldump]下增加:
    user=root
    password=cw123456

    #!/bin/bash
    
    # 需要備份的數據庫列表
    db_list="mysql sys test"
    # 數據庫備份目錄
    backup_dir="/data/dbback/back_dir"
    # 當前日期
    date=`date +%Y%m%d`
    # 當前日期前7天日期
    olddate=`date +%Y%m%d -d "-7 days"`
    # 日誌備份目錄
    backlog_dir="/data/dbback/back_log"
    
    echo $olddate
    
    # 創建當天的備份數據和日誌文件目錄
    mkdir -p $backlog_dir/$date
    mkdir -p $backup_dir/$date
    # 刪除七天前備份數據和日誌文件
    rm -rf $backlog_dir/$olddate
    rm -rf $backup_dir/$olddate
    
    for db_name in $db_list
    do
    echo "$db_name back begin at  `date +%H:%M:%S`" >> $backlog_dir/$date/back.log
    mysqldump $db_name --skip-lock-tables | gzip > $backup_dir/$date/$db_name"_"$date.sql.gz
    echo "$db_name back end at  `date +%H:%M:%S`" >> $backlog_dir/$date/back.log
    done
    
    echo "all back over!" >> $backlog_dir/$date/back.log
    
  3. 添加可執行權限

    chmod +x bkDatabaseName.sh
    

    執行腳本 ./bkDatabaseName.sh

    報錯Warning: Using a password on the command line interface can be insecure.參考官網http://dev.mysql.com/doc/refman/5.1/en/password-security-user.html做修改。

    http://www.jiadingqiang.com/3438.html

    直接把上面的腳本中的用戶名和密碼去掉,修改爲“mysqldump dbname>"db_name > "backup_dir/dbname""db_name"_"time.sql",但是要在配置文件中加上用戶名和密碼。可以在my.cnf內指定。

    打開etc/my.cnf,在[client]下增加:
    user=root
    password=root
    但是這樣就所有塊的操作都能共享了,生產環境上爲了安全還是儘量分開(所以也可以在[mysqldump]下增加)。

  4. 創建定時任務

    systemctl start crond
    systemctl status crond
    systemctl enable crond
    

    檢測或安裝 crontab,通過命令判斷crontab有沒有,沒有的話先安裝。

  5. 安裝cron

    yum -y install vixie-cron
    yum -y install crontabs

    說明:
    vixie-cron 軟件包是 cron 的主程序;
    crontabs 軟件包是用來安裝、卸裝、或列舉用來驅動 cron 守護進程的表格的程序。

  6. 添加計劃任務

    執行命令:

    crontab -e
    

    這時就像使用vi編輯器一樣,可以對計劃任務進行編輯。

    輸入以下內容並保存: (每天凌晨一點備份數據庫

    00 01 * * * /data/dbback/bkDatabaseName.sh
    

    附 Crontab 格式

    crontab [選項]

    選項:

    -e: 編輯crontab定時任務

    -l: 查詢crontab任務

    -r: 刪除當前用戶所有的crontab任務

    分 時 日 月 周 執行命令
    第 1 列分鐘 1~59,每分鐘用 * 或者*/1表示,整點分鐘數爲00或0
    第 2 列小時 1~23(0 表示 0 點)
    第 3 列日 1~31
    第 4 列月 1~12
    第 5 列星期 0~6(0 表示星期天)
    第 6 列要運行的命令
    
    項目 含義 範圍
    第一個“*” 一小時當中的第幾分鐘 0-59
    第二個“*” 一天當中的第幾小時 0-23
    第三個“*” 一個月當中的第幾天 1-31
    第四個“*” 一年當中的第幾月 1-12
    第五個“*” 一週當中的星期幾 0-7(0和7都代表星期日)
    時間 含義
    45 22 * * * 命令 在22點45分執行命令
    0 17 * * 1 命令 每週1 的17點0分執行命令
    0 5 1,15 * * 命令 每月1號和15號的凌晨5點0分執行命令
    40 4 * * 1-5 命令 每週一到週五的凌晨4點40分執行命令
    */10 4 * * * 命令 每天的凌晨4點,每隔10分鐘執行一次命令
    0 0 1,15 * 1 命令 每月1號和15號,每週1的0點0分都會執行命令。注意:星期幾和幾號最好不要同時出現,因爲他們定義的都是天。非常容易讓管理員混亂。
    特殊符號 含義
    * 代表任何時間。比如第一個“*”就代表一小時中每分鐘都執行一次的意思。
    代表不連續的時間。比如“0 8,12,16 * * * 命令”,就代表在每天的8點0分,12點0分,16點0分都執行一次命令
    - 代表連續的時間範圍。比如“0 5 * * 1-6命令”,代表在週一到週六的凌晨5點0分執行命令
    */n 代表每隔多久執行一次。比如“*/10 * * * * 命令”,代表每隔10分鐘就執行一遍命令
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章