【 TiDB 使用环境`】测试环境
【 TiDB 版本】 5.4.0 3.0.3
【遇到的问题】
使用pt-archiver 3.3.1 迁移数据到TiDB 遇到下述报错:
DBD::mysql::st execute failed: LOAD DATA LOCAL INFILE file request rejected due to restrictions on access. [for Statement “LOAD DATA LOCAL INFILE ? INTO TABLE load_test
.employees
(emp_no
,birth_date
,first_name
,last_name
,gender
,hire_date
)” with ParamValues: 0=‘/tmp/4_PQCfSADupt-archiver’] at /usr/local/Cellar/percona-toolkit/3.3.1/libexec/bin/pt-archiver line 6876.
TiDB 用户:
其他我知道的设置:
【复现路径】
pt 语句:
pt-archiver --source u=root,h=host,P=3306,D=employees,t=employees --dest h=host,P=4000,u=root,D=load_test,t=employees --no-check-charset --where “1=1” --progress=500 --txn-size=1000 --limit=500 --statistics --no-delete --ask-pass --bulk-insert
【问题现象及影响】
使用参数 --bulk-insert 出现这个错误,去掉此参数可以正常一条一条insert,但是很慢.
测试了5.4.0 和 3.0.3 都是相同情况
【附件】
若提问为性能优化、故障排查 类问题,请下载脚本 运行。终端输出的打印结果,请务必全选 并复制粘贴上传。
谢谢回复,我加了 --no-version-check 还是相同的报错,我看别人是可以用的,可能是我的TiDB设置哪里不对MySQL数据归档至TiDB
我刚才把TiDB 的sql mode (global & session) 改成和MySQL一致的了,还是相同的报错
mysql> show variables like 'sql_mode';
±--------------±-----------------------+
| Variable_name | Value |
±--------------±-----------------------+
| sql_mode | NO_ENGINE_SUBSTITUTION |
±--------------±-----------------------+
1 row in set (0.01 sec)
重新试了一下并且开启了general log.
另外我自己在TiDB server放文件手动 LOAD DATA LOCAL INFILE 是可以成功的。。
[2022/04/08 06:05:59.561 +00:00] [INFO] [session.go:1867] [GENERAL_LOG] [conn=20] [user=root@10.28.101.45] [schemaVersion=24] [txnStartTS=0] [current_db=load_test] [sql=“LOAD DATA LOCAL INFILE ‘/tmp/0Lbw2phsBypt-archiver’ INTO TABLE load_test
.employees
(emp_no
,birth_date
,first_name
,last_name
,gender
,hire_date
)”]
这里的’/tmp/0Lbw2phsBypt-archiver’ 和pt archiver的报错应该是一样的,但是现实的是 INFO不是ERROR…
谢谢兄弟们,我发现应该是 /tmp 的问题,pt-archiver需要写临时文件做bulk insert的前提准备,我换了一个跑pt的机器就好了…
system
(system)
关闭
2022 年8 月 4 日 07:02
9
该主题在最后一个回复创建后60天后自动关闭。不再允许新的回复。