本文档介绍了一个MySQL数据库的自动备份脚本,用于每周定期备份数据库并自动清理过期文件。脚本的主要目的是确保数据的安全性和管理效率,通过自动化的方式减少手动操作的繁琐。
首先,脚本定义了几个关键变量:
1. `DT`:使用`date`命令获取当前星期几(0-6,0代表周日),这将作为备份文件的日期标识。
2. `BACKDIR`:设置备份文件的目录路径为`/usr/mysql_backup/`,存放备份文件。
3. `EXTN`:备份文件的扩展名设为`.sql`,表示MySQL数据库的SQL备份文件。
4. `DBUSER` 和 `DBPWD`:分别指定了用于备份的用户名(root)和密码(123456)。
5. `HOSTNAME`:备份将连接到本地主机(127.0.0.1)。
接下来,脚本使用`find`命令查找`BACKDIR`目录下所有mtime(修改时间)大于7天且扩展名为`.gz`的文件,并执行`rm -rf`命令删除它们,以保持目录的整洁和避免过多的旧备份占用空间。
然后,脚本通过`ls -p /usr/mysql/`列出mysql目录下的数据库列表,排除`performance`、`test`以及以`/`开头的特殊目录。接着,使用`for`循环遍历这些数据库:
- 对于每个数据库(`dbname`),调用`mysqldump`命令,以root用户身份,使用指定的密码,执行以下选项:
- `-R`:递归备份所有数据库和表。
- `--events`:包括事件日志在备份中。
- `--ignore-table=mysql.events`:跳过`events`表,因为MySQL自身可能不希望备份这些特殊的内部表。
- `--single-transaction`:为了提高备份速度,采用单事务模式。
- `--skip-lock-tables`:在备份过程中忽略锁,加快备份过程。
- 将备份输出到`BACKDIR`指定的文件夹,文件名包含数据库名、当前星期数和`.sql`后缀。
最后,使用`gzip -f`压缩备份文件,`-f`参数强制执行压缩操作,即使文件已存在也会被压缩。
这个脚本提供了一种实用的方法来自动执行MySQL数据库的备份,并确保只保留最近一周的数据,从而简化了备份管理和灾难恢复流程。通过部署和配置这样的脚本,管理员可以确保数据库数据的连续性和可靠性,同时降低了人工干预的需求。