Linux定时备份mysql数据库

一、MySQL数据备份

1、在MySQL中提供了命令行导出数据库数据以及文件的一种方便的工具mysqldump,我们可以通过命令行直接实现数据库内容的导出dump,首先我们简单了解一下mysqldump命令用法:

  mysqldump -u root -p --databases 数据库1 数据库2 > xxx.sql

2、编辑shell脚本:

    cd /home 进入home目录

 mkdir mysqlbackup  创建文件夹

    vim  mysql_dump_script.sh

#!/bin/bash
#保存备份个数,备份7天数据 number=7 #备份保存路径 backup_dir=/home/mysqlbackup #日期 dd=`date +%Y-%m-%d-%H-%M-%S` #备份工具 tool=mysqldump #用户名 username=root #密码 #password=TankB214 #将要备份的数据库 database_name=gl_gcc #如果文件夹不存在则创建 if [ ! -d $backup_dir ]; then mkdir -p $backup_dir; fi #简单写法

$tool --defaults-extra-file=/etc/my.cnf $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

注意: mysql 5.7 以上版本不能把密码写在shell文件里,因此更改/etc/my.cnf 文件

解决方法:

对于mysqldump 要如何避免出现(Warning:Using a password on the command line interface can be insecure.) 警告信息呢?

① vim /etc/my.cnf

[mysqldump]

user=root(数据库账号)

password=数据库密码

②:wq

③重启mysql服务:service mysql restart

3、修改shell脚本权限,chmod 777  mysql_dump_script.sh  ,这样这个脚本就变成可执行文件, ./mysql_dump_script.sh 可查看是否还有其他报错!

二、开启定时任务,执行数据库备份脚本

 1、crontab -e  进入定时任务编辑页面 

  00 01 * * * /usr/bin/sh /home/mysqlbackup/mysql_dump_script.sh  代表每天凌晨1点执行一次这个脚本。

  其他关于定时任务的资料可参考 https://www.runoob.com/w3cnote/linux-crontab-tasks.html

2、再用 service crond restart 重新启动定时任务服务即可!

3、crontab -l 可查看当前所有的定时任务列表!

posted @ 2020-03-12 10:49  FkLee  阅读(461)  评论(0编辑  收藏  举报