1. 程式人生 > >mysql 定時備份任務

mysql 定時備份任務

備份方案:
本地備份並同步至遠端伺服器,保留30天資料


1. 本地資料庫備份,備份資料庫gold_ecooy,naiang
#!/bin/bash
#xliang
#Created Time: 2018-12-17
#File Name : backup_databases.sh
# 利用mysqldump工具進行資料庫備份,與crontab一起使用

BAK_PATH=/backup_databases
DB_NAME=(gold_ecooy naiang)

for i in ${DB_NAME[@]}
do
  if [ ! -d "$BAK_PATH/$i" ];then
    mkdir -p $BAK_PATH/$i


  fi

  mysqldump -uroot -p"MnfYeFxxxxx" --databases $i | gzip > $BAK_PATH/$i/$i`date "+%Y%m%d%H%M%S"`.sql.gz
done

find $BAK_PATH -mtime +30 -name "*.sql.gz" -exec rm -rf {} \;


2. 本地rsync 配置
# echo "cxxxxxj666" > /etc/rsyncd.secrets    # 名字自定義,cxxxxxj666為rsync服務端配置的使用者名稱為db的密碼,不需要使用者名稱
# chmod 600 /etc/rsyncd.secrets


# rsync --daemon                             # 以守護程序開啟,如果提示沒有配置檔案touch /etc/rsyncd.conf即可
# echo "rsync --daemon" >> /etc/rc.local

3. 配置計劃任務,資料庫20分鐘備份一次,30分鐘同步一次遠端伺服器
# cronta -e
*/20 * * * * /backup_databases/backup_databases.sh >/dev/null 2>&1


*/30 * * * * rsync -avh --delete --progress --exclude 'backup_databases.sh' --password-file=/etc/rsyncd.secrets /backup_databases/ [email protected]::db01 >/dev/null 2>&1


4. 遠端備份伺服器配置
4.1 rsync配置檔案
# cat /etc/rsyncd.conf
uid = root
gid = root
use chroot = no
ignore errors
read only = no

transfer logging = yes
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock

[db01]
comment = database_bak_7.75.194.229
path = /databases_bakup/7.75.194.229
auth users = db
secrets file = /etc/rsyncd.secrets
host allow = 7.75.194.229/32
#host allow = *
list = false

4.2 rsync 密碼檔案
# echo "db:cxxxxxj666" > /etc/rsyncd.secrets
# chmod 600 /etc/rsyncd.secrets
# rsync --daemon
# echo "rsync --daemon" >> /etc/rc.local

4.3 恢復資料庫
mysql> use gold_ecooy;
mysql> source /home/gold_ecooy.sql