慎終如始,則無敗事

道學無止境,誠然心地行,超然於物外,絕待不歸真。

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

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

ITPUB论坛APP

ITPUB论坛APP



APP发帖 享双倍积分

文章分类

全部博文(553)

文章存档

2017年(25)

2016年(104)

2015年(144)

2014年(220)

2013年(60)

微信关注

IT168企业级官微



微信号:IT168qiye



系统架构师大会



微信号:SACC2013

订阅
热词专题
小花狸ITPUB博客备份工具 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 http://blog.itpub.net/29254281/viewspace-775659/
2015/04/12 10:02:57 http://blog.itpub.net/29254281/viewspace-775660/
2015/04/12 10:02:58 http://blog.itpub.net/29254281/viewspace-775663/
2015/04/12 10:02:58 http://blog.itpub.net/29254281/viewspace-775788/
2015/04/12 10:02:59 http://blog.itpub.net/29254281/viewspace-775791/
...
2015/04/12 10:04:41 http://blog.itpub.net/29254281/viewspace-1482375/
2015/04/12 10:04:41 http://blog.itpub.net/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 = "http://blog.itpub.net"
    _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备份

我希望自己永远不要写这样的道歉信,不做那个愚蠢的人.
阅读(24342) | 评论(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的话理论上是不会丢失一天的数据的。

评论热议
请登录后评论。

登录 注册