mysql 数据库备份迁移
使用 mydumper 做数据备份迁移
备份数据库
- 安装
1# 安装 centos
2yum install https://github.com/mydumper/mydumper/releases/download/v0.11.5/mydumper-0.11.5-1.el7.x86_64.rpm
3yum install https://github.com/mydumper/mydumper/releases/download/v0.11.5/mydumper-0.11.5-1.el8.x86_64.rpm
1# 安装 ubuntu
2apt-get install libatomic1
3wget https://github.com/mydumper/mydumper/releases/download/v0.11.5/mydumper_0.11.5-1.$(lsb_release -cs)_amd64.deb
4dpkg -i mydumper_0.11.5-1.$(lsb_release -cs)_amd64.deb
- 备份
1nohup mydumper -h '备份数据库' \
2-u '用户名' \
3-p '密码' \
4--threads=16 \
5-B 备份数据库 \
6-v 3 \
7--outputdir=./backup --rows=100000 \
8-L mydumper-logs.log &
迁移数据库
- 还原数据
1nohup myloader -h '迁移数据库' \
2-u '用户名' \
3-p '密码' \
4--directory=./backup \
5-s 来源数据库 \
6-B 还原数据库 \
7-t 16 \
8-v 3 \
9-e 2>myloader-logs.log &
mydumper/myloader 参数
- mydumper
1Usage:
2 mydumper [OPTION...] multi-threaded MySQL dumping
3
4Help Options:
5 -?, --help Show help options
6
7Application Options:
8 -B, --database 需要备份的数据库,一个数据库一条命令备份,要不就是备份所有数据库,包括mysql。
9 -T, --tables-list 需要备份的表,用逗号分隔。
10 -o, --outputdir 备份文件目录
11 -s, --statement-size 生成插入语句的字节数,默认1000000,这个参数不能太小,不然会报 Row bigger than statement_size for tools.t_serverinfo
12 -r, --rows 试图用行块来分割表,该参数关闭--chunk-filesize
13 -F, --chunk-filesize 行块分割表的文件大小,单位是MB
14 -c, --compress 压缩输出文件
15 -e, --build-empty-files 即使表没有数据,也产生一个空文件
16 -x, --regex 正则表达式匹配,如'db.table'
17 -i, --ignore-engines 忽略的存储引擎,用逗号分隔
18 -m, --no-schemas 不导出表结构
19 -d, --no-data 不导出表数据
20 -G, --triggers 导出触发器
21 -E, --events 导出事件
22 -R, --routines 导出存储过程
23 -k, --no-locks 不执行共享读锁 警告:这将导致不一致的备份
24 --less-locking 减到最小的锁在innodb表上.
25 -l, --long-query-guard 设置长查询时间,默认60秒,超过该时间则会报错:There are queries in PROCESSLIST running longer than 60s, aborting dump
26 -K, --kill-long-queries kill掉长时间执行的查询,备份报错:Lock wait timeout exceeded; try restarting transaction
27 -D, --daemon 启用守护进程模式
28 -I, --snapshot-interval dump快照间隔时间,默认60s,需要在daemon模式下
29 -L, --logfile 使用日志文件,默认标准输出到终端
30 --tz-utc 备份的时候允许备份Timestamp,这样会导致不同时区的备份还原会出问题,默认关闭,参数:--skip-tz-utc to disable.
31 --skip-tz-utc
32 --use-savepoints 使用savepoints来减少采集metadata所造成的锁时间,需要SUPER权限
33 --success-on-1146 Not increment error count and Warning instead of Critical in case of table doesn't exist
34 --lock-all-tables 锁全表,代替FLUSH TABLE WITH READ LOCK
35 -U, --updated-since Use Update_time to dump only tables updated in the last U days
36 --trx-consistency-only Transactional consistency only
37 -h, --host The host to connect to
38 -u, --user Username with privileges to run the dump
39 -p, --password User password
40 -P, --port TCP/IP port to connect to
41 -S, --socket UNIX domain socket file to use for connection
42 -t, --threads 备份执行的线程数,默认4个线程
43 -C, --compress-protocol 在mysql连接上使用压缩协议
44 -V, --version Show the program version and exit
45 -v, --verbose 更多输出, 0 = silent, 1 = errors, 2 = warnings, 3 = info, default 2
- myloader
1Usage:
2 myloader [OPTION...] multi-threaded MySQL loader
3
4Help Options:
5 -?, --help Show help options
6
7Application Options:
8 -d, --directory 备份文件所在的目录
9 -q, --queries-per-transaction 每个事务的query数量, 默认1000
10 -o, --overwrite-tables 如果表存在则先删除,使用该参数,需要备份时候要备份表结构,不然还原会找不到表
11 -B, --database 指定需要还原的数据库
12 -s, --source-db 还原的数据库
13 -e, --enable-binlog 启用二进制日志恢复数据
14 -h, --host The host to connect to
15 -u, --user Username with privileges to run the dump
16 -p, --password User password
17 -P, --port TCP/IP port to connect to
18 -S, --socket UNIX domain socket file to use for connection
19 -t, --threads 使用的线程数量,默认4
20 -C, --compress-protocol 连接上使用压缩协议
21 -V, --version Show the program version and exit
22 -v, --verbose 更多输出, 0 = silent, 1 = errors, 2 = warnings, 3 = info, default 2