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服务(慎用)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值