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   /mysqlbackup.sh为脚本位置

crontab格式说明

Linux下Mysql自动备份脚本_第1张图片

 crontab -l 列出某个用户cron服务的详细内容

crontab -r 删除某个用户的cron服务(慎用)

你可能感兴趣的:(mysql)