Linux下Mysql自动备份脚本
1.编写mysqlbackup.sh脚本
#!/bin/bash
#备份的路径
backup_dir=/mysql_backup
dd=`date +%Y%m%d%H%M%S`
username=root
password="123456"
#库名
database_name=cbaddk
mysqldump --no-defaults --single-transaction -u $username -p$password $database_name> $backup_dir/backup$dd.sql
#删除30天前备份
find $backup_dir -mtime +30 -name "*.sql" -exec rm -rf {} \;
2.添加可执行权限:
chmod u+x mysqlbackup.sh
测试文件是否可正常执行
./mysqlbackup.sh
注:(1)如果报错 mysqldump: 未找到命令,执行
ln -fs /usr/local/mysql/bin/mysqldump /usr/bin (/usr/local/mysql 路径为mysql安装路径)
(2)如果有警告(Warning: Using a password on the command line interface can be insecure.) 可以忽略。
(3)如果报错
mysqldump: Got error: 1045: Access denied for user ‘root’@’localhost’ (using password: YES) when trying to connect
原因及解决:linux系统中已有3306端口的mysql5.6 现在的mysql是通过docker安装的mysql5.7 所以需要指定端口号 在上面的脚本中 改成:
mysqldump —no-defaults —single-transaction -u $username -p$password -h 127.0.0.1 -P 3307 $database_name> $backup_dir/backup$dd.sql 即可
#!/bin/bash
#备份的路径
backup_dir=/mysql_backup
dd=`date +%Y%m%d%H%M%S`
username=root
password="123456"
#库名
database_name=cbaddk
mysqldump --no-defaults --single-transaction -u $username -p$password -h 127.0.0.1 -P 3307 $database_name> $backup_dir/backup$dd.sql
#删除30天前备份
find $backup_dir -mtime +30 -name "*.sql" -exec rm -rf {} \;
(4)查看备份sql文件是否正常,能否正常导入数据库
3.添加计划任务
确认crontab是否安装:
执行 crontab 命令如果报 command not found,就表明没有安装
执行命令(编辑某个用户的cron服务 ):
crontab -e
输入以下内容并保存:
59 23 * * * /mysql/mysqlbackup.sh > /dev/null 2>&1
注: /mysql/
mysqlbackup.sh为脚本位置
crontab 格式说明
crontab -l 列出某个用户cron服务的详细内容
crontab -r 删除某个用户的cron服务(慎用)
还没有评论,来说两句吧...