当此工作负载(来自 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