Linux shell script for database backup

后端 未结 10 1719
忘了有多久
忘了有多久 2020-12-02 04:59

I tried many scripts for database backup but I couldn\'t make it. I want to backup my database every hour.
I added files to \"/etc/cron.hourly/\" folder, changed its chm

10条回答
  •  野趣味
    野趣味 (楼主)
    2020-12-02 05:33

    Now, copy the following content in a script file (like: /backup/mysql-backup.sh) and save on your Linux system.

        #!/bin/bash
    
        export PATH=/bin:/usr/bin:/usr/local/bin
        TODAY=`date +"%d%b%Y"`
    
        DB_BACKUP_PATH='/backup/dbbackup'
        MYSQL_HOST='localhost'
        MYSQL_PORT='3306'
        MYSQL_USER='root'
        MYSQL_PASSWORD='mysecret'
        DATABASE_NAME='mydb'
        BACKUP_RETAIN_DAYS=30   
    
        mkdir -p ${DB_BACKUP_PATH}/${TODAY}
        echo "Backup started for database - ${DATABASE_NAME}"
    
        mysqldump -h ${MYSQL_HOST} \
       -P ${MYSQL_PORT} \
       -u ${MYSQL_USER} \
       -p${MYSQL_PASSWORD} \
       ${DATABASE_NAME} | gzip > ${DB_BACKUP_PATH}/${TODAY}/${DATABASE_NAME}-${TODAY}.sql.gz
    
    if [ $? -eq 0 ]; then
      echo "Database backup successfully completed"
    else
      echo "Error found during backup"
      exit 1
    fi
    
    
    ##### Remove backups older than {BACKUP_RETAIN_DAYS} days  #####
    
    DBDELDATE=`date +"%d%b%Y" --date="${BACKUP_RETAIN_DAYS} days ago"`
    
    if [ ! -z ${DB_BACKUP_PATH} ]; then
          cd ${DB_BACKUP_PATH}
          if [ ! -z ${DBDELDATE} ] && [ -d ${DBDELDATE} ]; then
                rm -rf ${DBDELDATE}
          fi
    fi
    

    After creating or downloading script make sure to set execute permission to run properly.

    $ chmod +x /backup/mysql-backup.sh
    

    Edit crontab on your system with crontab -e command. Add following settings to enable backup at 3 in the morning.

    0 3 * * * root /backup/mysql-backup.sh
    

提交回复
热议问题