版权声明:本文为博主原创文章,转载请注明出处 https://blog.csdn.net/vkingnew/article/details/82710546
概述:
go-mydumper是多线程的备份工具,支持mysql,兼容mydumper工具。简化了mydumper的使用。
1.安装golang:
yum -y install golang golang-src golang-bin
或者使用tar.bz包安装也可以。
1.1.自行下载golang包
wget https://dl.google.com/go/go1.10.3.linux-amd64.tar.gz
1.2.golang安装和测试:
tar -xzvf go1.10.3.linux-amd64.tar.gz -C /usr/local/
设置环境变量:
# source /etc/profile.d/go.sh
# cat /etc/profile.d/go.sh
export PATH=$PATH:/usr/local/go/bin
# go version
go version go1.10.3 linux/amd64
2.获取源代码并编译:
#cd /usr/local
#git clone https://github.com/xelabs/go-mydumper.git
#cd go-mydumper
#make
# make
--> go get...
go get github.com/xelabs/go-mysqlstack/driver
go get github.com/stretchr/testify/assert
go get github.com/pierrre/gotestcover
make[1]: Entering directory `/usr/local/go-mydumper'
--> go get...
go get github.com/xelabs/go-mysqlstack/driver
go get github.com/stretchr/testify/assert
go get github.com/pierrre/gotestcover
make[1]: Leaving directory `/usr/local/go-mydumper'
--> Building...
go build -v -o bin/mydumper src/mydumper/main.go
github.com/xelabs/go-mysqlstack/sqlparser/depends/bytes2
github.com/xelabs/go-mysqlstack/sqlparser
common
command-line-arguments
go build -v -o bin/myloader src/myloader/main.go
github.com/xelabs/go-mysqlstack/sqlparser/depends/bytes2
github.com/xelabs/go-mysqlstack/sqlparser
common
command-line-arguments
go build -v -o bin/mystreamer src/mystreamer/main.go
github.com/xelabs/go-mysqlstack/sqlparser/depends/bytes2
github.com/xelabs/go-mysqlstack/sqlparser
common
command-line-arguments
--> Testing...
make[1]: Entering directory `/usr/local/go-mydumper'
go test -race -v common
=== RUN TestWriteReadFile
--- PASS: TestWriteReadFile (0.00s)
=== RUN TestEscapeBytes
--- PASS: TestEscapeBytes (0.00s)
=== RUN TestDumper
2018/09/15 04:40:46.613925 dumper.go:35: [INFO] dumping.database[test].schema...
...
编译之后有几个二进制文件。/usr/local/go-dumper/bin
# tree /usr/local/go-mydumper/bin/
/usr/local/go-mydumper/bin/
├── gotestcover
├── mydumper
├── myloader
└── mystreamer
3.帮助信息解释:
./mydumper --help
Usage: ./mydumper -h [HOST] -P [PORT] -u [USER] -p [PASSWORD] -db [DATABASE] -o [OUTDIR]
-F int
Split tables into chunks of this output file size. This value is in MB (default 128)
数据备份输出文件块大小,默认是每块128MB.
-P int
TCP/IP port to connect to (default 3306)
MySQL端口号,默认是3306.
-db string
Database to dump
待备份的数据库。
-h string
The host to connect to
连接的主机IP或者域名
-o string
Directory to output files to
数据文件的目录
-p string
User password
用户的密码
-s int
Attempted size of INSERT statement in bytes (default 1000000)
INSERT语句中包含的大小,默认是100万。
-t int
Number of threads to use (default 16)
备份的并发线程数,默认是16.
-table string
Table to dump
备份的表。
-u string
Username with privileges to run the dump
必要权限的用户名。
恢复数据的参数:
./myloader --help
Usage: ./myloader -h [HOST] -P [PORT] -u [USER] -p [PASSWORD] -d [DIR] [-o]
-P int
TCP/IP port to connect to (default 3306)
端口号,默认是3306.
-d string
Directory of the dump to import
恢复数据的目录。
-h string
The host to connect to
要恢复数据的主机或IP.
-o Drop tables if they already exist
overwrite 复写存在的表。
-p string
User password
密码。
-t int
Number of threads to use (default 16)
数据恢复的并发数,默认16个。
-u string
Username with privileges to run the loader
数据恢复的用户名.
--流备份的工具:
# ./mystreamer --help
Usage: ./mystreamer -h [HOST] -P [PORT] -u [USER] -p [PASSWORD] -db [DATABASE] -2h [DOWNSTREAM-HOST] -2P [DOWNSTREAM-PORT] -2u [DOWNSTREAM-USER] -2p [DOWNSTREAM-PASSWORD] [-2db DOWNSTREAM-DATABASE] [-o]
-2P int
Downstream TCP/IP port to connect to (default 3306)
-2db string
Downstream database, default is same as upstream db
-2engine string
Downstream table engine
-2h string
The downstream host to connect to
-2p string
Downstream user password
-2u string
Downstream username with privileges to run the streamer
-P int
Upstream TCP/IP port to connect to (default 3306)
-db string
Database to stream
-h string
The upstream host to connect to
-oDrop tables if they already exist
-p string
Upstream user password
-s int
Attempted size of INSERT statement in bytes (default 1000000)
-t int
Number of threads to use (default 16)
-table string
Table to stream
-u string
Upstream username with privileges to run the streamer
说明:-2开头的是目标库的信息,包含用户名、主机名、密码、端口号、数据库名、存储引擎。
源库需要的基本的用户名、主机名、密码、端口号、数据库、数据库名、表名。
此外还需要关注的参数-o(overwrite) -s还有线程数-t.
4.示例:
1.备份数据库:
./mydumper -h 10.19.85.149 -u backup -p backup -P 3306 -db tpcds -t 32 -o /data/backup/
2.数据恢复:
./myloader -h 10.19.189.221 -u backup -p backup -o -P 3308 -t 32 -d /data/backup/
3.流式数据备份:
./mystreamer -h 10.19.85.149 -u backup -p backup -P 3306 -db tpcds -2h 10.19.189.221 -2u backup -2p backup -2P 3308 -2db tpcds
5.应用:
https://github.com/radondb
https://github.com/pingcap/tidb
参考:
https://github.com/xelabs/go-mydumper
https://github.com/maxbube/mydumper