将阿里云的tidb数据同步到本地tidb

loader 也是运行在自己虚拟中的么,因为 loader 要执行并发导入的话,会要去解析 sql 文件,这个步骤会比较占用 CPU。

你这边部署本地 TiDB 用的拓扑以及机器配置是怎么样的?

机器配置不咋滴,是不是loader最好重新运行一台虚拟机比较好

嗯,可以考虑新开一台虚拟机运行 loader,排除 loader 对集群负载的影响

我想请教下,用mydumper将数据库的表和库以及数据备份到一个文件夹下,loader导入的那边这个库表已经存在了,但是是个空表,他会报一个库已存在,就不往下执行了,能不能在库表存在的情况下,直接往里面插入数据,跳过创建库和创建表的这个步骤呢

当前 loader 导入时确实时需要检查建库或者建表语句,可以手动更改为create table if not exist 或者 load data 是否能够满足需求?

mydumper备份30亿数据中的4亿数据报 GC life time is shorter than transaction duration, transaction starts at 2020-04-02 我看网上解决方案是update mysql.tidb set variable_value=‘30m’ where variable_name=‘tikv_gc_life_time’; 这样会对我们现在的生产库以及现在生产库的数据有影响吗

您好: 会有一些影响,参考下https://pingcap.com/docs-cn/stable/reference/garbage-collection/configuration/

那我在执行mydumper执行完成后将这个参数在改回来,这样的话就没什么问题了吧, 另外数据会不会丢失以及新增的数据会不会进来,这些有没有影响,我主要就是备份一部分数据。就怕对现在生产库造成影响,那麻烦就大了

  1. 改回来之后,可能下一次gc的数据量比较大,一般没有什么影响.
  2. 如果担心对生产有影响,建议在业务低峰期进行.

目前是30m0s,改成30m就可以了吗, 现在库中30亿数据

还有我想问下mydumper后面的-w 筛选条件如果我想加多个条件怎么写,我现在加了一个-w customer=1,如果加2个条件怎么加,比如再加一个time<‘2020-4-1’,是不是 -w customer=1,time<‘2020-4-1’

  1. 当前是30m,你改为30m和原来是一样的,按照你说的4亿 ,那要* 8了,需要 30 * 8 =240m
  2. -w 和where条件一样,这里写and就行了

这块我-w 的时候这块不生效还报错了

-w 的时候两个条件就不生效了,加and也不行,他只执行第一个条件

  1.你单独这样写create_time可以导出吗?
  1. 把create_time换为一个其他列的int或者varchar试一下 ,这样的两列是否可以

  2. 你是哪个版本? 建表语句发我, 给几个insert的记录,我测试一下,多谢

我刚才测了一下,好像只能执行一个,而且必须是等号,大于或者小于就不行了,两个或多个条件也不行,我换成其他的int也不行,两个int执行的时候只执行第一个条件 建表语句CREATE TABLE t_device_schedule ( device_id bigint(20) NOT NULL COMMENT ‘设备id’, index_id bigint(20) NULL DEFAULT NULL COMMENT ‘0’, warn_id bigint(20) NULL DEFAULT NULL COMMENT ‘0’, device_num varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT ‘0’, device_name varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT ‘0’, operating_frequency int(4) NULL DEFAULT NULL COMMENT ‘0’, latitude double(20, 6) NULL DEFAULT NULL COMMENT ‘精度’, longitude double(20, 6) NULL DEFAULT NULL COMMENT ‘纬度’, operation_area varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT ‘0’, customer_id bigint(20) NULL DEFAULT NULL COMMENT ‘客户id’, create_time datetime(0) NULL DEFAULT NULL COMMENT ‘创建时间’, result varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT ‘处理结果’ ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = ‘0’ ROW_FORMAT = Dynamic; 数据:INSERT INTO t_device_schedule VALUES (41414, 0, 1, ‘1’, ‘张三’, 15, NULL, NULL, NULL, 1, ‘2018-10-30 00:00:00’, ‘0’); INSERT INTO t_device_schedule VALUES (142124, 0, 2, ‘1’, ‘李四’, 5, NULL, NULL, NULL, 2, ‘2018-10-30 00:00:00’, ‘1’); INSERT INTO t_device_schedule VALUES (4322141, 0, 1, ‘3’, ‘张三’, 30, NULL, NULL, NULL, 3, ‘2018-10-30 00:00:00’, ‘2’); INSERT INTO t_device_schedule VALUES (42314124, 0, 1, ‘4’, ‘王五’, 30, NULL, NULL, NULL, 4, ‘2018-10-30 00:00:00’, ‘0’);

我是3.0.1版本的

线上的版本是2.0.9

稍等,我测试一下

您好:

   1.  在3.0.1我测试了,如果只写and是不行, 可以这样写 

/mydumper -h 172.16.5.xxx -u root -P xxxx -B ryl -T t_device_schedule -w warn_id=1 -w operating_frequency=30 --skip-tz-utc -o ./ryl

2. 或者这么写-w "warn_id=1 and  operating_frequency=30"  都可以