免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6711 | 回复: 5
打印 上一主题 下一主题

(原创)Mysql数据库异地自动备份方案 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-05-23 16:40 |只看该作者 |倒序浏览
工作中可能碰到的数据库自动备份需求。
技术也不太复杂,主要就是mysqldump和crontab,不过还是结合网上的资料以及自己的理解自己整理一篇,供后来者参考。不知道发在这里合适不?


                           Linux下自动实现Mysql数据库的异地备份方案
项目需求:为防止公司网站重要的数据丢失,必须实现服务器Mysql数据库的备份。根据本公司情况,从技术手段上实现异地日备份来提高安全性。

服务器环境:Linux Enterprise Server 2.6.9-42.Elsmp,Mysql 5.1.11-beta-log

配置步骤:

A:数据库的备份;以下脚本可实现mysql数据库的备份,也是官方所推荐的,即采用mysqldump导出mysql数据库到一个文件当中。
/usr/local/mysql/bin/mysqldump -uroot –p123456789 a1m > $(date +%Y%m%d)-a1m.sql
/usr/local/mysql/bin/mysqldump -uroot –p123456789 Asia1Market > $(date +%Y%m%d)-Asia1Market.sql

说明:/usr/local/mysql/bin/mysqldump 表示Mysql备份命令所在的绝对路径;-uroot表示用root用户登陆Mysql数据库;-p123456789 表示root用户的密码;a1m表示需要备份的数据库;$(date +%Y%m%d)-a1m.sql表示备份后自动生成的文件,格式为20070305-a1m.sql以下如此。

B:数据库文件的打包压缩;这样可以见减小数据包的大小加速数据在网络上传输的速度。
tar -zcvf $(date +%Y%m%d)mysql.tar.gz ./$(date +%Y%m%d)*

C:实现FTP的自动化;
Host=111.11.11.11  //指定上传数据库文件的FTP服务器
Username=e00021     //FTP用户名,在备份服务器上开通一帐户具有写的权限
Passwd=123456789   //FTP 密码
echo "open $Host
      user $Username $Passwd
      bin
      cd ./mysqlbak
      prompt off
      mput $(date +%Y%m%d)mysql.tar.gz
      printf "\n"
      close
      bye"|ftp -i –n

D:删除临时文件;为了节省服务器上宝贵的空间,可以用以下脚本删除曾经在服务器上生成的临时文件
rm -rf $(date +%Y%m%d)-a1m.sql  $(date +%Y%m%d)-Asia1Market.sql $(date +%Y%m%d)mysql.tar.gz
通过把以上几种技术结合起来就可实现数据库的自动备份以及上传到指定FTP服务器上去,实现数据的异地备份,从而提高数据的冗余度和安全行。然后结合Linux下强大的自动执行任务程序crontab就可以实现每天服务器自动的进行以上命令而不需要人为的干涉。

E:自动化crontab的使用
首先结合以上脚本定制出适合本公司的一段shell脚本放在服务器根目录下/mysqlbak,命名为mysqlbak.sh,并且赋予可执行的权限。脚本内容如下:
-------------------------------------------------------------------------------------------------------
#!/bin/bash
#Ftp Informaition
Host=111.11.11.11
Username=backup
Passwd=123456789
#start mysqldump back
/usr/local/mysql/bin/mysqldump -uroot –p123456789 a1m > $(date +%Y%m%d)-a1m.sql
/usr/local/mysql/bin/mysqldump -uroot –p123456789 Asia1Market > $(date +%Y%m%d)-Asia1Market.sql
#start tar
tar -zcvf $(date +%Y%m%d)mysql.tar.gz ./$(date +%Y%m%d)*
#start ftp
echo "open $Host
      user $Username $Passwd
      bin
      cd ./mysqlbak
      prompt off
      mput $(date +%Y%m%d)mysql.tar.gz
      printf "\n"
      close
      bye"|ftp -i -n
#del the old file
rm -rf $(date +%Y%m%d)-a1m.sql  $(date +%Y%m%d)-Asia1Market.sql $(date +%Y%m%d)mysql.tar.gz
#rm -rf $(date +%Y%m%d)*
然后就可以结合crontab命令实现日备份。具体操作如下:
用root登陆系统编辑crontab文件末尾添加如下一行,即每天的23:20执行以上脚本
#crontab –e
20 23 * * 0-6 root cd /mysqlbak;./mysqlbak.sh
这样,服务器就可以自动的每天实现重要数据的异地备份。

[ 本帖最后由 linux_admin 于 2007-5-23 16:43 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-05-23 17:22 |只看该作者
测试中.........

论坛徽章:
0
3 [报告]
发表于 2007-05-23 17:27 |只看该作者
还不如利用MYSQL的主从模式实现实时备份。

论坛徽章:
0
4 [报告]
发表于 2007-05-23 18:14 |只看该作者
原帖由 llzqq 于 2007-5-23 17:27 发表于 3楼  
还不如利用MYSQL的主从模式实现实时备份。


关键是这个是针对我公司情况做的,两台服务器都在不同的内网放,在开额外的3306端口比较麻烦。

论坛徽章:
0
5 [报告]
发表于 2007-05-27 11:43 |只看该作者
我现在是更喜欢换成 rsync 了,尽量不用 rcp 和 ftp 了。

[ 本帖最后由 水鬼 于 2007-5-27 11:45 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2010-03-29 20:27 |只看该作者
不错,正在找一些远程异地应用的案例,这个正好。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP