Skip to content

Commit 154fa82

Browse files
committed
精简命令
1 parent e0b2e58 commit 154fa82

File tree

6 files changed

+38
-12
lines changed

6 files changed

+38
-12
lines changed

README.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,33 @@
11
# mysqldump
2+
3+
go语言版mysqldump, goroutine并发导sql, 比navicat等工具导出sql快!
4+
5+
支持 **mysql5.x版本**
6+
7+
此项目为: https://github.com/xelabs/go-mydumper 项目的修改优化版
8+
9+
如下变更:
10+
- 加入mysql source组合源命令(-m), 传参 -m user:pass@host:port 即可定义mysql源, 简化传参
11+
- 加入排除指定table数据导出sql 命令(-exclude)
12+
- 修复视图view导出后无法导入的问题
13+
- 优化日志格式和运行时间的显示
14+
- 合并导入和导出sql功能到同一个文件(-i/-o来分区导入sql还是导出sql)
15+
- 提供所有平台的release编译文件
16+
17+
## 命令行
18+
```
19+
./mysqldump -h [HOST] -P [PORT] -u [USER] -p [PASSWORD] -db [DATABASE] -o [OUTDIR] -i [INDIR] -m [MYSQL_SOURCE] -exclude [EXCLUDE_TABLE]
20+
-h string 数据库连接地址
21+
-P int 数据库连接端口(不传则默认3306)
22+
-u string 连接用户名
23+
-p string 连接密码
24+
-m string 数据库连接信息, 格式 user:pass@host:port(此命令用来简化连接数据库传参信息)
25+
-db string 指定的数据库名, 导出sql模式必要, 导入sql模式可选,导入模式时为指定要导入的数据库名(不一定和原来导出的数据库名一致)
26+
-o string 导出数据库到指定的目录路径, 此命令存在则指定为导出sql模式
27+
-i string 指定要导入的sql所在目录路径, 此命令存在则指定为导入sql模式
28+
-exclude string 指定要排除的table数据(只导表结构),多个排除的表用英文','隔开
29+
-d 导入sql模式时存在相同名字表格时是否先删除(覆盖), 存在此命令则表示先删除同名表格
30+
-t int 指定线程数(默认16)
31+
-table string 导出特定的表
32+
-s int insert语句的大小(单位byte, 默认1000000)
33+
```

common/common.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ type Args struct {
1919
Database string
2020
Table string
2121
Outdir string
22-
SessionVars string
2322
ExcludeTables string
2423
Threads int
2524
ChunksizeInMB int

common/pool.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,17 +36,14 @@ func (conn *Connection) StreamFetch(query string) (driver.Rows, error) {
3636
}
3737

3838
// NewPool creates the new pool.
39-
func NewPool(log *xlog.Log, cap int, address string, user string, password string, vars string) (*Pool, error) {
39+
func NewPool(log *xlog.Log, cap int, address string, user string, password string) (*Pool, error) {
4040
conns := make(chan *Connection, cap)
4141
for i := 0; i < cap; i++ {
4242
client, err := driver.NewConn(user, password, address, "", "utf8")
4343
if err != nil {
4444
return nil, err
4545
}
4646
conn := &Connection{ID: i, client: client}
47-
if vars != "" {
48-
conn.Execute(vars)
49-
}
5047
conns <- conn
5148
}
5249

dumper.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ func allTables(conn *common.Connection, args *common.Args) []string {
129129

130130
// Dumper used to start the dumper worker.
131131
func Dumper(log *xlog.Log, args *common.Args) {
132-
pool, err := common.NewPool(log, args.Threads, args.Address, args.User, args.Password, args.SessionVars)
132+
pool, err := common.NewPool(log, args.Threads, args.Address, args.User, args.Password)
133133
common.AssertNil(err)
134134
defer pool.Close()
135135

loader.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ func restoreTable(log *xlog.Log, table string, conn *common.Connection) int {
142142

143143
// Loader used to start the loader worker.
144144
func Loader(log *xlog.Log, args *common.Args) {
145-
pool, err := common.NewPool(log, args.Threads, args.Address, args.User, args.Password, args.SessionVars)
145+
pool, err := common.NewPool(log, args.Threads, args.Address, args.User, args.Password)
146146
common.AssertNil(err)
147147
defer pool.Close()
148148

main.go

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ import (
1414
const Pattern = `\w+:\w+@[\w.]+:\d{0,5}$`
1515

1616
var (
17-
flagOverwriteTables bool
18-
flagChunksize, flagThreads, flagPort, flagStmtSize int
19-
flagUser, flagPasswd, flagHost, flagSource, flagDb, flagTable, flagOutputDir, flagInputDir, flagExcludeTable, flagSessionVars string
17+
flagOverwriteTables bool
18+
flagChunksize, flagThreads, flagPort, flagStmtSize int
19+
flagUser, flagPasswd, flagHost, flagSource, flagDb, flagTable, flagOutputDir, flagInputDir, flagExcludeTable string
2020

2121
log = xlog.NewStdLog(xlog.Level(xlog.INFO))
2222
)
@@ -33,7 +33,6 @@ func init() {
3333
flag.IntVar(&flagChunksize, "F", 128, "Split tables into chunks of this output file size. This value is in MB")
3434
flag.IntVar(&flagThreads, "t", 16, "Number of threads to use")
3535
flag.IntVar(&flagStmtSize, "s", 1000000, "Attempted size of INSERT statement in bytes")
36-
flag.StringVar(&flagSessionVars, "vars", "", "Session variables")
3736
flag.StringVar(&flagSource, "m", "", "Mysql source info in one string, format: user:password@host:port")
3837
flag.StringVar(&flagExcludeTable, "exclude", "", "Do not dump the specified table data, use ',' to split multiple table")
3938
flag.BoolVar(&flagOverwriteTables, "d", false, "Drop tables if they already exist(import dump mode)")
@@ -102,7 +101,6 @@ func main() {
102101
Threads: flagThreads,
103102
StmtSize: flagStmtSize,
104103
IntervalMs: 10 * 1000,
105-
SessionVars: flagSessionVars,
106104
OverwriteTables: flagOverwriteTables,
107105
ExcludeTables: flagExcludeTable,
108106
}

0 commit comments

Comments
 (0)