crontab + rsync + nas + mysqldump 实现服务器定时自动备份

by pxz


发布于: 2015-03-25 所属分类: linux 服务器 数据库 mysql 标签: 备份  309


<h2 id="h2--"><a name="本文要实现的功能是:" class="reference-link"></a><span class="header-link octicon octicon-link"></span>本文要实现的功能是:</h2><ol> <li>外网正式服务器定时备份数据库和网站文件到/backup/目录, 并以年-月-日-小时命名, 数据库压缩成gz文件,网站文件分券压缩, 每个分券250m</li><li>内网的服务器定时从外网服务器的/backup目录同步文件到内网的nas服务器.</li></ol> <h3 id="h3--centos-"><a name="一. 服务器端配置(centos)" class="reference-link"></a><span class="header-link octicon octicon-link"></span>一. 服务器端配置(centos)</h3><p><strong>1 . 备份数据库和程序文件到服务器备份目录 /backup/, 数据库使用mysqldump备份, 程序文件使用 tar 压缩备份</strong></p> <p>数据库备份脚本autobak_mysqldata.sh示例:</p> <pre><code>#/bin/sh nowdate=`date -d today +"%Y-%m-%d"` nowdatehour=`date -d today +"%Y-%m-%d-%H"` echo "$nowdatehour" spath=/backup/mysqldata/$nowdate if [ ! -d "$spath" ]; then mkdir $spath fi mysqldump -hlocalhost -uroot -p123456 --databases mydb --skip-lock-tables | gzip > $spath/mydb_$nowdatehour.sql.gz echo "bak mysql data finish" </code></pre><p>网站文件备份脚本autobak_websitefile.sh示例:</p> <pre><code>#/bin/sh nowdate=`date -d today +"%Y-%m-%d"` nowdatehour=`date -d today +"%Y-%m-%d-%H"` echo "$nowdatehour" spath=/backup/filedata/$nowdate if [ -d "$spath" ]; then echo "has backup tody" else mkdir $spath tar -cjf - /data/www/websitepath | split -b 250m - $spath/www_website_com_$nowdatehour.tar.bz2. echo "back filedata finish" fi </code></pre><p><strong>2. 配置crontab定时脚本</strong></p> <pre><code>#每天备份mysql 0 1 * * * root (/root/bin/autobak_mysqldata.sh >> /root/bin/autobak_mysqldata.log) #每天备份网站文件 0 1 * * * root (/root/bin/autobak_websitefile.sh >> /root/bin/autobak_websitefile.log) </code></pre><h3 id="h3--ubuntu-"><a name="二. 客户端(ubuntu)" class="reference-link"></a><span class="header-link octicon octicon-link"></span>二. 客户端(ubuntu)</h3><p><strong>1 . 挂载nas备份目录到/media/nas_bak</strong></p> <pre><code>mount -t cifs -o username=zsg,password=123456 //192.168.1.110/nas_bak /media/nas_bak </code></pre><p><strong>2 . 同步备份文件到/media/nas_bak目录</strong></p> <p>同步脚本示例:</p> <pre><code>#/bin/sh nowdate=`date -d today +"%Y-%m-%d"` #同步mysql备份文件 rsync -e 'ssh -p16622' -cavr --progress --timeout=600 --bwlimit=500 root@122.122.122.122:/backup/mysqldata/$nowdate /media/nas_bak/mysqldata/ #同步websitefile备份文件 rsync -e 'ssh -p16622' -cavr --progress --timeout=100 --bwlimit=500 root@122.122.122.122:/backup/filedata/$nowdate /media/nas_bak/filedata/ </code></pre><p>这里使用rsync进行文件同步, 下面是一些参数解释:</p> <p>122.122.122.122 为服务器ip地址<br>—bwlimit=500 是限制下载速度,防止机房带宽耗尽<br>-c 打开校验开关,强制对文件传输进行校验<br>-a 归档模式,表示以递归方式传输文件,并保持所有文件属性<br>-v 详细模式输出<br>-r 对子目录以递归模式处理<br>—progress 在传输时显示传输过程<br>—timeout 超时时间,单位为秒</p> <p><strong>3. 配置同步脚本定时运行</strong></p> <p>凌晨2,3,4点各运行一次, 保证网络不佳的情况下也能顺利把备份文件传输下来</p> <pre><code>0 2 * * * root (/root/bin/mysql_backup_download.sh) 0 3 * * * root (/root/bin/mysql_backup_download.sh) 0 4 * * * root (/root/bin/mysql_backup_download.sh) </code></pre>

发表评论

暂无评论

搜索
用户登陆