本地SurrealDB向远程VM迁移时导入超时及400错误排查
SurrealDB本地到远程VM迁移失败排查与解决
问题根源
核心原因是导出的export.sql文件体积超过了SurrealDB服务端默认的请求负载上限:
- Postman直接粘贴SQL内容返回413错误,明确提示请求payload过大
- 本地导入超时、远程返回400,都是大文件传输时的连锁反应:要么服务端因负载超限提前截断请求返回400,要么跨网络传输大文件耗时过长导致本地超时
解决步骤
1. 调整远程服务的请求负载限制
启动远程SurrealDB实例时,通过--http-max-body参数设置更大的允许负载值(单位为字节,示例设置为100MB):
surreal start --log debug --user root --pass root --http-max-body 104857600
根据你的export.sql实际大小调整参数值,比如200MB对应209715200。
2. 分批次导出/导入(针对超大文件)
如果SQL文件体积特别大,拆分文件能降低单请求负载:
- 按表单独导出:
# 导出users表 surreal export -c http://127.0.0.1:8000 -u root -p root --ns myNamespace --db myDB --table users users.sql # 导出orders表 surreal export -c http://127.0.0.1:8000 -u root -p root --ns myNamespace --db myDB --table orders orders.sql
- 逐个导入拆分后的文件:
surreal import -c http://123.456.789.012:8000 -u root -p root --ns myNamespace --db myDB users.sql surreal import -c http://123.456.789.012:8000 -u root -p root --ns myNamespace --db myDB orders.sql
3. 本地导入优化(避免跨网络传输大文件)
先把export.sql传到远程VM本地,再执行本地导入,彻底规避网络传输问题:
# 本地将文件上传到远程VM scp export.sql your_vm_user@123.456.789.012:/tmp/ # 登录远程VM,执行本地导入 surreal import -c http://127.0.0.1:8000 -u root -p root --ns myNamespace --db myDB /tmp/export.sql
内容的提问来源于stack exchange,提问作者nopassport1
相关产品推荐
相关产品推荐

