浙北英语网
标题:
CentOS 系统实现自动备份MYSQL 发往远程FTP
[打印本页]
作者:
admin
时间:
2013-4-5 08:56
标题:
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 #启动任务
通过一系列的设置,你的数据就非常安全了,明天定时备份。不怕任何意外导致数据丢失了。
#!/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.1.2 << END #改成你自己的FTP服务器
user usavpsbf 0123456 #用户名、密码
binary #设置二进制传输
cd mysqlbak #进入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空间3天前的备份
close #关闭
bye #退出
END
复制代码
欢迎光临 浙北英语网 (https://zbenglish.net/)
Powered by Discuz! X3.3