Linux(Centos)全自动异地备份数据(WEB+Mysql)

文章开始之前,先问下各位站长一个问题:什么东西对于站长是十分重要的?其实对于站长而言,很多东西都是很重要的。但我们现在排除外在因素,把范围缩小到网站系统本身,哪些是非常重要的呢?网站数据就是其中之一了。

网站数据包括程序文件本身、网站运行过程中不断产生的附件数据(图片、文档、视频等)以及数据库文件,三大块总括为网站数据。

以 自己为例,在这两年多的站长经历来看,最让我痛苦的就是某一天起床,一直苦心经营的网站打不开了,检查过DNS也正常,最后询问空间运营商发生什么事了, 获知的结果系:服务器硬盘损坏,所有数据无法恢复(在这备注下:一般小站长买的机器或者空间都很低配置的,所以别想有什么数据备份服务,要就加钱买),结 果就是一阵阵的失落。如果网站刚上线运行不久就发生这样的事或者还不会那么心痛,从头再来也不难。假如是一个运行若干年的网站,突然发生这么一次意外就可 以说是重重一击。

刚成为站长的前几个月,我对数据备份这个事情压根没考虑过,直到有一天在群里看到有位群友痛心的经历——网站彻底崩溃,数据全没!!那是经营了3年多的一个老站,就么倒下了,真是闻者伤心听者落泪(有点夸张了)。

我 看到了这样活生生的样板,不做数据备份的后果很严重。所以我现在总结出一个经验:如果真要用心做一个网站,就一定要做好数据备份工作,而且最好能异地备 份,有些朋友以为在机器本地做了备份就乐了,放心了,那就大错。对于备份数据,又要面临一个实际的问题:每次都自己上服务器把相关的数据打包,然后再用 FTP下载回来吗?这样时间长了就会累,所以今天就以Linux(Centos 5.5)环境讲讲如何实现全自动远程(异地)对全站数据进行备份。

要实现自动远程备份功能需要的关软件有:服务器(本地环境)要安装lftp,远程端要开启FTP服务,对登录的目录有读写权限,具备以上2个条件即可。

如果机器上没有安装lftp这个工具,可以通过以下命令完成:

#yum install lftp

假设把相关的脚本文件存放在/apps/script目录下

#vi /apps/script/autobackup.sh //输入以下内容

#!/bin/bash

#author: www.5ishare.com

echo "backup job start"

#设置要备份的网站目录,即是网站的根目录

file=/apps/wwwdata

#设置本地备份目录,用于存放打包后的文件

backpath=/apps/bkdata/

dbuser=数据库用户名

#数据密码,要记得用单引号将把整个密码引起来,如果密码中有单引号就用双引号,嘿嘿

dbpwd=‘数据库密码‘

dbname=数据库名称

domain=远程端的域名或者IP地址

user=FTP用户名

userpwd=‘FTP用户密码‘

bkdate=$(date +%Y%m%d)

sqlfile_sql=${dbname}_${bkdate}.sql

sqlfile_gz=${dbname}_${bkdate}.tar.gz

sqlfp=${backpath}${bkdate}/$sqlfile_sql

if [ -e $backpath${bkdate} ]

then

echo $backpath is exists.

else

mkdir -p $backpath${bkdate}

fi

#执行数据库备份,/apps/mysql/bin/mysqldump修改为你实际环境的路径

/apps/mysql/bin/mysqldump -u $dbuser -p$dbpwd $dbname > ${sqlfp}

#对备份之后的数据库文件压缩,或者在数据库备份时通过加入参数直接进行压缩

tar zcf $backpath${bkdate}/$sqlfile_gz -C ${backpath}${bkdate} ${sqlfile_sql}

#删除未压缩SQL的文件

rm -f ${sqlfp}

#生成的文件名格式:web_网站目录名_20130419.tar.gz

fn=web_${file##*/}_${bkdate}.tar.gz

tar zcf $backpath${bkdate}/$fn -C ${file%/*} ${file##*/}

#以下操作为FTP自动连接并把本地文件上传到异地服务器上

/usr/bin/lftp ${domain} << END

user ${user} ${userpwd}

lcd ${backpath}

mirror -R ${bkdate}

exit

END

echo "backup job done"

------------分隔线--------------

保存退出之后,为该脚本增加执行权限

#chmod +x /apps/script/autobackup.sh

#crontab –e //添加定时任务,根据具体需求设定备份间隔

#0 4 1,16 * * /apps/script/autobackup.sh

我设定为每月的1日,16日的零辰4点钟执行备份任务。最好不要在大白天做这些操作,因为会让整个系统明显变慢的。

经过以上配置,站长们就不用再愁数据备份的烦恼了,可以说是一劳永逸。以上仅为个人实际应用写,跟其各自的需求可能不大一样,但本质不变,只要稍作修改即可,如果有其它疑问欢迎大家留言交流学习。

时间: 2024-08-07 22:40:31

Linux(Centos)全自动异地备份数据(WEB+Mysql)的相关文章

innobackupex 备份数据搭建 MySQL Slave

简介: 数据量比较大时,使用 innobackupex 备份数据新增 MySQL Slave 节点. 安装 innobackupex 工具,我这里写过一次:http://www.cnblogs.com/wangxiaoqiangs/p/5961413.html 场景: A -> B -> C -> D -> E 一.增加节点 C # 由于有从库 B ,所以我们去 B 上面执行备份 shell > innobackupex --user=xx --password=xx --s

linux centos 恢复 还原 备份 Snapper 快照说明

为什么要使用Snapper快照? 我们可以想像以下场景: 1. 场景一:系统发生意外宕机,工程师无法快速定位问题,业务受到中断,客户十分不满意. 2. 场景二:项目会议上,就是否升级某软件到最新版本,A和B争执不断,A认为为了保持与其他软件的兼容性不能轻易升级,B认为升级能充分利用软件包的最新功能以及享受到新版本性能的提升 3. 场景三:服务器突然无法访问了,导致业务中断,工程师A和B因为追究责任争得不可开交,A说是B修改了某项配置导致的,B反驳说我的配置都是正确的,不可能出错. 但是Snapp

Widnows批处理异地备份数据

@echo off@title Mysql+fileBckupset files=D:\backup\%date:~0,10%.rarset userdb="root"set pwddb="123456"set filepath="D:\wwwroot"set ftpfile="C:\ftp.txt"set ftpname=ftpuserset ftppwd=ftpuserset ftpfiles="%date:~0

linux 定时自动异地备份

目的:每天将A服务器(192.168.0.23)上的文件复制到B服务器(192.168.0.25)上,如果已经存在则不复制. 思路: 首先统一服务器时间,避免出现莫名的错误或者管理上的混乱.用NTP 由于是跨服务器复制,涉及到密码自动录入的问题.需要解决. 用scp复制,会覆盖已经存在的文件,增加无用的工作.改用rsync. 由于要定时自动执行命令,需要用到crontab. 解决步骤: 解决时间同步问题 用ntpdate 192.168.0.253将内部NTP服务器的时间同步过来.为了以后的自动

Linux Centos 迁移Mysql 数据位置

Linux Centos 迁移Mysql 数据位置 由于业务量增加导致安装在系统盘(20G)磁盘空间被占满了, 现在进行数据库的迁移. Mysql 是通过 yum 安装的. Centos6.5Mysql5.1 yum 安装的 mysql 服务 查看 mysql 的安装路径 执行查询 SQL show variables like '%dir%'; datadir 就是数据路径 转移操作 新建 mysql 数据目录 mkdir /data/mysqlData 停止mysql服务 service m

linux 通过scp 复制备份恢复mysql数据表

最近客户有个需求,小弟对于运维的东西也是半瓶醋,所以就果断的摸索了下.折磨了一个晚上终于算是搞定了.因为是两个不同的服务器,本来想用ftp,无奈小弟不是很熟悉,所以就用了scp,但是scp有个问题就是要输入密码才能复制,这下把小弟急坏了,那我这shell脚本咋办, 我的需求是我要每天定时导出三个表,然后通过scp复制到另外一台服务器上,再恢复这三个表的数据. 俗话说,家事找度娘,小弟就翻阅了度娘的衣柜,终于算是找到了件合身的衣服. 该文章链接是这个http://blog.csdn.net/xif

Linux系统crond、rsync、打包备份数据操作实战

Linux系统crond.rsync.打包备份数据操作实战 前面介绍了系统中定时任务.rsync.打包等各种操作,同时也介绍了实际生产环境中的各类案例,今天我们结合这几种功能做一次实战(备份数据) 一:项目背景 某公司WEB服务器数据非常重要,但是如果硬件出现故障,数据就会丢失,人工备份比较费时费力,因些需要进行相关自动备份,并且要备份至指定的备份服务器上 具体备份内容有: 1.网站站点所有目录及相关文件 2.系统相关的配置文件 3.网站的访问日志文件 具体要求如下:(每天0点备份) 1.WEB

Linux CentOS下安装、配置mysql数据库

如果要在Linux上做j2ee开发,首先得搭建好j2ee的开发环境,包括了jdk.tomcat.eclipse的安装(这个在之前的一篇随笔中已经有详细讲解了Linux学习之CentOS(七)--CentOS下j2ee环境搭建),如果要开发web项目,我们当然可以安装一个myeclipse到Linux系统上去,这个安装方法和安装eclipse完全相同,就没有记录下来了,有了jdk.tomcat.eclipse我们就已经能进行我们的程序开发了,但是如果要做一个项目,哪怕是小的不能再小的项目都离不开数

linux下用tar进行数据备份

本机上数据的手工备份 Linux系统上配有功能强大的tar命令,可以灵活地备份数据. tar最初是为了制作磁带备份而设计的把文件和目录备份到磁带中,然后从磁带中提取或恢复文件. 当然,现在我们可以使用tar来备份数据到任何存储介质上. tar非常易于使用稳定可靠,而且在任何 Linux系统上都有这个命令.因此是最经常使用的备份工具. 1.使用tar命令备份数据的格式如下: 上述命令是将/home/html 目录下的所有文件打包成tar文件backup.tar. cvf是tar的命令参数. c代表