Courier

command module
v0.0.0-...-1eded09 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 5, 2022 License: GPL-2.0 Imports: 12 Imported by: 0

README

Courier 是一个简单的mysql/mongo数据库导入导出和更改工具;本工具支持以下功能:

  1. 对所有含有uid字段的数据进行导入导出,修改uid操作;
  2. 对特定数据库的特定表支持根据某一字段查询导出导入;
  3. 对某一库的某些表支持全表导出。
部署位置
xs5
port:8383
cs13
port:8383

配置:conf/config.yaml

mysqlexport:   
  srv1:             #导出环境的数据库server
    host: 127.0.0.1 #导出数据库的host
    port: 3306      #导出数据库的port
    username: root  #导出数据库的用户名
    password:       #导出数据库的密码
    key:            #根据特定字段导出,一个标志,具体字段见下
      column1:      #字段1
        db1:        #包含column1的数据库1
          - table1  #包含colmn1的表1
          - table2
      column2:      #字段2
        db1:        #包含column2的数据库1
          - table1  #包含colmn2的表1
          - table2
      all:          #key为all时,表示全表数据导出
        - db1       #表所在的数据库列表
        - db2

使用:

本地编译
go mod tidy -compat="1.17"
go run main.go handler.go
docker编译
cd docker && ./run_docker.sh
导出uid字段数据

需要qssh到xs5上面执行:curl命令详见xs5:/home/qboxserver/courier/_package/script/curl_export.sh

http://localhost:8383/api/data/by/uid
POST
{
    "uid":[uid1,uid2...]
}
导出非uid字段数据

非uid字段以及对应要导出的库和表要提前写好在config.yaml中

http://localhost:8383/api/data/by/key
POST
{
    "key":column_name,
    "value":column_value
}

导出成功后默认生成:tar_data/data_xx.tar.gz,且自动上传到了bucket

全表数据导出
http://localhost:8383/api/data/import/database
POST
{
    "database_type":1, # 1表示mysql;2表示mongo
    "database": "trade",    #要导入表所在库
    "tables":["price_items", "price_tables"]#导出整表返回的文件信息
}
导入数据(uid),返回结果为脱敏后的uid

导入,脱敏,删除操作需要qssh到cs13上面执行:curl命令详见cs13:/home/qboxserver/courier/_package/script/

http://localhost:8383/api/data/import
POST
{
    "file":"data_xxx.tar.gz"    #这儿的文件名是执行导出接口返回的文件信息
    "uid":[uid1]
}
导入数据(非uid)
http://localhost:8383/api/data/import
POST
{
    "file":"data_xxx.tar.gz"    #这儿的文件名是执行导出接口返回的文件信息
}

对含有某些uid字段的数据进行删除
http://localhost:8383/api/data/delete
POST
{
    "uid":[uid1,uid2] #选择对哪些uid进行脱敏 
}
全表数据导入
http://localhost:8383/api/data/import/database
POST
{
    "database_type":1, # 1表示mysql;2表示mongo
    "database": "trade",    #要导入表所在库
    "file":"data_table_202206141104.tar.gz" #导出整表返回的文件信息
}
通过命令调用,可以通过Courier -h查看使用方式

参数说明

-m,methodb调用的接口:
"1"/"export_by_uid";
"2"/"export_by_key";
"3"/"export_table";
"4"/"import";
"5"/"import_database";
"6"/"delete";

-u uid(通过uid导出和删除数据)
-key key(通过key-value导出数据)
-value value(通过key-value导出数据)"
-type dbtype(通过指定库和表名来对指定数据库种类全表导出)
-db dbname(通过指定库和表名来对指定数据库种类全表导出)
-table tablename(通过指定库和表名来对指定数据库种类全表导出)
-path path(通过路径来导入数据库)

eg:
Courier -m 1 -u 2222 -u 2223 //通过uid 为2222和2223导出数据库
Courier -m 2 -k order_hash -v 2223 //通过key为order_hash 导出值为2223的数据

框架:

├─common  日志和一些工具函数
├─conf    yaml配置文件
├─config  viper的初始化
├─dao     对配置的底层解析接口
├─data    数据库的导出/导入目录
├─handler 网页的接口层
├─log     日志存放地点
├─model   需要用到的结构体数据
├─resp    结构返回的结构体
└─service 对dao层封装的服务结构

TODO
  • bucket 换成私有的
  • 生成的账号补全手机号以及其他信息
  • 不要通过调接口实现,而是通过加参数实现
  • 脱敏在数据导出时完成
  • 解决一个线上uid对应一个测试环境uid的问题

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL