Каков рекомендуемый способ использования pg_dump/ysql_dump с YugabyteDB для экспорта данных, когда таблица все еще получает вставки?

Когда эта рабочая нагрузка (рабочая нагрузка SqlSecondaryIndex из https://github.com/YugaByte/yb-sample-apps/) все еще работает

% 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 завершается успешно без каких-либо проблем. Это ожидаемое поведение?


person Ricardo Adam    schedule 30.06.2020    source источник


Ответы (1)


Чтобы выполнить чтение из согласованного моментального снимка и избежать ошибки перезапуска чтения, передайте параметр --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
person Kannan Muthukkaruppan    schedule 01.07.2020