Linux下Mysql自动备份脚本

末蓝、 2023-06-07 10:41 323阅读 0赞

1.编写mysqlbackup.sh脚本

  1. #!/bin/bash
  2. #备份的路径
  3. backup_dir=/mysql_backup
  4. dd=`date +%Y%m%d%H%M%S`
  5. username=root
  6. password="123456"
  7. #库名
  8. database_name=cbaddk
  9. mysqldump --no-defaults --single-transaction -u $username -p$password $database_name> $backup_dir/backup$dd.sql
  10. #删除30天前备份
  11. find $backup_dir -mtime +30 -name "*.sql" -exec rm -rf {} \;

2.添加可执行权限:

  1. 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 即可

  1. #!/bin/bash
  2. #备份的路径
  3. backup_dir=/mysql_backup
  4. dd=`date +%Y%m%d%H%M%S`
  5. username=root
  6. password="123456"
  7. #库名
  8. database_name=cbaddk
  9. mysqldump --no-defaults --single-transaction -u $username -p$password -h 127.0.0.1 -P 3307 $database_name> $backup_dir/backup$dd.sql
  10. #删除30天前备份
  11. find $backup_dir -mtime +30 -name "*.sql" -exec rm -rf {} \;

(4)查看备份sql文件是否正常,能否正常导入数据库

3.添加计划任务

确认crontab是否安装:

执行 crontab 命令如果报 command not found,就表明没有安装

执行命令(编辑某个用户的cron服务 ):

crontab -e

输入以下内容并保存:

  1. 59 23 * * * /mysql/mysqlbackup.sh > /dev/null 2>&1

注: /mysql/mysqlbackup.sh为脚本位置

crontab 格式说明

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbnlmMjAxNg_size_16_color_FFFFFF_t_70

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

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

发表评论

表情:
评论列表 (有 0 条评论,323人围观)

还没有评论,来说两句吧...

相关阅读

    相关 mysql每天自动备份脚本

    mysql自动完全备份和增量备份? 真实的环境下还原数据库,是绝对不能在线上机操作的,你在其它机器还原BINLOG后,再把你需要的库单独导出还原到线上机器 另外,站长团