Linux定时备份MySQL

Linux定时备份MySQL

  • 1.备份脚本
  • 2.赋予脚本执行权限
  • 3.添加定时任务
  • 4. crontab定时任务表达式
  • 5. 常见问题
  • 6. linux软连接
  • 7.参考链接:

阅读本文您将了解到:

  1. 定时备份数据库
  2. linux定时任务
  3. crontab定时任务表达式
  4. shell脚本变量命名规则
  5. linux 软连接的使用
  6. vim使用技巧

1.备份脚本

用vim编辑器进行编辑,如果不熟练的小伙伴可以点击下方链接哟~
Vim入门技巧&常用命令整理

#!/bin/bash

#保存备份个数,备份31天数据
number=31
#备份保存路径
backup_dir=/home/mysqlbackup/xxx
#日期
dd=`date +%Y-%m-%d-%H-%M-%S`
#备份工具 不要有空格,可用全路径名,或者使用软连接
tool=mysqldump
#用户名
username=root
#密码
password=pwd
#将要备份的数据库
database_name=xxx

#如果文件夹不存在则创建
if [ ! -d $backup_dir ]; 
then     
    mkdir -p $backup_dir; 
fi

#简单写法  mysqldump -u root -ppwd xxx > /home/mysqlbackup/xxx/xxx-$filename.sql
# 格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 --database 数据库名 > 文件名.sql
$tool -u $username -p$password $database_name > $backup_dir/$database_name-$dd.sql

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

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

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

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

2.赋予脚本执行权限

chmod 777 脚本名.sh

在这里插入图片描述

3.添加定时任务

用vim编辑器进行编辑
Vim入门技巧&常用命令整理

# 1. 添加定时任务
crontab -e

# 2. 设置每天晚上3点执行
0 3 * * * sh /你的路径/mysqlbackup.sh

# 3. 查看任务列表
crontab -l

在这里插入图片描述
在这里插入图片描述

4. crontab定时任务表达式

crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语 chronos(χρνο),原意是时间。通常,crontab储存的指令被守护进程激活, crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。

用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,
它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:

minute hour day month week command

其中:
minute:  表示分钟,可以是从0到59之间的任何整数。
hour:    表示小时,可以是从0到23之间的任何整数。
day:     表示日期,可以是从1到31之间的任何整数。
month:   表示月份,可以是从1到12之间的任何整数。
week:    表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
command: 要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。


# 实例1:每1分钟执行一次my.sh
* * * * * my.sh

# 实例2:每小时的第5和第15分钟执行
5,15 * * * * my.sh

# 实例3:在上午8点到12点的第5和第15分钟执行
5,15 8-12 * * * my.sh

# 实例4:每隔两天的上午8点到12点的第5和第15分钟执行
5,15 8-12 */2  *  * my.sh

# 实例5:每周一上午8点到12点的第5和第15分钟执行
5,15 8-12 * * 1 my.sh

5. 常见问题

如果遇到sql文件是生成了,但是里面没有内容
说明你配置的mysqldump不能全局访问,
建议使用全路径尝试一下,
或者在/usr/bin目录下创建mysqldump命令软连接.
注意在变量=之间不要有空格

shell脚本变量命名须遵循如下规则:
•首个字符必须为字母(a-z,A-Z)。
•中间不能有空格,可以使用下划线(_)。
•不能使用标点符号。
•不能使用bash里的关键字(可用help命令查看保留关键字)。

6. linux软连接

软链接又叫符号链接,这个文件包含了另一个文件的路径名。
可以是任意文件或目录,可以链接不同文件系统的文件。

# 将mysqldump命令软连接到/usr/bin目录下.这样就可以在控制台直接访问mysqldump命令了.

# 语法: ln -s 源文件 目标文件。 
ln -s /usr/local/mysql/bin/mysqldump /usr/bin

7.参考链接:

MySQL定时备份数据库

Linux Crontab 定时任务

mysqldump 定时任务 执行后备份的文件为空

MySql定时备份脚本

crontab百度百科

Shell变量赋值语句不能有空格

MySQL数据库基础备份

MySQL之mysqldump的使用

linux 软连接的使用

你可能感兴趣的:(MySQL)