Linux shell实现每天定时备份mysql数据库

每天定时备份mysql数据库任务,删除指定天数前的数据,保留指定天的数据;

需求:
 
1,每天4点备份mysql数据;
 
2,为节省空间,删除超过3个月的所有备份数据;
 
3,删除超过7天的备份数据,保留3个月里的 10号 20号 30号的备份数据;

#创建shell文件
vim backup_mysql.sh

mysqldump -uroot -p123456 --all-databases > /data/dbdata/mysqlbak/`date +%Y%m%d`.sql
find /data/dbdata/mysqlbak/ -mtime +7 -name '*[1-9].sql' -exec rm -rf {} \;
find /data/dbdata/mysqlbak/ -mtime +92 -name '*.sql' -exec rm -rf {} \;

#创建定时任务
crontab –e
0 4 * * * /data/dbdata/backup_mysql.sh

以上所述就是本文的全部内容了,希望对大家能够熟练掌握shell脚本有所帮助。

时间: 2015-03-28

Linux shell操作mysql数据库深入解析

在shell开发中,很多时候我们需要操作mysql数据库(比如:查询数据.导出数据等),但是我们又无法进入mysql命令行的环境,就需要在shell环境中模拟mysql的环境,使用mysql相关命令,本文总结几种shell操作mysql的方法,供大家参考. 方案1 复制代码 代码如下: mysql -uuser -ppasswd -e"insert LogTable values(...)" 优点:语句简单缺点:支持的sql相对简单 方案2准备一个sql脚本,名字为update.sql

Shell下实现免密码快速登陆MySQL数据库的方法

背景 当我们在 Shell 下想要通过 mysql-client 登陆到 MySQL 数据库的时候,我们总是需要非常麻烦的输入一次又一次的密码. 而且,如果你的 root 密码是高度随机的话(LastPass大法好),那么你登陆一次 MySQL 数据库的成本就会非常大了. 通常我们登陆数据库的时候都是这样登陆的,如下 root@imlonghao:~# mysql -uroot -p Enter password: 那么,有没有一个办法能够既安全,又能简单方便地登陆到数据库去呢? 方法 答案当然

利用Shell脚本实现远程MySQL自动查询

下面这个脚本是一个简单用来执行远程数据库查询的命令,相信大家都能看得懂,这对于有些需要每天自动检查数据库或是执行某些语句的兄弟,是很有帮助的,只要稍加修改就可以 复制代码 代码如下: #!/bin/shHOST=192.168.5.40USER=abcPASS=123456QUERY=`mysql -h$HOST -u$USER -p$PASS << EOFuse testdb;select * from person where name='LiMing';exitEOF`echo $QUE

利用shell脚本遍历文件夹内所有的文件并作整理统计的方法

环境: Ubuntu下采用shell脚本实现 案例简述: 文件夹内有许多子文件夹,这里需要自动读取所有的文件,包括他们的地址和文件名.通过观察文件名的规律,按照一定的规则裁剪出文件名的某一部分,该部分为数字,则根据数字的大小统计该文件夹内文件在各个数据段的数量. 1.这里写一个函数,实现对文件夹内所有文件名的读取,采用的方法是递归! #!/bin/bash #folder="./test" function readfile () { #这里`为esc下面的按键符号 for file

shell脚本通过expect实现自动单边无密登录功能

最近项目需要实现单边无密登录,去网上搜索了下相关文章,实践之后发现几乎都不能用.于是结合expect的使用方法自行写了一个,通过验证可用.现在总结在这供需要的朋友参考. 代码如下: EXPECT=/usr/bin/expect $EXPECT <<EOF spawn ssh-keygen -t rsa expect "*ssh/id_rsa*" { send -- "\r" expect "*for no passphrase*" s

Android 使用Shell脚本截屏并自动传到电脑上

Android设备用久了,截屏是个麻烦事.更麻烦的是通过qq传到电脑上,倒腾半天.其实用adb命令就可以截屏,然后写个pull的语句就可以拉到电脑上了.文件名为capture.sh, 内容如下: #! /bin/bash adb shell screencap -p /sdcard/test.png #adb pull /sdcard/test.png ~/Desktop/test.png dir=~/Desktop/ curr=`date "+%Y-%m-%d %H:%M:%S"`

利用Shell 脚本解决DDOS攻击问题

思路:主要利用 awk ,if结构,sort,uniq #!/bin/bash FilePath="access.log" awk '{print $1}' $FilePath | sort -rn | uniq -c >ip_count.log cat ip_count.log | while read text ####读取文件内容,以行为单位 do echo $text count=`echo $text | awk '{print $1}' ` ip=`echo $tex

shell脚本定时备份MySQL数据库数据并保留指定时间

公司用到的MySQL数据库,经常有同事通过一顿骚操作把一些关键的配置数据误删,每次恢复都要花上不少时间,于是写了个shell脚本,结合corntab每天凌晨备份数据库,并保留7天. 同样的备份脚本也可用于生产环境MySQL数据库定时备份. 环境:CentOS 7.5 / MySQL 5.7 #!/bin/sh # 数据库账号信息 DB_USER="root" DB_PWD="root" DB_HOST="127.0.0.1" DB_PORT=&q

使用shell脚本每天对MySQL多个数据库自动备份的讲解

Linux下使用shell脚本,结合crontab,定时备份MySQL下多个数据库,每次备份的数据存放于以日期命名的文件夹中,同时删除超过设定的备份保留时间的数据. 以下例子设定备份保留时间为1个月(-1month),可根据需求修改 #! /bin/bash # MySQL用户 user="root" # MySQL密码 userPWD="123456" # 需要定时备份的数据表列表 dbNames=(db_test1 db_test2 db_test3 db_te

监视磁盘使用情况的Shell脚本(本地+远程)

monitordisk.sh如下 复制代码 代码如下: #!/bin/bash #Updated:2008-03-03 PM By:leif(liangliwen@163.com) EMAIL=/usr/local/bin/email /bin/df -h >/tmp/df.txt USE=`df -H | grep -o [0-9]*% | grep -o '[0-9]\+'` for i in $USE do if (( $i > 95 )) then $EAMIL -s "WA

使用Linux的Shell脚本定时处理MySQL超时

最近一段时间,我刚刚进入一家新公司,并接手了这里的一个站点,由于这个站点的架构设计不太合理,导致MySQL的压力始终很大,经常出现超时的Locked进程,于是编写了一段Linux的Shell脚本来定时kill掉这些进程.脚本如下: 复制代码 代码如下: #!/bin/bash mysql_pwd="xxxxxx" #mysql的root密码 mysql_exec="/usr/local/mysql/bin/mysql"tmp_dir="/tmp"

利用Shell脚本循环读取文件中每一行的方法详解

前言 本文主要给大家介绍了关于使用Shell脚本循环读取文件每一行的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 一.使用for循环 for line in `cat filename` do echo $line done 或者 for line in $(cat filename) do echo $line done 二.使用while循环 while read -r line do echo $line done < filename While循环中rea