search.png
关于我
menu.png
mysql 定时备份

概述

众所周知,数据就是生命,如果数据被误删或者丢失,那就哭都来不及了,因此数据库的定时备份很重要。本篇文章介绍了如何对mysql进行定时备份。

详细过程

  1. 修改配置设置密码

高版本mysql是无法使用命令 -p 直接传递密码的,因为不安全。所以需要在配置文件中的 mysqldump 加入账户密码信息,之后运行 mysqldump 就会自动传入了:

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

在配置文件的 [mysqldump] 下边加入

host = localhost
user = root
password = 'root'
  1. 编写脚本

主要使用了 mysqldump 工具:

#!/bin/bash

mysqldump youdatabase| gzip > /home/backup_mysql/youdatabase_$(date +%Y%m%d_%H%M%S).sql.gz

以上的数据库替换成你对应的数据库即可。

之后尝试执行脚本,看是否可以成功备份。如果备份成功代表脚本编写的没问题。

  1. 加入 cron 计划

sudo crontab -e

选择 nano 进入编辑

加入一行:

0 0 * * * /usr/local/backup/bkDatabaseName.sh

0 0 * * * 表示每天零点运行,注意修改脚本为你的脚本位置

之后ctrl + x完成编辑,enter退出

sudo crontab -l 看看是否有刚刚加入的任务。

ok 到这里计划任务就成功加入了。

  1. 优化脚本,增加删除过期备份的功能,日志记录的功能

脚本参考了网络上其它同学的脚本修改而成,拿去改一下就可以用了,分享给大家:

#!/bin/bash

#备份保存路径
backup_dir=/home/xxx/backup_mysql
#保存备份个数,备份31天数据
number=31
#将要备份的数据库
database_name=xxx

#写创建备份日志
echo "create $backup_dir/$database_name-$dd.dump" >> $backup_dir/log.txt

mysqldump momospace | gzip > $backup_dir/$database_name_$(date +%Y%m%d_%H%M%S).sql.gz

#找出需要删除的备份
delfile=`ls -l -crt $backup_dir/*.sql.gz | awk '{print $9 }' | head -1`

#判断现在的备份数量是否大于$number
count=`ls -l -crt $backup_dir/*.sql.gz | awk '{print $9 }' | wc -l`

if [ $count -gt $number ]
then
  #删除最早生成的备份,只保留number数量的备份
  rm $delfile
  #写删除文件日志
  echo "delete $delfile" >> $backup_dir/log.txt
fi

版权声明

知识共享许可协议 本文章由作者“衡于墨”创作,转载请注明出处,未经允许禁止用于商业用途

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
发布时间:2022年06月05日 21:42:34

评论区#

还没有评论哦,期待您的评论!

关闭特效