数据库备份脚本

#!/bin/bash
# Databases that you wish to be backed up by this script. You can have any number of databases specified; encapsilate each database name in single quotes and separate each database name by a space.

# Example:
# databases=( '__DATABASE_1__' '__DATABASE_2__' )
databases=('xxx' 'yyy')

# The host name of the MySQL database server; usually 'localhost'
db_host=""

# The port number of the MySQL database server; usually '3306'
db_port="3306"

# The MySQL user to use when performing the database backup.
db_user=""

# The password for the above MySQL user.
db_pass=""

# Directory to which backup files will be written. Should end with slash ("/").
backups_dir=""

backups_user="root"

# Date/time included in the file names of the database backup files.
datetime=$(date +'%Y-%m-%d-%H:%M:%S')

for db_name in ${databases[@]}; do
        # mysqldump -u $db_user -h $db_host -P $db_port --password=$db_pass --single-transaction --set-gtid-purged=OFF $db_name | gzip -9 > $backups_dir$db_name--$datetime.sql.gz
        mysqldump  -u $db_user -h $db_host -P $db_port --password=$db_pass --single-transaction --no-tablespaces  --no-create-info --no-data --no-create-db --routines --skip-triggers $db_name | gzip -9 > $backups_dir$db_name--$datetime.sql.gz

done

# Set appropriate file permissions/owner.
chown $backups_user:$backups_user $backups_dir*--$datetime.sql.gz
chmod 0400 $backups_dir*--$datetime.sql.gz

# start to clean old dbhackup file from localdrive
find $backups_dir -type f -name '*.sql.gz' -mtime +28 -exec rm {} \;