David 发表于 2013-3-29 09:03:32

CentOS 系统实现自动备份MYSQL 发往远程FTP

网站最重要的是数据,可明天手动备份还是太繁琐了,而且有时候怕忘记,尤其是使用VPS的朋友,说不定那天IDC 跑路了就完蛋了,所以今天给大家准备一个自动备份MYSQL数据库的脚本,网上有不少类似的脚本,不过测试了几个不是这个问题就是那个问题,要不就只能备份单个数据库导出SQL文件。反正不是特别理想。晚上选择了其中一个测试了半天无法上传,翻阅资料做了一点点修改,OK了,以完全可以正常使用了,就分享出来供大家参考吧。先说说这个脚本的特点,这个脚本的好处是直接打包DATA 文件,当然就可以包含DATA 文件夹下所有数据库,和其他的倒出.SQL 文件相比,更方便只要MYSQL版本一样,备份出来的数据,还原的只要停止MYSQL 服务 直接复制到 VPS mysql data 文件夹下覆盖即可,最大的大优势是,数据库大点也不会出现SQL 导入失败的情况。  使用脚本需要注意的地方:脚本最好不要在本地用记事本打开编辑,测试发现很容易出现权限问题导致无法运行,最好直接下载到VPS用IV 编辑,或者可以直接用VI创建个脚本 再把代码复制进去都可以。
  一. VPS直接下载
  wget http://www.vpsck.com/soft/mysql_databak.sh
  脚本内容及说明
  #!/bin/sh /etc/init.d/mysqld stop #执行备份前先停止MySql,防止有数据正在写入,备份出错 date=` date +%Y%m%d ` #获取当前日期 DAYS=3 #DAYS=3代表删除3天前的备份,即只保留最近3天的备份 BK_DR=/home/mysql_data #备份文件存放路径 DB_DR=/www/wdlinux/mysql-5.1.63/var #数据库所有在路径 LINUX_USER=root #系统用户名 tar zcvf $BK_DR/mysql_data$date.tar.gz $DB_DR #备份数据 /etc/init.d/mysqld start #备份完成后,启动MySql chown -R $LINUX_USER:$LINUX_USER $BK_DR #更改备份数据库文件的所有者 find $BK_DR -name "mysql_data*" -type f -mtime +$DAYS -exec rm {} \; #删除3天前的备份文件(注意:{} \;中间有空格) deldate=` date -d -3day +%Y_%m_%d ` #删除ftp服务器空间3天前的备份 ftp -v -n 192.168.0.1 << END #这个地方写你远程FTP 的IP或者域名 user vpsbf 123456 #用户名、密码 binary #设置二进制传输 cd mysqlbak #进入ftp目录(注意:这个目录远程FTP里先手动创建) lcd /home/mysql_data #列出本地目录 prompt mput mysql_data$date.tar.gz mysql_data$date.tar.gz #上传目录中的文件 mdelete mysql_data$deldate.tar.gz mysql_data$deldate.tar.gz #删除ftp空间7天前的备份 close #关闭 bye #退出 END
  二.在VPS上创建 /home/mysql_data 文件夹
  ssh 创建也可以 命令创建也可以随便
  三.编辑脚本相关内容
  vi /root/mysql_databak.sh
  vi 命令使用暂时没有写说明如果不会先搜索下吧 过两天写个教程
  四.给予脚本执行权限
  chmod +x /home/mysql_databak.sh
  五.利用crontab 实现定时自动运行(如果没有装可以先搜索下安装流程日后补教程)
  vi /etc/crontab
  在下面添加运行代码
  10 2 * * * root /home/mysql_databak.sh
  表示每天凌晨2点10分执行备份
  六.测试脚本是否设置成功
  ./mysql_databak.sh
  如果成功的话FTP 和VPS 相应的目录下就会产生备份好了的文件了
  七.设置 crontab
  chkconfig crond on #设为开机启动 service crond start #启动任务
  通过一系列的设置,你的数据就非常安全了,明天定时备份。不怕任何意外导致数据丢失了。
页: [1]
查看完整版本: CentOS 系统实现自动备份MYSQL 发往远程FTP