该脚本是一个bash shell脚本,用于自动化MySQL数据库的备份和清理工作。脚本的核心功能是定期备份MySQL服务器上除特定几个系统数据库(如`information_schema`、`mysql`、`performance_schema` 和 `tower_debug21`)之外的所有数据库,并将备份文件进行压缩存储。以下是脚本中的关键知识点:
1. **脚本执行环境**:
- 使用`#!/bin/bash`作为脚本的启动行,指定使用Bash shell解释器来执行。
- 定义了两个路径变量:`BIN_DIR`指向MySQL命令行工具的目录(`/usr/bin`),`BACKUP_DIR`用于存储备份文件的临时目录(`/tmp/mysql`).
2. **时间戳和目录管理**:
- 使用`DATE=`表达式获取当前日期并添加到备份文件名中,格式化为`YYYYMMDD`。
3. **连接到MySQL服务器**:
- 设置MySQL的主机地址(`HOST`)、用户名(`USER`)、密码(`PASSWORD`),用于后续的数据库操作。
4. **获取本地服务器IP地址**:
- 通过ifconfig命令获取服务器的IP地址,但在这个脚本中并未实际使用,可能是为了在远程备份时获取主机信息。
5. **列出所有数据库并筛选备份**:
- 使用`SHOW DATABASES`命令获取所有数据库名,然后遍历这些数据库,只备份非系统数据库。
6. **备份单个数据库**:
- 对于每一个符合要求的数据库,调用`mysqldump`命令创建备份,然后通过`gzip`压缩保存到`BACKUP_DIR`下,备份文件格式为`$DB_NAME$DATE.sql.gz`.
7. **清理过期备份**:
- `do_delete`函数用于删除超过7天的`.sql.gz`备份文件。它会查找指定目录下符合条件的文件并删除,如果成功则输出删除成功的消息,否则输出失败信息。
8. **脚本执行流程**:
- 脚本首先运行备份操作,然后调用`do_delete`函数处理过期备份。整个过程按照预设的逻辑顺序执行。
这个脚本对于维护一个MySQL数据库的备份策略非常有用,特别是当需要定期备份且希望自动清理旧备份时。然而,注意在实际部署时,可能需要根据具体环境调整脚本中的数据库用户名、密码、主机地址以及清理策略(比如备份保留期限)。同时,安全方面需确保备份脚本的执行权限设置正确,以防止未经授权访问数据库。