<span id="be594756e4"></span><address id="bfaf40bb5c"><style id="bgd3ef37dd"></style></address><button id="bla9ad91e9"></button>
                        

          • 博客访问: 5742696
          • 博文数量: 605
          • 用 户 组: 普通用户
          • 注册时间: 2013-10-19 21:50
          个人简介

          高山仰止http://my.csdn.net/wzy0623王工的博客 参加炼数成金培训输入 Dataguru培训优惠码 DR50,报名立减50%固定学费。 http://edu.dataguru.cn/

          文章分类

          全部博文(605)

          文章存档

          2018年(10)

          2017年(67)

          2016年(104)

          2015年(144)

          2014年(220)

          2013年(60)

          分类: IT综合

          2015-04-12 10:53:09

          小花狸ITPUB/CU博客备份工具
          由golang编写,运行在Linux环境(CentOS 6测试通过)

          1.编译博客备份工具的源码
          [lihuilin@lihuilin src]$ go build Backup.go

          2.找到自己的第一篇博客.(最开始写的那篇)

          这块做的有点傻,我是从第一篇博客的内容,通过正则找到后续的博客地址
          其实完全可以从最后一篇博客往前推..

          3.执行备份工具,备份的路径是/tmp/itpub

          一定要改linux open file的设置

          [lihuilin@lihuilin src]$ ulimit -n 10000
          [lihuilin@lihuilin src]$ ./Backup --path /29254281/viewspace-775659/
          2015/04/12 10:02:57 /29254281/viewspace-775660/
          2015/04/12 10:02:58 /29254281/viewspace-775663/
          2015/04/12 10:02:58 /29254281/viewspace-775788/
          2015/04/12 10:02:59 /29254281/viewspace-775791/
          ...
          2015/04/12 10:04:41 /29254281/viewspace-1482375/
          2015/04/12 10:04:41 /29254281/viewspace-1518312/
          2015/04/12 10:04:42 一共备份博客313篇

          未审核通过的文章和设置为仅自己可见的文章,不能备份.



          源码如下:
          package main

          import (
              "flag"
              "github.com/opesun/goquery"
              "io"
              "log"
              "net/http"
              "os"
              "regexp"
              "strconv"
              "strings"
          )

          const (
              _ITPUB = ""
              _PATH  = "/tmp/itpub"
          )

          var (
              i int
          )

          func main() {
              url := flag.String("path", "", "blog path")
              flag.Parse()
              getContent(*url)
              log.Printf("一共备份博客" + strconv.Itoa(i) + "篇")
          }

          func getContent(url string) {
              i++
              page, _ := goquery.ParseUrl(url)
              title := page.Find("title").Text()
              base := _PATH + "/" + title + "/"
              os.MkdirAll(base, 0777)

              htmlfile, _ := os.Create(base + title + ".html")
              defer htmlfile.Close()

              reg, _ := regexp.Compile("[^\"]*.png")
              piclist := reg.FindAllString(page.Html(), -1)

              //下载图片
              for _, pic := range piclist {
                  if !strings.HasPrefix(pic, "/") {
                      continue
                  }
                  dir := pic[0:strings.LastIndex(pic, "/")]
                  picResp, _ := http.Get(_ITPUB + pic)
                  defer picResp.Body.Close()
                  os.MkdirAll(base+dir, 0777)
                  picfile, _ := os.Create(base + pic)
                  defer picfile.Close()
                  io.Copy(picfile, picResp.Body)
              }
              htmlContent := reg.ReplaceAllString(page.Html(), ".$0")
              htmlContent = strings.Replace(htmlContent, "href=\"/css/", "href=\""+_ITPUB+"/css/", -1)
              io.WriteString(htmlfile, htmlContent)

              nextBlog, _ := regexp.Compile("下一篇:.*\"")
              nextUrl := nextBlog.FindString(htmlContent)
              if nextUrl == "" {
                  return
              }
              log.Println(_ITPUB + nextUrl[21:len(nextUrl)-1])
              getContent(_ITPUB + nextUrl[21:len(nextUrl)-1])
          }


          缘起
          4月9日ITPUB发生了重大的线上事故,丢失了一天的数据.

          原文如下:
          2015年4月9日ITPUB博客重大失误道歉信
          尊敬的各位ITPUB博主:
             
                经过昨天博客技术团队的确认,我不得不告诉大家这个消息,并代表我们的团队诚心的向大家致歉,在此不奢求能得到大家的体谅,只愿今后,能更谨慎努力的为大家服务,以微薄之力弥补大家辛苦写作的损失!
             
               2015年4月9日15点47分20秒时由于博客上线了一个快速删除广告文及用户的功能,未测试妥当后上线的直接操作,导致了有史以来第一次无法挽回的错 误及损失,当天所有数据彻底无法找回,服务器上的备份是4月9日零晨2点的内容。具体损失内容的时间段为:4月9日02:00- 17:40所发的内容找不回来啦!真的对不住大家,在此说任何理由都是苍白的,最终结果是这样的!作为一个技术社区的博客,我深知这种错误是遭受鄙视的, 但我只能祈祷这期间发出的博文,博主自己是有备份的!


                我更深知,4月9日02:00- 17:40期间所发博文丢失,是一个重大失误!对于我们自己更是需要深刻的反思!



           博客运营
               2015年4月10日09:37 
          作为一个刚入行的DBA,我反复的将这个道歉信读了很多遍.
          出现这个事故的原因有三
          1.没有经过完备的测试或者根本没有测试
          2.遇到了一个愚蠢的研发
            很有可能一个分支没有where,导致了全部删除
          3.同时遇到了一个愚蠢的DBA(大哥,都是干DBA的,小弟完全没有说您的意思,我主要是想引以为戒,您多担待)
            在恢复全备的时候,没有往前推进binlog或者没有设置binlog

          仔细考察这几个因素,我们单位也存在类似的风险
          大部分程序没有经过测试.全凭开发的功力.但是人员素质却可能参差不齐
          Oracle采用的是Expdp每天一个备份,出现问题也是丢失一天的数据.
          而且我对于前推binlog也不熟..一旦发生问题..不敢想

          维护这个博客,我花了很多时间和精力..
          不仅把他当作网络记事本和分享的平台.
          更从中理解了数据对于用户的意义.
          己所不欲勿施于人
          自己不想丢数据,更要以保护自己数据的心态,维护用户的数据.


          DBA最不能失手的就是备份和恢复...
          而有的时候,我感觉自己还是没有从开发的角色转换过来..

          这个事故给我以非常大的警醒.
          下阶段加紧推进
          1.集中备份,集中复制,集中监控
          2.演练推进binlog
          3.每周测试备份有效性
          4.搭建Oracle DataGuard,并使用Rman备份

          我希望自己永远不要写这样的道歉信,不做那个愚蠢的人.
          阅读(50482) | 评论(3) | 转发(3) |
          给主人留下些什么吧!~~

          lhrbest2016-03-29 21:02:53

          有QQ吗?留个联系方式,有事找

          lhrbest2016-03-29 21:02:51

          有QQ吗?留个联系方式,有事找

          lhrbest2015-04-13 10:10:46

          不知道ITPUB 博客的后台数据库是什么?MySQL不太懂,但是oracle的话理论上是不会丢失一天的数据的。

          评论热议
          请登录后评论。

          登录 注册