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 可查看当前所有的定时任务列表!