database - 当表仍在接收插入时,使用 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
推荐阅读
- image-size - 如何在大卡特尔 Luna 主题中将产品图像大小从正方形更改为矩形
- javascript - 如何使用 require 而不是 import,同时仍然能够访问变量的属性?
- python - python中的平均距离函数
- react-native - 奖励广告结束时是否可以显示警报或查看?(上面的奖励广告)
- python - 如何转向改进我的硬编码函数,以便它可以轻松更改
- programming-languages - 什么编程语言使用'..'来表示范围
- javascript - 为什么 Array.find() 会产生这个结果?
- parsing - 如何在 LALR(1) 解析器中处理运算符优先级
- algorithm - 数组的排列
- sql - 如何在sql中将多个数字列四舍五入为2位?