# 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 运行效果图

#### 使用组件
*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
```