# mgo-backup **Repository Path**: tym_hmm/mgo-backup ## Basic Information - **Project Name**: mgo-backup - **Description**: mgo备份工具(自动备份需程序配置) - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-11-09 - **Last Updated**: 2022-01-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### mongodb数据备份与恢复 #### 说明 程序可手动全量备分、指定备份及定时备份。使用定时备份时,因业务项目存在分表需通过手动方式进行配置。
案例demo`controller/BackUp.go` => `DayBackUp`方法 #### 执行逻辑 服务备份后会将mgo备分成 bason及json文件,当某个集合完整备份后自动打包成压缩文件并上传到oss #### 任务开启 > 默认运行服务时不会执行任何任务,需通过web请求方式开启任务
> 通过使用浏览器打包指定url开启任务
> api说明 ```cgo #主面板 http://xxxx:7070/ #开启定时备份任务 #http://xxxx:7070/dayBack ``` #### 解包 程序源文件 `unPack.go`
已打包好的工具 `tool/unpack/windows` >使用说明 >通过windows 通过cmd执行 将还源打包文件 ```cgo unpack.exe -f=<文件> -d=<保存数据的文件> ``` |参数|说明| |---|---| |-f| 需解包的文件, 需要跟unpack.exe在同一个目录| |-d| 保存数据的目录, 目录不存在会自动创建, 与需unpack.exe在同一目录 | #### 数据恢复 解包出来的文件可通过 mongorestore 进行恢复, 具体命令见mongodb ``` #无用户名验证 mongorestore -h 127.0.0.1:27017 --dir ./data/fn_data_center_data_center_request_info_2021_12_21 #有用户名验证 mongorestore -h 127.0.0.1:27017 --authenticationDatabase admin --port 27017 -u admin ./data/fn_data_center_data_center_request_info_2021_12_21 ``` #### 使用方式 1 配置说明 > 默认端口使用7070,如需修改可参见./conf/GlobalConf.go ```cgo DATA_DIR = "data" //数据保存目录,保存mgo临时备份及数据库文件 DATA_DB_NAME = "mgoBack"//数据库文件名称 SEVER_PORT = 7070//服务端口 //每天定时备份时间(24小时值, 今天备份昨天的) DAY_BACK_HOUR = 3 //每天定时任务执行时间 //打包配置 //打包文件后缀 PACK_FILE_SUBFIX = "ar" //阿里云oss配置 OSS_ALIYUN_ENPOINT = "xxx" OSS_ALIYUN_ACCESS_KEY_ID = "xxxx" OSS_ALIYUN_ACCESS_KEY_SECRET = "xxx" //oss桶 OSS_BUCKET = "fn-backup" //oss桶目录 OSS_BUCKET_BACK_UP_DIR = "dataCenter" //分片上传大小配置(M) CHUNK_SIZE int64 = 1024 ``` 2 开启服务,本地调式 ```cgo go run main.go ``` 3 运行效果图 ![运行效果图](./demo.png) #### 使用组件 *mongodb:* > mgo 驱动 > [文档 https://gopkg.in/mgo.v2](https://gopkg.in/mgo.v2) > ``` go get -u gopkg.in/mgo.v2 ``` *mongo-tool* >修改官方组件,增加监听结果返回满足现有业务。 ``` go get -u gitee.com/tym_hmm/mongo-tool ``` *timer-task* >定时任务组件,满足每天某一时刻执行及循环执行,采用回调方式监听任务 ```cgo go get -u gitee.com/tym_hmm/timer-task ``` *db_store* > 基于boltdb 入口封装,不段完善且立志于封装好用的gorm ```cgo go get -u gitee.com/tym_hmm/db_store ``` *阿里云OSS上传组件* >对阿里云oss二次封装,只需几行代码即可上传到oss,可做分片上传及单文件上传 ```cgo go get -u gitee.com/tym_hmm/oss-aliyun-client ```