当表仍在接收插入时,将 pg_dump/ysql_dump 与 YugabyteDB 一起使用以导出数据的推荐方法是什么?



当此工作负载(来自 https://github.com/YugaByte/yb-sample-apps/的 SqlSecondaryIndex 工作负载(仍在运行时

% java -jar yb-sample-apps.jar --workload SqlSecondaryIndex --nodes
127.0.0.1:5433 --num_threads_read 4 --num_threads_write 2

尝试使用 ysql_dump 导出表会导致"查询错误:需要重新启动读取"错误。

$ ./ysql_dump -h 127.0.0.1 -d postgres --data-only --table sqlsecondaryindex  -f out.txt
ysql_dump: Dumping the contents of table "sqlsecondaryindex" failed: PQgetResult() failed.
ysql_dump: Error message from server: ERROR:  Query error: Restart read required at: { read: { physical: 1592265362684030 } local_limit: { physical: 1592265375906038 } global_limit: <min> in_txn_limit: <max> serial_no: 0 }

但是,如果在工作负载停止时执行相同的命令,则ysql_dump命令将成功完成,没有任何问题。这是预期行为吗?

要针对一致的快照进行读取并避免遇到"读取重新启动"错误,请将--serializable-deferrable选项传递给ysql_dump。例如:

~/tserver/postgres/bin/ysql_dump -h 127.0.0.1 -d postgres 
--data-only --table sqlsecondaryindex 
--serializable-deferrable -f data1.csv

相关内容

  • 没有找到相关文章

最新更新