说明:

我这里要把MySQL数据库存放目录/var/lib/mysql下面的pw85数据库备份到/home/mysql_data里面,并且保存为mysqldata_bak_2011_11_03.tar.gz的压缩文件格式(2011_11_03是指备份执行时当天的日期),然后只保留最近7天的备份,再把备份文件通过ftp服务器上传到指定空间,并且在远程ftp服务器只保留最近7天的备份。
实现步骤:
1、创建保存备份文件的目录:/home/mysql_data
cd /home
mkdir mysql_data
2、创建备份脚本文件:/home/mysql_data/mysql_databak.sh
cd /home
cd  mysql_data
touch mysql_databak.sh
vim  mysql_databak.sh
输入以下内容:
系统运维  www.osyunwei.com  温馨提醒:qihang01原创内容©版权所有,转载请注明出处及原文链接

#!/bin/sh

DUMP=/usr/bin/mysqldump #mysqldump备份文件执行路径

OUT_DIR=/home/mysql_data #备份存放路径

LINUX_USER=root #系统用户名

DB_NAME=pw85 #要备份的数据库名字

DB_USER=root #数据库账号 注意:非root用户要用备份参数 --skip-lock-tables,否则可能会报错

DB_PASS=123456 #数据库密码

DAYS=7 #DAYS=7代表删除7天前的备份,即只保留最近7天的备份

cd $OUT_DIR #进入备份存放目录

DATE=`date +%Y_%m_%d` #获取当前系统时间

OUT_SQL="$DATE.sql" #备份数据库的文件名

TAR_SQL="mysqldata_bak_$DATE.tar.gz" #最终保存的数据库备份文件名

$DUMP -u$DB_USER -p$DB_PASS $DB_NAME --default-character-set=utf8 --opt -Q -R --skip-lock-tables> $OUT_SQL #备份

tar -czf $TAR_SQL ./$OUT_SQL #压缩为.tar.gz格式

rm $OUT_SQL #删除.sql格式的备份文件

chown $LINUX_USER:$LINUX_USER $OUT_DIR/$TAR_SQL #更改备份数据库文件的所有者

find $OUT_DIR -name "mysqldata_bak*" -type f -mtime +$DAYS -exec rm {} \; #删除7天前的备份文件(注意:{} \;中间有空格)

deldate=` date -d -7day +%Y_%m_%d ` #删除ftp服务器空间7天前的备份

ftp -n<<!

open 192.168.1.1 21 #打开ftp服务器。21为ftp端口

user admin 123456 #用户名、密码

binary #设置二进制传输

cd mysqlbak #进入ftp目录(注意:这个目录必须真实存在)

lcd /home/mysql_data #列出本地目录

prompt

mput mysqldata_bak_$date.tar.gz mysqldata_bak_$date.tar.gz #上传目录中的文件

mdelete mysqldata_bak_$deldate.tar.gz mysqldata_bak_$deldate.tar.gz #删除ftp空间7天前的备份

close #关闭

bye ! #退出

3、修改文件属性,使其可执行
  chmod +x /home/mysql_data/mysql_databak.sh
4、修改/etc/crontab   #添加计划任务
系统运维  www.osyunwei.com  温馨提醒:qihang01原创内容©版权所有,转载请注明出处及原文链接

vi /etc/crontab     #在下面添加  
       30 1 * * * root  /home/mysql_data/mysql_databak.sh   #表示每天凌晨1点30执行备份
5、重新启动crond使设置生效
   /etc/rc.d/init.d/crond restart
   chkconfig crond on #设为开机启动
   service crond start #启动

每天你在/home/mysql_data目录下面可以看到类似mysqldata_bak_2011_11_03.tar.gz这样的压缩文件,如果需要恢复文件的时候,只需要把这个文件解压即可。
解压缩命令:tar -zxvf  mysqldata_bak_2011_11_03.tar.gz

CentOS Linux自动备份MySQL数据库到远程FTP服务器并删除指定日期前的备份Shell脚本的更多相关文章

  1. Debian下自动备份文件并上传到远程FTP服务器且删除指定日期前的备份Shell脚本

    说明:  1.备份目录/home/osyunwei下面所有的文件到/home/osyunweibak里面,并且保存为osyunwei20120701.tar.gz的压缩文件格式(2012_07_01是 ...

  2. Linux下通过脚本自动备份Oracle数据库并删除指定天数前的备份

    说明: Oracle数据库服务器操作系统:CentOSIP:192.168.0.198端口:1521SID:orclOracle数据库版本:Oracle11gR2 具体操作: 1.root用户登录服务 ...

  3. Linux下自动备份Oracle数据库并删除指定天数前的备份

    说明: Oracle数据库服务器 操作系统:CentOS IP:192.168.0.198 端口:1521 SID:orcl Oracle数据库版本:Oracle11gR2 具体操作: 1.root用 ...

  4. Mongodb自动备份数据库并删除指定天数前的备份

    1.创建Mongodb数据库备份目录 mkdir -p /home/backup/mongod_bak/mongod_bak_now mkdir -p /home/backup/mongod_bak/ ...

  5. Mysql 数据库允许远程连接 服务器连接错误 Host 'XXX' is not allowed to connect to this MySQL server

    如果连接数据库的时候出现这个问题 Host 'XXX' is not allowed to connect to this MySQL server 说明 Mysql数据库 不允许远程连接, 需要修改 ...

  6. Linux下自动备份MySQL数据库并上传到远程FTP服务器

    Linux下自动备份MySQL数据库并上传到远程FTP服务器且删除指定日期前的备份Shell脚本 说明:  1.备份MySQL数据库存放目录/var/lib/mysql下面的xshelldata数据库 ...

  7. 170208、用Navicat自动备份mysql数据库

    数据库备份很重要,很多服务器经常遭到黑客的恶意攻击,造成数据丢失,如果没有及时备份的话,后果不堪设想. 一:备份的目的: 做灾难恢复:对损坏的数据进行恢复和还原 需求改变:因需求改变而需要把数据还原到 ...

  8. 用Navicat自动备份mysql数据库

    以下文章转载自https://blog.csdn.net/u013628152/article/details/54909885,放在自己的博客园以供后面方便查询 —————————————————— ...

  9. 定时备份mysql数据库的shell脚本

    最近项目需要定时备份mysql数据库的数据,根据需求写了一份定时备份mysql数据库的脚本. -h mysql的地址  默认为localhost -P 端口号  默认为3306 -u 用户  默认为r ...

随机推荐

  1. CMS - 认识目录

    Tips:如果网页图片(文字)看不清,请按CTRL+鼠标滚轮 一个完整的小程序模板目录结构如下! 本章节给出的建议: 1.推荐使用flex布局 2.其它图片路径建议引入网络路径(tabBar不支持网络 ...

  2. photoshop 前端常用技巧

    1.将图片转换成 png 格式 并且 使背景透明 (1)用矩形选框工具选取一块区域 (2)右键 选择 ‘变换选区’ 进行微调 F8 查看尺寸 (3)复制图层(ctrl+c) ->新建文件(ctr ...

  3. AnimalWindow使用,实现界面动态消失

    http://m.blog.csdn.net/blog/shufac/24932279 http://blog.sina.com.cn/s/blog_455245fc01000a42.html Ani ...

  4. 【微信支付】分享一个失败的案例 跨域405(Method Not Allowed)问题 关于IM的一些思考与实践 基于WebSocketSharp 的IM 简单实现 【css3】旋转倒计时 【Html5】-- 塔台管制 H5情景意识 --飞机 谈谈转行

    [微信支付]分享一个失败的案例 2018-06-04 08:24 by stoneniqiu, 2744 阅读, 29 评论, 收藏, 编辑 这个项目是去年做的,开始客户还在推广,几个月后发现服务器已 ...

  5. Web优化 --利用css sprites降低图片请求

    sprites是鬼怪,小妖精,调皮鬼的意思,初听这个高端洋气的名字我被震慑住了,一步步掀开其面纱后发觉非常easy的东西.作用却非常大 什么是CSS Sprites CSS Sprites是指把网页中 ...

  6. linux getopt函数详解

    getopt(分析命令行参数)   表头文件 #include<unistd.h> 定义函数 int getopt(int argc,char * const argv[ ],const ...

  7. Jquery-easyui的默认图标的使用,以及如何添加自己想要的图标

    easyui的默认图标有以下这些: .icon-blank{ background:url('icons/blank.gif') no-repeat; } .icon-add{ background: ...

  8. &lt;十二&gt;读&lt;&lt;大话设计模式&gt;&gt;之状态模式

    对于状态模式,<<大话设计模式>>是以人从上班到下班到加班的状态来展开讲述的.状态模式事实上就是某一个对象在某个过程或者时间的一个状态记录,可是这个状态的顺序不能发生变化.在程 ...

  9. C++中的getopt的用法

    getopt的用法 getopt被用来解析命令行选项参数.就不用自己写东东处理argv了. 点击(此处)折叠或打开 #include <unistd.h> extern char *opt ...

  10. Leetcode(58)题解:Length of Last Word

    https://leetcode.com/problems/length-of-last-word/ 题目: Given a string s consists of upper/lower-case ...