TiDB 2.1 备份恢复与迁移
备份
https://pingcap.com/docs-cn/v2.1/how-to/maintain/backup-and-restore/
使用 mydumper 备份
mydumper:
https://github.com/maxbube/mydumper/releases
1
| mydumper -h 127.0.0.1 -P 4000 -u root -t 32 -F 64 -B test -T t1,t2 --skip-tz-utc -o ./var/test
|
我们使用 -B test
表明是对 test 这个 database 操作,然后用 -T t1,t2
表明只导出 t1,t2 两张表。
-t 32
表明使用 32 个线程去导出数据。-F 64 是将实际的 table 切分成多大的 chunk,这里就是 64MB 一个 chunk。
--skip-tz-utc
添加这个参数忽略掉 TiDB 与导数据的机器之间时区设置不一致的情况,禁止自动转换。
字符集转换
目前 TiDB 支持 UTF8mb4 字符编码,假设 Mydumper 导出数据为 latin1 字符编码,请使用
1
2
3
| iconv -f latin1 -t utf-8 $file -o /data/imdbload/$basename
# iconv -f latin1 -t utf-8 iot_env_data.t_env_data_vehicle-schema.sql -o /data1/iot_mysql_2_tidb/iot_env_data-by-mydump--utf8/iot_env_data.t_env_data_vehicle-schema.sql
|
恢复
修改 tidb gc 时间
1
2
3
4
5
6
7
8
9
| SELECT * FROM mysql.tidb WHERE VARIABLE_NAME = 'tikv_gc_life_time';
-- +-----------------------+----------------------------------+
-- | VARIABLE_NAME | VARIABLE_VALUE |
-- +-----------------------+----------------------------------+
-- | tikv_gc_life_time | 10m0s |
-- +-----------------------+----------------------------------+
-- 1 rows in set (0.02 sec)
update mysql.tidb set VARIABLE_VALUE = '720h' where VARIABLE_NAME = 'tikv_gc_life_time';
|
导入 文件
1
| loader -h 127.0.0.1 -u root -P 4000 -t 32 -d ./var/test
|
还原 tidb gc 时间
1
| update mysql.tidb set VARIABLE_VALUE = '10m' where VARIABLE_NAME = 'tikv_gc_life_time';
|