备份数据库的bash shell脚本
原创
52cxy
11-22 15:12
阅读数:376
#!/bin/bash # MySQL连接地址 MYSQL_HOST="127.0.0.1" # MySQL端口号 MYSQL_PORT="3306" # MySQL用户名 MYSQL_USER="root" # MySQL密码 MYSQL_PASSWORD="123456" # 需要备份的数据库列表,为空时备份所有数据库 DBLIST=(); # 备份路径 BACKUP=/data/backup # 当前时间 DATETIME=$(date +%Y%m%d%H%M%S) if ((${#DBLIST[@]} == 0)); then # 自动获得所有的数据库 DBLIST=`mysql -h${MYSQL_HOST} -P${MYSQL_PORT} -u${MYSQL_USER} -p${MYSQL_PASSWORD} -e "SHOW DATABASES;"` fi # 创建备份目录 mkdir -p "${BACKUP}/$DATETIME" for db in $DBLIST; do # 排除表头和一些无需备份的数据库 if [[ "$db" != "Database" ]] && [[ "$db" != "information_schema" ]] && [[ "$db" != "performance_schema" ]] && [[ "$db" != "mysql" ]] ; then echo "正在备份数据库: $db" # 备份操作 # 如果机器中没有加入 MySQL 环境,请将下面的 mysqldump 改为 mysqldump 文件的全路径 # mysqldump -h${MYSQL_HOST} -P${MYSQL_PORT} -u${MYSQL_USER} -p${MYSQL_PASSWORD} --databases $db > ${BACKUP}/$DATETIME/$db.sql echo "数据库【$db】已备份到:${BACKUP}/$DATETIME/$db.sql 下" fi done # 删除7天前的备份数据 find $BACKUP -type f -mtime +7 -exec rm -f {} \; echo "备份结束~"
共0条评论