浙北英语网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

湖州日报:3名学子入围“希望之星”只有狂人才干的事情!带字幕美国之音慢速英语VOA Special English学英语视频近1000个,自诩为国内最全!适合增加词汇和锻炼听力!点击查看...
查看: 402|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
1#
发表于 2013-4-5 08:56:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
网站最重要的是数据,可明天手动备份还是太繁琐了,而且有时候怕忘记,尤其是使用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_USERLINUX_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. #!/bin/sh
  2. /etc/init.d/mysqld stop #执行备份前先停止MySql,防止有数据正在写入,备份出错
  3. date=` date +%Y%m%d ` #获取当前日期
  4. DAYS=3 #DAYS=3代表删除3天前的备份,即只保留最近3天的备份
  5. BK_DR=/home/mysql_data #备份文件存放路径
  6. DB_DR=/www/wdlinux/mysql-5.1.63/var #数据库路径
  7. LINUX_USER=root #系统用户名
  8. tar zcvf $$$$BK_DR/mysql_data$$$$date.tar.gz $$$$DB_DR #备份数据
  9. /etc/init.d/mysqld start #备份完成后,启动MySql
  10. chown -R $$$$LINUX_USER:$$$$LINUX_USER $$$$BK_DR #更改备份数据库文件的所有者
  11. find $$$$BK_DR -name "mysql_data*" -type f -mtime +$$$$DAYS -exec rm {} \; #删除3天前的备份文件(注意:{} \;中间有空格)
  12. deldate=` date -d -3day +%Y_%m_%d ` #删除ftp服务器空间3天前的备份
  13. ftp -v -n 192.168.1.2 << END #改成你自己的FTP服务器
  14. user usavpsbf 0123456 #用户名、密码
  15. binary #设置二进制传输
  16. cd mysqlbak #进入ftp目录(注意:这个目录需要先手动创建)
  17. lcd /home/mysql_data #列出本地目录
  18. prompt
  19. mput mysql_data$$$$date.tar.gz mysql_data$$$$date.tar.gz #上传目录中的文件
  20. mdelete mysql_data$$$$deldate.tar.gz mysql_data$$$$deldate.tar.gz #删除ftp空间3天前的备份
  21. close #关闭
  22. bye #退出
  23. END
复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|典范英语|Oxford在线词典|在线查词典|每日签到|浙北英语网 ( 蜀ICP备10032068号 )

GMT+8, 2024-11-24 17:11 , Processed in 0.055684 second(s), 29 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表