vi mysql_backup.sh 会在当前目录下生成一个mysql_backup.sh文件并进入编辑
按i进行编辑
脚本内容
- #!/bin/bash
- # -------------------------------------------------------------------------------
- # FileName: mysql_backup.sh
- # Describe: Used for database backup
- # Revision: 1.0
- # Date: 2022/08/03
- # Author: way
-
- # 设置mysql的登录用户名和密码(根据实际情况填写)
- mysql_user="root"
- mysql_password="67697"
- mysql_host="127.0.0.1"
- mysql_port="3306"
-
- echo "备份开始:" $(date +"%Y-%m-%d %H:%M:%S")
-
- # 备份全部数据库
- mysqldump -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password dongzhebk > mysql_backup_$(date +"%Y-%m-%d %H:%M:%S").sql
-
- find $backup_dir -mtime +7 -type f -name '*.sql' -exec rm -rf {} \;
- echo "备份成功:" $(date +"%Y-%m-%d %H:%M:%S")
sh mysql_backup.sh
结果:
crontab -e
将
00 00 * * * sh /usr/local/mysql/backup/mysql_backup.sh > /usr/local/mysql/backup/mysql_backup.log 2>&1
写进去
shell脚本中的变量不能用空格隔开,这是我遇到的问题,已经解决了
把mysql_host=localhost改成mysql_host=127.0.0.1
这也是我遇到的问题,已经解决了,原因是localhost登录不需要密码,一开始是报密码的错误,后来我才醒过味,去除了密码,结果报这个,应该就是localhost没有权限吧,我去数据库mysql的user表里面看了一下,
可以看出localhost没有user,也没有password,所以我们使用127.0.0.1这个host登录
我把备份文件输入到 logs/mysql_backup.sql时报没有logs这个文件夹,可是我明明就有
mysqldump -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password dongzhebk > logs/mysql_backup.sql
报:
find: ‘/logs’: No such file or directory